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:
versionedComponentId
associates a specific version with the component idcomponentName
is the human-readable name of the componentcomponentSize
is the WASM binary's size in bytesmetadata
contains information extracted from the WASM itselfmetadata.exports
is a list of exported functions, including their parameter's and return value's typesmetadata.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
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-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
Path | Method | Protected |
---|---|---|
/v1/components/{component_id}/updates | POST | Yes |
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
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-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
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"} |