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"
  }
]

Update a component

PathMethodProtected
/v1/components/{component_id}/uploadPUTYes

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"
}

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"
  }
]

Create a new component

PathMethodProtected
/v1/componentsPOSTYes

The request body is encoded as multipart/form-data containing metadata and the WASM binary.

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

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"
}

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"
}

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"
}

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"}