Welcome to the new Golem Cloud Docs! 👋
Documentation
Component

Component API

Get the metadata for all component versions

PathMethodProtected
/v1/components/{component_id}GETYes

Each component can have multiple versions. Every time a new WASM is uploaded for a given component id, that creates a new version. This endpoint returns a list of all versions for the component id provided as part of the URL. Each element of the response describes a single version of a component, but does not contain the binary (WASM) itself:

  • versionedComponentId associates a specific version with the component id
  • componentName is the human-readable name of the component
  • componentSize is the WASM binary's size in bytes
  • metadata contains information extracted from the WASM itself
  • metadata.exports is a list of exported functions, including their parameter's and return value's types
  • metadata.producers is a list of producer information added by tooling, each consisting of a list of fields associating one or more values to a given key. This contains information about what compilers and other WASM related tools were used to construct the Golem component.

Example Response JSON

[
  {
    "versionedComponentId": {
      "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
      "version": 0
    },
    "componentName": "string",
    "componentSize": 0,
    "metadata": {
      "exports": [
        {
          "type": "Function",
          "name": "string",
          "parameters": [
            {
              "name": "string",
              "typ": {
                "type": "Variant",
                "cases": [
                  {
                    "name": "string",
                    "typ": {}
                  }
                ]
              }
            }
          ],
          "results": [
            {
              "name": "string",
              "typ": {
                "type": "Variant",
                "cases": [
                  {
                    "name": "string",
                    "typ": {}
                  }
                ]
              }
            }
          ]
        }
      ],
      "producers": [
        {
          "fields": [
            {
              "name": "string",
              "values": [
                {
                  "name": "string",
                  "version": "string"
                }
              ]
            }
          ]
        }
      ],
      "memories": [
        {
          "initial": 0,
          "maximum": 0
        }
      ]
    },
    "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
    "createdAt": "2019-08-24T14:15:22Z",
    "componentType": "Durable",
    "files": [
      {
        "key": "string",
        "path": "string",
        "permissions": "read-only"
      }
    ],
    "installedPlugins": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "name": "string",
        "version": "string",
        "priority": 0,
        "parameters": {
          "property1": "string",
          "property2": "string"
        }
      }
    ]
  }
]

Update a component

PathMethodProtected
/v1/components/{component_id}/uploadPUTYes

Query Parameters

NameTypeRequiredDescription
component_type#/components/schemas/ComponentTypeNoType of the new version of the component - if not specified, the type of the previous version

is used.

Request Body: WASM Binary File

Make sure to include Content-Type: application/octet-stream Header

Example Response JSON

{
  "versionedComponentId": {
    "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
    "version": 0
  },
  "componentName": "string",
  "componentSize": 0,
  "metadata": {
    "exports": [
      {
        "type": "Function",
        "name": "string",
        "parameters": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ],
        "results": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ]
      }
    ],
    "producers": [
      {
        "fields": [
          {
            "name": "string",
            "values": [
              {
                "name": "string",
                "version": "string"
              }
            ]
          }
        ]
      }
    ],
    "memories": [
      {
        "initial": 0,
        "maximum": 0
      }
    ]
  },
  "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
  "createdAt": "2019-08-24T14:15:22Z",
  "componentType": "Durable",
  "files": [
    {
      "key": "string",
      "path": "string",
      "permissions": "read-only"
    }
  ],
  "installedPlugins": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "version": "string",
      "priority": 0,
      "parameters": {
        "property1": "string",
        "property2": "string"
      }
    }
  ]
}

Update a component

PathMethodProtected
/v1/components/{component_id}/updatesPOSTYes

Request Form: multipart/form-data

Make sure to include Content-Type: multipart/form-data Header

Field componentType: JSON

"Durable"

Field component: string binary

Field filesPermissions: JSON

{
  "values": [
    {
      "path": "string",
      "permissions": "read-only"
    }
  ]
}

Field files: string binary

Example Response JSON

{
  "versionedComponentId": {
    "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
    "version": 0
  },
  "componentName": "string",
  "componentSize": 0,
  "metadata": {
    "exports": [
      {
        "type": "Function",
        "name": "string",
        "parameters": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ],
        "results": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ]
      }
    ],
    "producers": [
      {
        "fields": [
          {
            "name": "string",
            "values": [
              {
                "name": "string",
                "version": "string"
              }
            ]
          }
        ]
      }
    ],
    "memories": [
      {
        "initial": 0,
        "maximum": 0
      }
    ]
  },
  "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
  "createdAt": "2019-08-24T14:15:22Z",
  "componentType": "Durable",
  "files": [
    {
      "key": "string",
      "path": "string",
      "permissions": "read-only"
    }
  ],
  "installedPlugins": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "version": "string",
      "priority": 0,
      "parameters": {
        "property1": "string",
        "property2": "string"
      }
    }
  ]
}

Get all components

PathMethodProtected
/v1/componentsGETYes

Gets all components, optionally filtered by project and/or component name.

Query Parameters

NameTypeRequiredDescription
project-idstringNoProject ID to filter by
component-namestringNoComponent name to filter by

Example Response JSON

[
  {
    "versionedComponentId": {
      "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
      "version": 0
    },
    "componentName": "string",
    "componentSize": 0,
    "metadata": {
      "exports": [
        {
          "type": "Function",
          "name": "string",
          "parameters": [
            {
              "name": "string",
              "typ": {
                "type": "Variant",
                "cases": [
                  {
                    "name": "string",
                    "typ": {}
                  }
                ]
              }
            }
          ],
          "results": [
            {
              "name": "string",
              "typ": {
                "type": "Variant",
                "cases": [
                  {
                    "name": "string",
                    "typ": {}
                  }
                ]
              }
            }
          ]
        }
      ],
      "producers": [
        {
          "fields": [
            {
              "name": "string",
              "values": [
                {
                  "name": "string",
                  "version": "string"
                }
              ]
            }
          ]
        }
      ],
      "memories": [
        {
          "initial": 0,
          "maximum": 0
        }
      ]
    },
    "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
    "createdAt": "2019-08-24T14:15:22Z",
    "componentType": "Durable",
    "files": [
      {
        "key": "string",
        "path": "string",
        "permissions": "read-only"
      }
    ],
    "installedPlugins": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "name": "string",
        "version": "string",
        "priority": 0,
        "parameters": {
          "property1": "string",
          "property2": "string"
        }
      }
    ]
  }
]

Create a new component

PathMethodProtected
/v1/componentsPOSTYes

The request body is encoded as multipart/form-data containing metadata and the WASM binary. If the component type is not specified, it will be considered as a Durable component.

Request Form: multipart/form-data

Make sure to include Content-Type: multipart/form-data Header

Field query: JSON

{
  "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
  "componentName": "string"
}

Field component: string binary

Field componentType: JSON

"Durable"

Field filesPermissions: JSON

{
  "values": [
    {
      "path": "string",
      "permissions": "read-only"
    }
  ]
}

Field files: string binary

Example Response JSON

{
  "versionedComponentId": {
    "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
    "version": 0
  },
  "componentName": "string",
  "componentSize": 0,
  "metadata": {
    "exports": [
      {
        "type": "Function",
        "name": "string",
        "parameters": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ],
        "results": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ]
      }
    ],
    "producers": [
      {
        "fields": [
          {
            "name": "string",
            "values": [
              {
                "name": "string",
                "version": "string"
              }
            ]
          }
        ]
      }
    ],
    "memories": [
      {
        "initial": 0,
        "maximum": 0
      }
    ]
  },
  "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
  "createdAt": "2019-08-24T14:15:22Z",
  "componentType": "Durable",
  "files": [
    {
      "key": "string",
      "path": "string",
      "permissions": "read-only"
    }
  ],
  "installedPlugins": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "version": "string",
      "priority": 0,
      "parameters": {
        "property1": "string",
        "property2": "string"
      }
    }
  ]
}

Download a component

PathMethodProtected
/v1/components/{component_id}/downloadGETYes

Downloads a specific version of the component's WASM.

Query Parameters

NameTypeRequiredDescription
versionintegerNo-

Response Body: WASM Binary File

Get the version of a given component

PathMethodProtected
/v1/components/{component_id}/versions/{version}GETYes

Gets the version of a component.

Example Response JSON

{
  "versionedComponentId": {
    "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
    "version": 0
  },
  "componentName": "string",
  "componentSize": 0,
  "metadata": {
    "exports": [
      {
        "type": "Function",
        "name": "string",
        "parameters": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ],
        "results": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ]
      }
    ],
    "producers": [
      {
        "fields": [
          {
            "name": "string",
            "values": [
              {
                "name": "string",
                "version": "string"
              }
            ]
          }
        ]
      }
    ],
    "memories": [
      {
        "initial": 0,
        "maximum": 0
      }
    ]
  },
  "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
  "createdAt": "2019-08-24T14:15:22Z",
  "componentType": "Durable",
  "files": [
    {
      "key": "string",
      "path": "string",
      "permissions": "read-only"
    }
  ],
  "installedPlugins": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "version": "string",
      "priority": 0,
      "parameters": {
        "property1": "string",
        "property2": "string"
      }
    }
  ]
}

Get the latest version of a given component

PathMethodProtected
/v1/components/{component_id}/latestGETYes

Gets the latest version of a component.

Example Response JSON

{
  "versionedComponentId": {
    "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
    "version": 0
  },
  "componentName": "string",
  "componentSize": 0,
  "metadata": {
    "exports": [
      {
        "type": "Function",
        "name": "string",
        "parameters": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ],
        "results": [
          {
            "name": "string",
            "typ": {
              "type": "Variant",
              "cases": [
                {
                  "name": "string",
                  "typ": {}
                }
              ]
            }
          }
        ]
      }
    ],
    "producers": [
      {
        "fields": [
          {
            "name": "string",
            "values": [
              {
                "name": "string",
                "version": "string"
              }
            ]
          }
        ]
      }
    ],
    "memories": [
      {
        "initial": 0,
        "maximum": 0
      }
    ]
  },
  "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
  "createdAt": "2019-08-24T14:15:22Z",
  "componentType": "Durable",
  "files": [
    {
      "key": "string",
      "path": "string",
      "permissions": "read-only"
    }
  ],
  "installedPlugins": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "version": "string",
      "priority": 0,
      "parameters": {
        "property1": "string",
        "property2": "string"
      }
    }
  ]
}

Gets the list of plugins installed for the given component version

PathMethodProtected
/v1/components/{component_id}/versions/{version}/plugins/installsGETYes

Example Response JSON

[
  {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "name": "string",
    "version": "string",
    "priority": 0,
    "parameters": {
      "property1": "string",
      "property2": "string"
    }
  }
]

Installs a new plugin for this component

PathMethodProtected
/v1/components/{component_id}/latest/plugins/installsPOSTYes

Example Request JSON

{
  "name": "string",
  "version": "string",
  "priority": 0,
  "parameters": {
    "property1": "string",
    "property2": "string"
  }
}

Example Response JSON

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "string",
  "version": "string",
  "priority": 0,
  "parameters": {
    "property1": "string",
    "property2": "string"
  }
}

Updates the priority or parameters of a plugin installation

PathMethodProtected
/v1/components/{component_id}/versions/latest/plugins/installs/{installation_id}PUTYes

Example Request JSON

{
  "priority": 0,
  "parameters": {
    "property1": "string",
    "property2": "string"
  }
}

Example Response JSON

{}

Uninstalls a plugin from this component

PathMethodProtected
/v1/components/{component_id}/latest/plugins/installs/{installation_id}DELETEYes

Example Response JSON

{}

Component API Errors

Status CodeDescriptionBody
400Invalid request, returning with a list of issues detected in the request{"errors":["string"]}
401Unauthorized{"error":"string"}
403Maximum number of components exceeded{"error":"string"}
404Component not found{"error":"string"}
409Component already exists{"error":"string"}
500Internal server error{"error":"string"}