GoRunner

Resolve a property's dynamic sub-schema

Requires scope workflow:read
POST
/api/pieces/{id}/actions/{actionId}/properties/{propertyName}

Asks the piece to describe a property whose SHAPE is only known once other values are chosen — the fields returned here are not in the static schema at all.

POST rather than GET because the request carries the partially-filled step configuration (values) and, when the piece needs credentials, the connectionId to resolve them with. The API never decrypts the credential: the request is handed to a worker, which is why this fails with 503 when no worker is checked in.

Most pieces do not implement dynamic properties and answer 400 NOT_SUPPORTED. In the shipped 50-piece build the one real case is served by the API itself without touching a worker: pieceId=subflow, propertyName=input, which returns the Input shape the workflow named in values.workflow_id actually expects, pre-filled with that workflow's trigger sample and describing the {{trigger.*}} paths its steps read. Pass the target workflow's UUID in values.workflow_id; with it absent you get a placeholder description instead.

actionId is part of the route and is forwarded to the piece, but the subflow special case is keyed on the piece id and property name alone.

Send Content-Type: application/json — a different non-empty content type is refused with 415 INVALID_CONTENT_TYPE.

Requires workflow:read. Resolving a dynamic value is not a catalog read: it can return tenant data (the subflow piece's workflow_id option is this workspace's whole workflow list) and, when the request carries a connectionId, the credential is resolved and decrypted on a worker so the piece can call the third party.

Authorization

bearerAuth
AuthorizationBearer <token>

An API token: Authorization: Bearer grt_…. Mint one in the app under Settings → Workspace → API tokens; the raw value is shown once. Scopes confine the token — see x-permission on each operation.

In: header

Path Parameters

id*string

Piece id.

actionId*string

Action id the property belongs to.

propertyName*string

The property whose sub-schema is being resolved.

Request Body

application/json

The step configuration so far, plus the connection to resolve credentials with. An empty object is legal.

TypeScript Definitions

Use the request body type in TypeScript.

Context for resolving a property's dynamic sub-schema.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/pieces/subflow/actions/run_workflow/properties/input" \  -H "Content-Type: application/json" \  -d '{}'
{  "data": {    "properties": {      "property1": {        "type": "string",        "title": "string",        "description": "string",        "default": null,        "enum": [          "string"        ],        "enumLabels": {          "property1": "string",          "property2": "string"        },        "format": "string",        "properties": {          "property1": {},          "property2": {}        },        "items": {},        "propertyType": "string",        "placeholder": "string",        "group": "string",        "order": 0,        "required": true,        "minLength": 0,        "maxLength": 0,        "min": 0,        "max": 0,        "pattern": "string",        "refreshers": [          "string"        ],        "refreshOnSearch": true,        "expressionEnabled": true,        "language": "string",        "displayConditions": [          {            "field": "string",            "operator": "eq",            "value": null,            "values": [              null            ]          }        ]      },      "property2": {        "type": "string",        "title": "string",        "description": "string",        "default": null,        "enum": [          "string"        ],        "enumLabels": {          "property1": "string",          "property2": "string"        },        "format": "string",        "properties": {          "property1": {},          "property2": {}        },        "items": {},        "propertyType": "string",        "placeholder": "string",        "group": "string",        "order": 0,        "required": true,        "minLength": 0,        "maxLength": 0,        "min": 0,        "max": 0,        "pattern": "string",        "refreshers": [          "string"        ],        "refreshOnSearch": true,        "expressionEnabled": true,        "language": "string",        "displayConditions": [          {            "field": "string",            "operator": "eq",            "value": null,            "values": [              null            ]          }        ]      }    }  }}