listWorkflows
List the organization's workflow automations (paginated, non-archived by default).
List the organization's workflow automations (paginated, non-archived by default). Returns the group id to use in getWorkflow and the other workflow operations. status, domain, name (a name search, any case) and triggerType (on a version of that status; hidden groups included) narrow rows and total. For a workflow the person named, pass their words as name and compare each row's name for the exact one, reading every page total counts before calling one row the only exact match (names are not unique). Each row carries channelsAcrossVersions: the channels the workflow messages on (TEXT, EMAIL, both, or [] when it messages nobody; never null), the same answer the app's Channel filter gives, so read it to PICK workflows out of a list. It spans EVERY version not deleted: the published one, the ones it superseded and an unpublished draft. getWorkflow.channels reads ONE: the most recently PUBLISHED version whatever its status (active, paused or suspended), else the pending draft. NEITHER says it is SENDING: a paused or suspended head keeps its configured channels while sending nothing. Read status for that.
curl https://server.goliathdata.com/api/v1/call \
-H "Authorization: Bearer $GOLIATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operationId": "listWorkflows",
"variables": {}
}'import { GoliathClient } from '@goliath-data/sdk'
const goliath = new GoliathClient({
apiKey: process.env.GOLIATH_API_KEY!,
baseUrl: 'https://server.goliathdata.com',
})
const result = await goliath.workflows.listWorkflows({})const res = await fetch('https://server.goliathdata.com/api/v1/call', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.GOLIATH_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
operationId: 'listWorkflows',
variables: {}
}),
})
const { data, errors } = await res.json()limit is clamped to 50.
Variables
The example sends only what the schema requires. Some operations also need one of several optional variables (one filter or another, say); the description above says which.
Default 20.
Default 0.
Response
What comes back under data: a list shows as one entry, and a value as its type.
{
"data": {
"workflowAutomationsQuery": {
"workflowGroupsPage": {
"items": [
{
"id": "<ID>",
"name": "…",
"description": "…",
"status": "DRAFT",
"channelsAcrossVersions": [
"TEXT"
],
"workflowDomain": "PROPERTY",
"systemCategory": "…",
"folderId": "<ID>",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"archivedAt": "2026-01-01T00:00:00.000Z"
}
],
"total": 0
}
}
}
}Errors
unknown_variableA variable the operation does not declare. A typo is refused rather than silently dropped.
unauthorizedNo bearer header, or the key is invalid or revoked.
insufficient_scopeThe key lacks the scope the operation requires.
forbiddenA referenced record does not exist, was deleted, or is outside your organization. The gateway cannot tell those apart.
Behaviour
A read. It rejects an Idempotency-Key header with 400 bad_request.