# listWorkflowRuns

List runs of one workflow version (by workflowAutomationId), optionally by run status (PENDING | RUNNING | COMPLETED | PAUSED | STOPPED | FAILED | NOT_ENROLLED). Run ids feed pauseWorkflowRun / resumeWorkflowRun / stopWorkflowRun. Report each run's reason rather than saying reasons are unavailable: a NOT_ENROLLED run was refused at the door and never entered, and its `stoppedReason` says why (a STOPPED run's says why it was withdrawn); a PAUSED run carries `pausedReason`, plus `sendFailureCode` (the carrier code, e.g. 30007) when a failed text paused it; a PENDING run whose next send waits carries `queuedSend.reason` (DAILY_CAP | SEND_WINDOW | WINDOW_LIMIT | OUT_OF_SMS_CREDITS, null when the wait has no nameable cause; current only on a PENDING run, so go by `pausedReason` on a PAUSED one) and `queuedSend.nextAttemptAt`. A FAILED run has no reason field and an older STOPPED run's `stoppedReason` can be null: say it is not recorded, never invent one. Reasons are raw codes.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "listWorkflowRuns", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no
- Result cap: `limit` is clamped to 34, without an error

## Variables

- `workflowAutomationId`: `ID!` (required)
- `statuses`: `[WorkflowAutomationRunStatus!]` (one of `PENDING`, `RUNNING`, `COMPLETED`, `PAUSED`, `STOPPED`, `FAILED`, `NOT_ENROLLED`)
- `limit`: `Int` (default `20`)
- `offset`: `Int` (default `0`)

## Response (data, an example)

```json
{
  "workflowAutomationsQuery": {
    "listWorkflowRuns": [
      {
        "id": "<ID>",
        "status": "PENDING",
        "dryRun": true,
        "createdAt": "2026-01-01T00:00:00.000Z",
        "updatedAt": "2026-01-01T00:00:00.000Z",
        "scheduledExecution": "2026-01-01T00:00:00.000Z",
        "stoppedReason": "…",
        "pausedReason": "…",
        "sendFailureCode": "…",
        "queuedSend": {
          "reason": "DAILY_CAP",
          "nextAttemptAt": "2026-01-01T00:00:00.000Z"
        },
        "contact": {
          "id": "<ID>",
          "name": "…"
        }
      }
    ]
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "listWorkflowRuns",
    "variables": {
      "workflowAutomationId": "<workflowAutomationId>"
    }
  }'
```
