Component API
Get the metadata for all component versions
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id} | GET | Yes |
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:
versionedComponentIdassociates a specific version with the component idcomponentNameis the human-readable name of the componentcomponentSizeis the WASM binary's size in bytesmetadatacontains information extracted from the WASM itselfmetadata.exportsis a list of exported functions, including their parameter's and return value's typesmetadata.producersis 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
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/upload | PUT | Yes |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| component_type | #/components/schemas/ComponentType | No | Type 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-streamHeader
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
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/updates | POST | Yes |
Request Form: multipart/form-data
Make sure to include
Content-Type: multipart/form-dataHeader
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
| Path | Method | Protected |
|---|---|---|
/v1/components | GET | Yes |
Gets all components, optionally filtered by project and/or component name.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| project-id | string | No | Project ID to filter by |
| component-name | string | No | Component 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
| Path | Method | Protected |
|---|---|---|
/v1/components | POST | Yes |
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-dataHeader
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
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/download | GET | Yes |
Downloads a specific version of the component's WASM.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| version | integer | No | - |
Response Body: WASM Binary File
Get the version of a given component
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/versions/{version} | GET | Yes |
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
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/latest | GET | Yes |
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
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/versions/{version}/plugins/installs | GET | Yes |
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
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/latest/plugins/installs | POST | Yes |
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
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/versions/latest/plugins/installs/{installation_id} | PUT | Yes |
Example Request JSON
{
"priority": 0,
"parameters": {
"property1": "string",
"property2": "string"
}
}Example Response JSON
{}Uninstalls a plugin from this component
| Path | Method | Protected |
|---|---|---|
/v1/components/{component_id}/latest/plugins/installs/{installation_id} | DELETE | Yes |
Example Response JSON
{}Component API Errors
| Status Code | Description | Body |
|---|---|---|
| 400 | Invalid request, returning with a list of issues detected in the request | {"errors":["string"]} |
| 401 | Unauthorized | {"error":"string"} |
| 403 | Maximum number of components exceeded | {"error":"string"} |
| 404 | Component not found | {"error":"string"} |
| 409 | Component already exists | {"error":"string"} |
| 500 | Internal server error | {"error":"string"} |