Get one action's schema, narrowed
ONE action's input/output schema — the unit a caller configuring a step actually needs. Fetching the whole piece to configure one step costs 13 KB on http and 18 KB on imap, most of it describing operations you are not using.
NARROWING IS ARBITRARY field=value PAIRS, NOT A FIXED ?operation=. Every query key that is not the reserved view is read as a value for the schema's OWN property of that name, and properties whose display conditions that value rules out are dropped. Example: GET /api/pieces/http/actions/send_request?auth_type=BASIC&body_type=json. There is deliberately no ?operation= parameter: only 17 of the 61 shipped operations gate on a field literally called operation; others gate on mode, auth_type, algorithm, body_type, criteria, frequency or response_type, and http.send_request — the biggest action — has no field called operation at all. Get the legal gate fields and their values from GET /api/pieces/{id}?view=summary (discriminators), or from unresolved in this response. A contains_any gate accepts a comma-separated list as its value.
ABSENT IS NOT FALSE. A property whose gate you did not supply is KEPT, listed in conditionalFields, and removed from required — because telling a caller to fill a field that may not apply is the failure this projection exists to prevent. Supply more gates to resolve them. Measured on http.send_request: auth_password is not required unfiltered, and becomes required (with the bearer field gone) under ?auth_type=BASIC.
READ THE THREE BOOKKEEPING FIELDS. filteredBy echoes only the parameters that ACTUALLY gated something. ignored names query keys that gate nothing here — a misspelling (?bodyType= for body_type=) lands there instead of silently doing nothing. unresolved names the gates the surviving fields still depend on: the parameters worth adding to narrow further. dynamicFields names properties whose legal values are not in this schema at all and must be fetched from POST /api/pieces/{id}/actions/{actionId}/options/{propertyName}.
Filtering is TOP LEVEL only — nested properties and array items are never filtered.
Step configuration built from this schema goes in the step's config object (NOT settings).
Authorization
bearerAuth 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
Piece id (the step's pieceId).
Action id (the step's actionId). A wrong id returns 404 with a message naming every action this piece has.
Query Parameters
Reserved key. It is NOT interpreted as a gate value and currently selects nothing on this endpoint — sending it changes the response only by keeping it out of ignored.
FREE-FORM PARAMETER SET — the parameter NAMES are the schema's own property names, and gateValues is never sent literally. Send e.g. ?auth_type=BASIC&body_type=json. Values are always text; booleans (true/false) and numbers are coerced to the declared property type before comparison. Every key that gates nothing is reported back in ignored.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/pieces/http/actions/send_request?auth_type=BASIC&body_type=json"{ "data": { "pieceId": "string", "pieceVersion": "string", "id": "string", "name": "string", "description": "string", "sideEffects": "pure", "inputSchema": { "type": "string", "properties": { "property1": { "type": "string", "description": "string", "default": null, "enum": [ "string" ], "enumLabels": { "property1": "string", "property2": "string" }, "format": "string", "properties": { "property1": {}, "property2": {} }, "items": {}, "propertyType": "string", "required": true, "minLength": 0, "maxLength": 0, "min": 0, "max": 0, "pattern": "string", "refreshers": [ "string" ], "language": "string", "displayConditions": [ { "field": "string", "operator": "eq", "value": null, "values": [ null ] } ] }, "property2": { "type": "string", "description": "string", "default": null, "enum": [ "string" ], "enumLabels": { "property1": "string", "property2": "string" }, "format": "string", "properties": { "property1": {}, "property2": {} }, "items": {}, "propertyType": "string", "required": true, "minLength": 0, "maxLength": 0, "min": 0, "max": 0, "pattern": "string", "refreshers": [ "string" ], "language": "string", "displayConditions": [ { "field": "string", "operator": "eq", "value": null, "values": [ null ] } ] } }, "required": [ "string" ] }, "outputSchema": { "type": "string", "properties": { "property1": { "type": "string", "description": "string", "default": null, "enum": [ "string" ], "enumLabels": { "property1": "string", "property2": "string" }, "format": "string", "properties": { "property1": {}, "property2": {} }, "items": {}, "propertyType": "string", "required": true, "minLength": 0, "maxLength": 0, "min": 0, "max": 0, "pattern": "string", "refreshers": [ "string" ], "language": "string", "displayConditions": [ { "field": "string", "operator": "eq", "value": null, "values": [ null ] } ] }, "property2": { "type": "string", "description": "string", "default": null, "enum": [ "string" ], "enumLabels": { "property1": "string", "property2": "string" }, "format": "string", "properties": { "property1": {}, "property2": {} }, "items": {}, "propertyType": "string", "required": true, "minLength": 0, "maxLength": 0, "min": 0, "max": 0, "pattern": "string", "refreshers": [ "string" ], "language": "string", "displayConditions": [ { "field": "string", "operator": "eq", "value": null, "values": [ null ] } ] } }, "required": [ "string" ] }, "sampleData": {}, "filteredBy": { "property1": "string", "property2": "string" }, "ignored": [ "string" ], "unresolved": [ "string" ], "conditionalFields": [ "string" ], "dynamicFields": [ "string" ] }}