GET

List Workflows

Retrieve all configured workflows with their associated statuses and settings.

Endpoint

HTTP Request
GET /v1/workflows

Authentication

This endpoint requires a valid API key with canViewStatuses permission. The API key must be passed in the X-API-Key header.
Required Header
X-API-Key: your_api_key_here

Response

Returns a JSON object with the list of workflows:
200 OK - Success Response
{
  "workflows": [
    {
      "id": "uuid-workflow-1",
      "name": "Fulfillment",
      "description": "Standard order fulfillment pipeline",
      "color": "#4A90E2",
      "order": 1,
      "statuses": [
        {
          "id": "uuid-status-1",
          "name": "Processing",
          "public_name": null,
          "use_public_name": false,
          "display_name": "Processing",
          "color": "#FFA500",
          "order": 1,
          "is_independent": false,
          "is_addon": false
        },
        {
          "id": "uuid-status-2",
          "name": "Shipped",
          "public_name": "On its way",
          "use_public_name": true,
          "display_name": "On its way",
          "color": "#00FF00",
          "order": 2,
          "is_independent": false,
          "is_addon": false
        }
      ],
      "status_count": 2
    },
    {
      "id": "uuid-workflow-2",
      "name": "Returns",
      "description": "Return and exchange handling",
      "color": "#E24A4A",
      "order": 2,
      "statuses": [
        {
          "id": "uuid-status-10",
          "name": "Return Requested",
          "public_name": null,
          "use_public_name": false,
          "display_name": "Return Requested",
          "color": "#FF0000",
          "order": 10,
          "is_independent": false,
          "is_addon": false
        }
      ],
      "status_count": 1
    }
  ],
  "workflows_enabled": true,
  "enforce_workflow_order": false,
  "summary": {
    "total": 2,
    "total_statuses": 3
  }
}

Response Fields

Root Response Object

FieldTypeDescription
workflowsarrayArray of workflow objects
workflows_enabledbooleanWhether multi-workflow mode is active
enforce_workflow_orderbooleanWhether workflow order enforcement is active. When true, orders must progress through workflows in sequence and cannot move backwards.
summaryobjectSummary information including totals

Workflow Object Fields

FieldTypeDescription
idstringUnique identifier for the workflow
namestringDisplay name of the workflow
descriptionstring | nullOptional description of the workflow's purpose
colorstringHex color code for UI display
ordernumberDisplay order position (ascending)
statusesarrayArray of status objects assigned to this workflow (ordered by order ascending)
status_countnumberNumber of statuses in this workflow

Status Object Fields (within workflow)

FieldTypeDescription
idstringUnique identifier for the status
namestringDisplay name of the status
public_namestring | nullPublic-facing name of the status, or null
use_public_namebooleanWhether to use the public name instead of the internal name
display_namestringThe resolved display name (public_name if use_public_name is true, otherwise name)
colorstringHex color code for the status
ordernumberPosition of the status within the workflow sequence
is_independentbooleanWhether this status is independent (not part of the main chain)
is_addonbooleanWhether this status is an addon status

Summary Object Fields

FieldTypeDescription
totalnumberTotal number of workflows
total_statusesnumberTotal number of statuses across all workflows

Examples

Basic Request

cURL Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/workflows" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.3"

Rate Limiting

This endpoint is subject to per-minute and per-day rate limits based on your API key. Rate limit information is returned in the response headers:
  • X-RateLimit-Limit-Minute: Maximum requests per minute
  • X-RateLimit-Remaining-Minute: Remaining requests in current minute
  • X-RateLimit-Reset-Minute: Unix timestamp when minute window resets
  • X-RateLimit-Limit-Day: Maximum requests per day
  • X-RateLimit-Remaining-Day: Remaining requests in current day
  • X-RateLimit-Reset-Day: Unix timestamp when day window resets
  • Retry-After: Seconds to wait before retrying (when rate limited)

Error Responses

401 Unauthorized

Missing or invalid API key

401 Unauthorized
{
  "error": "Invalid API key"
}

403 Forbidden

API key lacks required permissions

403 Forbidden
{
  "error": "Insufficient permissions"
}

500 Internal Server Error

Server error occurred

500 Internal Server Error
{
  "error": "Internal server error",
  "details": {
    "message": "Error description"
  }
}