Welcome to the new Golem Cloud Docs! 👋
Documentation
Worker

Worker API

Get metadata of multiple workers

PathMethodProtected
/v1/components/{component_id}/workersGETNo

Filters

PropertyComparatorDescriptionExample
nameStringFilterComparatorName of workername = worker-name
versionFilterComparatorVersion of workerversion >= 0
statusFilterComparatorStatus of workerstatus = Running
env.[key]StringFilterComparatorEnvironment variable of workerenv.var1 = value
createdAtFilterComparatorCreation time of workercreatedAt > 2024-04-01T12:10:00Z

Comparators

  • StringFilterComparator: eq|equal|=|==, ne|notequal|!=, like, notlike
  • FilterComparator: eq|equal|=|==, ne|notequal|!=, ge|greaterequal|>=, gt|greater|>, le|lessequal|<=, lt|less|<

Returns metadata about an existing component workers:

  • workers list of workers metadata
  • cursor cursor for next request, if cursor is empty/null, there are no other values

Query Parameters

NameTypeRequiredDescription
filterarrayNo-
cursorstringNo-
countintegerNo-
precisebooleanNo-

Example Response JSON

{
  "workers": [
    {
      "workerId": {
        "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
        "workerName": "string"
      },
      "args": ["string"],
      "env": {
        "property1": "string",
        "property2": "string"
      },
      "status": "Running",
      "componentVersion": 0,
      "retryCount": 0,
      "pendingInvocationCount": 0,
      "updates": [
        {
          "type": "pendingUpdate",
          "timestamp": "2019-08-24T14:15:22Z",
          "targetVersion": 0
        }
      ],
      "createdAt": "2019-08-24T14:15:22Z",
      "lastError": "string",
      "componentSize": 0,
      "totalLinearMemorySize": 0,
      "ownedResources": {
        "property1": {
          "createdAt": "2019-08-24T14:15:22Z",
          "indexed": {
            "resourceName": "string",
            "resourceParams": ["string"]
          }
        },
        "property2": {
          "createdAt": "2019-08-24T14:15:22Z",
          "indexed": {
            "resourceName": "string",
            "resourceParams": ["string"]
          }
        }
      },
      "activePlugins": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"]
    }
  ],
  "cursor": {
    "cursor": 0,
    "layer": 0
  }
}

Launch a new worker.

PathMethodProtected
/v1/components/{component_id}/workersPOSTNo

Creates a new worker. The worker initially is in `Idle`` status, waiting to be invoked.

The parameters in the request are the following:

  • name is the name of the created worker. This has to be unique, but only for a given component
  • args is a list of strings which appear as command line arguments for the worker
  • env is a list of key-value pairs (represented by arrays) which appear as environment variables for the worker

Example Request JSON

{
  "name": "string",
  "args": ["string"],
  "env": {
    "property1": "string",
    "property2": "string"
  }
}

Example Response JSON

{
  "workerId": {
    "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
    "workerName": "string"
  },
  "componentVersion": 0
}

Get metadata of a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}GETNo

Returns metadata about an existing worker:

  • workerId is a combination of the used component and the worker's user specified name
  • accountId the account the worker is created by
  • args is the provided command line arguments passed to the worker
  • env is the provided map of environment variables passed to the worker
  • componentVersion is the version of the component used by the worker
  • retryCount is the number of retries the worker did in case of a failure
  • status is the worker's current status, one of the following:
  • Running if the worker is currently executing
  • Idle if the worker is waiting for an invocation
  • Suspended if the worker was running but is now waiting to be resumed by an event (such as end of a sleep, a promise, etc)
  • Interrupted if the worker was interrupted by the user
  • Retrying if the worker failed, and an automatic retry was scheduled for it
  • Failed if the worker failed and there are no more retries scheduled for it
  • Exited if the worker explicitly exited using the exit WASI function

Example Response JSON

{
  "workerId": {
    "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
    "workerName": "string"
  },
  "args": ["string"],
  "env": {
    "property1": "string",
    "property2": "string"
  },
  "status": "Running",
  "componentVersion": 0,
  "retryCount": 0,
  "pendingInvocationCount": 0,
  "updates": [
    {
      "type": "pendingUpdate",
      "timestamp": "2019-08-24T14:15:22Z",
      "targetVersion": 0
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "lastError": "string",
  "componentSize": 0,
  "totalLinearMemorySize": 0,
  "ownedResources": {
    "property1": {
      "createdAt": "2019-08-24T14:15:22Z",
      "indexed": {
        "resourceName": "string",
        "resourceParams": ["string"]
      }
    },
    "property2": {
      "createdAt": "2019-08-24T14:15:22Z",
      "indexed": {
        "resourceName": "string",
        "resourceParams": ["string"]
      }
    }
  },
  "activePlugins": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"]
}

Delete a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}DELETENo

Interrupts and deletes an existing worker.

Example Response JSON

{}

Invoke a function and await its resolution on a new worker with a random generated name

PathMethodProtected
/v1/components/{component_id}/invoke-and-awaitPOSTNo

Ideal for invoking ephemeral components, but works with durable ones as well. Supply the parameters in the request body as JSON.

Query Parameters

NameTypeRequiredDescription
functionstringYes-

Example Request JSON

{
  "params": [
    {
      "typ": {
        "type": "Variant",
        "cases": [
          {
            "name": "string",
            "typ": {}
          }
        ]
      },
      "value": null
    }
  ]
}

Example Response JSON

{
  "result": {
    "typ": {
      "type": "Variant",
      "cases": [
        {
          "name": "string",
          "typ": {}
        }
      ]
    },
    "value": null
  }
}

Invoke a function and await its resolution

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/invoke-and-awaitPOSTNo

Supply the parameters in the request body as JSON.

Query Parameters

NameTypeRequiredDescription
functionstringYes-

Example Request JSON

{
  "params": [
    {
      "typ": {
        "type": "Variant",
        "cases": [
          {
            "name": "string",
            "typ": {}
          }
        ]
      },
      "value": null
    }
  ]
}

Example Response JSON

{
  "result": {
    "typ": {
      "type": "Variant",
      "cases": [
        {
          "name": "string",
          "typ": {}
        }
      ]
    },
    "value": null
  }
}

Invoke a function

PathMethodProtected
/v1/components/{component_id}/invokePOSTNo

Ideal for invoking ephemeral components, but works with durable ones as well. Triggers the execution of a function and immediately returns.

Query Parameters

NameTypeRequiredDescription
functionstringYes-

Example Request JSON

{
  "params": [
    {
      "typ": {
        "type": "Variant",
        "cases": [
          {
            "name": "string",
            "typ": {}
          }
        ]
      },
      "value": null
    }
  ]
}

Example Response JSON

{}

Invoke a function

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/invokePOSTNo

Triggers the execution of a function and immediately returns.

Query Parameters

NameTypeRequiredDescription
functionstringYes-

Example Request JSON

{
  "params": [
    {
      "typ": {
        "type": "Variant",
        "cases": [
          {
            "name": "string",
            "typ": {}
          }
        ]
      },
      "value": null
    }
  ]
}

Example Response JSON

{}

Complete a promise

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/completePOSTNo

Completes a promise with a given custom array of bytes. The promise must be previously created from within the worker, and it's identifier (a combination of a worker identifier and an oplogIdx ) must be sent out to an external caller so it can use this endpoint to mark the promise completed. The data field is sent back to the worker, and it has no predefined meaning.

Example Request JSON

{
  "oplogIdx": 0,
  "data": [0]
}

Example Response JSON

true

Interrupt a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/interruptPOSTNo

Interrupts the execution of a worker. The worker's status will be Interrupted unless the recover-immediately parameter was used, in which case it remains as it was. An interrupted worker can be still used, and it is going to be automatically resumed the first time it is used. For example in case of a new invocation, the previously interrupted invocation is continued before the new one gets processed.

Query Parameters

NameTypeRequiredDescription
recovery-immediatelybooleanNo-

Example Response JSON

{}

Advanced search for workers

PathMethodProtected
/v1/components/{component_id}/workers/findPOSTNo

Filter types

TypeComparatorDescriptionExample
NameStringFilterComparatorName of worker{ "type": "Name", "comparator": "Equal", "value": "worker-name" }
VersionFilterComparatorVersion of worker{ "type": "Version", "comparator": "GreaterEqual", "value": 0 }
StatusFilterComparatorStatus of worker{ "type": "Status", "comparator": "Equal", "value": "Running" }
EnvStringFilterComparatorEnvironment variable of worker{ "type": "Env", "name": "var1", "comparator": "Equal", "value": "value" }
CreatedAtFilterComparatorCreation time of worker{ "type": "CreatedAt", "comparator": "Greater", "value": "2024-04-01T12:10:00Z" }
AndAnd filter combinator{ "type": "And", "filters": [ ... ] }
OrOr filter combinator{ "type": "Or", "filters": [ ... ] }
NotNegates the specified filter{ "type": "Not", "filter": { "type": "Version", "comparator": "GreaterEqual", "value": 0 } }

Comparators

  • StringFilterComparator: Equal, NotEqual, Like, NotLike
  • FilterComparator: Equal, NotEqual, GreaterEqual, Greater, LessEqual, Less

Returns metadata about an existing component workers:

  • workers list of workers metadata
  • cursor cursor for next request, if cursor is empty/null, there are no other values

Example Request JSON

{
  "filter": {
    "type": "Name",
    "comparator": "Equal",
    "value": "string"
  },
  "cursor": {
    "cursor": 0,
    "layer": 0
  },
  "count": 0,
  "precise": true
}

Example Response JSON

{
  "workers": [
    {
      "workerId": {
        "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
        "workerName": "string"
      },
      "args": ["string"],
      "env": {
        "property1": "string",
        "property2": "string"
      },
      "status": "Running",
      "componentVersion": 0,
      "retryCount": 0,
      "pendingInvocationCount": 0,
      "updates": [
        {
          "type": "pendingUpdate",
          "timestamp": "2019-08-24T14:15:22Z",
          "targetVersion": 0
        }
      ],
      "createdAt": "2019-08-24T14:15:22Z",
      "lastError": "string",
      "componentSize": 0,
      "totalLinearMemorySize": 0,
      "ownedResources": {
        "property1": {
          "createdAt": "2019-08-24T14:15:22Z",
          "indexed": {
            "resourceName": "string",
            "resourceParams": ["string"]
          }
        },
        "property2": {
          "createdAt": "2019-08-24T14:15:22Z",
          "indexed": {
            "resourceName": "string",
            "resourceParams": ["string"]
          }
        }
      },
      "activePlugins": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"]
    }
  ],
  "cursor": {
    "cursor": 0,
    "layer": 0
  }
}

Resume a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/resumePOSTNo

Example Response JSON

{}

Update a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/updatePOSTNo

Example Request JSON

{
  "mode": "Automatic",
  "targetVersion": 0
}

Example Response JSON

{}

Get or search the oplog of a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/oplogGETNo

Query Parameters

NameTypeRequiredDescription
fromintegerNo-
countintegerYes-
cursor#/components/schemas/OplogCursorNo-
querystringNo-

Example Response JSON

{
  "entries": [
    {
      "oplogIndex": 0,
      "entry": {
        "type": "Create",
        "timestamp": "2019-08-24T14:15:22Z",
        "worker_id": {
          "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
          "workerName": "string"
        },
        "component_version": 0,
        "args": ["string"],
        "env": {
          "property1": "string",
          "property2": "string"
        },
        "account_id": "string",
        "parent": {
          "componentId": "616ccd92-d666-4180-8349-8d125b269fac",
          "workerName": "string"
        },
        "component_size": 0,
        "initial_total_linear_memory_size": 0,
        "initial_active_plugins": [
          {
            "installation_id": "91166175-c6a9-4caf-88e9-3147ffc9c934",
            "plugin_name": "string",
            "plugin_version": "string",
            "parameters": {
              "property1": "string",
              "property2": "string"
            }
          }
        ]
      }
    }
  ],
  "next": {
    "next_oplog_index": 0,
    "current_component_version": 0
  },
  "firstIndexInChunk": 0,
  "lastIndex": 0
}

List files in a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/files/{file_name}GETNo

Example Response JSON

{
  "nodes": [
    {
      "name": "string",
      "lastModified": 0,
      "kind": "directory",
      "permissions": "read-only",
      "size": 0
    }
  ]
}

Get contents of a file in a worker

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/file-contents/{file_name}GETNo

Response Body: WASM Binary File

Activate a plugin

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/activate-pluginPOSTNo

The plugin must be one of the installed plugins for the worker's current component version.

Query Parameters

NameTypeRequiredDescription
plugin-installation-idstringYes-

Example Response JSON

{}

Deactivate a plugin

PathMethodProtected
/v1/components/{component_id}/workers/{worker_name}/deactivate-pluginPOSTNo

The plugin must be one of the installed plugins for the worker's current component version.

Query Parameters

NameTypeRequiredDescription
plugin-installation-idstringYes-

Example Response JSON

{}

Worker API Errors

Status CodeDescriptionBody
400{"errors":["string"]}
401{"error":"string"}
403{"error":"string"}
404{"error":"string"}
409{"error":"string"}
500{"golemError":{"type":"InvalidRequest","details":"string"}}