GoliathDevelopersGet an API key
Reference/Workflowsgenerated from the gateway manifest

moveAndResumeParkedRuns

Restart the runs a publish paused on a workflow.

POST/api/v1/callWRITEidempotent · 24 hruns as the key's owner
View as Markdown

Restart the runs a publish paused on a workflow (getWorkflow runsParkedByPublish; mostly publishes before 2026-10-23, which paused everyone in flight): moves up to limit (at most 200) of them onto the live version, still paused, and once remaining is 0 resumes them all on the live version, so their messages go out again. A run on a step the live version no longer has is finished instead (completed). Call again while remaining is above 0, unless stuck: then those runs cannot be moved, so say how many and stop. Offer it only when the person asks about that workflow's paused runs, and say how many people will start getting messages again first. With no live version it does nothing and returns notLive: the workflow has to be turned back on first. A run whose contact replied while parked stays paused.

curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "operationId": "moveAndResumeParkedRuns",
    "variables": {
      "workflowGroupId": "<workflowGroupId>"
    }
  }'
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.moveAndResumeParkedRuns(
  {
    workflowGroupId: '<workflowGroupId>'
  },
  { idempotencyKey: crypto.randomUUID() },
)
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',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify({
    operationId: 'moveAndResumeParkedRuns',
    variables: {
      workflowGroupId: '<workflowGroupId>'
    }
  }),
})
const { data, errors } = await res.json()

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.

workflowGroupIdID!required
limitInt

Response

What comes back under data: a list shows as one entry, and a value as its type.

response shape
{
  "data": {
    "workflowAutomationsMutation": {
      "moveAndResumeParkedRuns": {
        "moved": 0,
        "completed": 0,
        "remaining": 0,
        "stuck": true,
        "notLive": true,
        "parkedCount": 0,
        "estimatedCount": 0,
        "bulkTaskId": "<ID>"
      }
    }
  }
}

Errors

Idempotency

Send an Idempotency-Key of 1 to 255 characters. A finished request retried with the same key replays its stored response, marked Idempotency-Replayed: true; one still in flight returns 409 idempotency_conflict. Keys expire after 24 hours. Write without fear →