Skip to content

Node catalog ​

Routes are relative to <PUBLIC_BASE_URL>; request and response bodies are JSON unless stated otherwise. Authentication, scopes, pagination and the error format are described in the REST API guides.

GET /api/v1/nodes ​

List the node types I may use

The node types allowed for the caller, after the organisation policy and the role: a node restricted to administrators disappears for an ordinary member. The catalogue itself ships with the client.

Access — Member session or API key with scope workflows:read.

Responses

200 — The allowed types.

FieldTypeRequired
typesstring[]yes
JSON Schema
json
{
  "type": "object",
  "properties": { "types": { "type": "array", "items": { "type": "string" } } },
  "required": [ "types" ],
  "additionalProperties": false
}

401 — No valid session or API key (auth.unauthenticated).

403 — Refused: insufficient role (auth.forbidden), missing scope (api_key.scope_missing, details.required names it) or a route closed to API keys (api_key.session_required).

429 — The API key exceeded its rate limit (api_key.rate_limited); Retry-After says when to retry.

GET /api/v1/nodes/resources/{resource} ​

Enumerate the values of a node resource

One route for every resourceLocator of the catalog (mail folders, signatures, members, Drive folders…), paginated by cursor and searchable with q. Some resources need a context: mailboxId or credentialId, else 400 resource.context_required; a context that is not the member’s is 404 resource.context_not_found. A remote provider that fails is 502 resource.unavailable, a temporary state worth retrying.

Access — Member session or API key with scope workflows:read.

Parameters

NameInTypeRequired
resourcepathstringyes
qquerystringno
cursorquerystringno
limitqueryintegerno
mailboxIdquerystringno
credentialIdquerystringno
parentIdquerystringno
parentIdsquerystring | string[]no

Responses

200 — A page of values.

FieldTypeRequired
itemsobject[]yes
nextCursorstring | nullyes
JSON Schema
json
{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": { "type": "string", "minLength": 1 },
          "label": { "type": "string" },
          "description": { "type": "string" }
        },
        "required": [ "id", "label" ],
        "additionalProperties": false
      }
    },
    "nextCursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }
  },
  "required": [ "items", "nextCursor" ],
  "additionalProperties": false
}

400 — The request does not match its schema.

401 — No valid session or API key (auth.unauthenticated).

403 — Refused: insufficient role (auth.forbidden), missing scope (api_key.scope_missing, details.required names it) or a route closed to API keys (api_key.session_required).

429 — The API key exceeded its rate limit (api_key.rate_limited); Retry-After says when to retry.

Error codes — request.bad_request, resource.unknown, resource.context_required, resource.context_not_found, resource.unavailable. The common codes (request.bad_request, auth.unauthenticated, api_key.scope_missing, api_key.rate_limited…) apply to every route; see Errors.