Skip to main content

Workflows API

Configure and manage approval workflows for access requests.

Endpoints Overview

MethodEndpointDescription
GET/workflowsList all workflows
POST/workflowsCreate workflow
GET/workflows/{id}Get workflow details
PATCH/workflows/{id}Update workflow
DELETE/workflows/{id}Delete workflow
POST/workflows/{id}/stepsAdd step to workflow
PATCH/workflows/{id}/steps/{step_id}Update step
DELETE/workflows/{id}/steps/{step_id}Delete step
POST/workflows/{id}/steps/{step_id}/approversAdd approver
DELETE/workflows/{id}/steps/{step_id}/approvers/{approver_id}Remove approver
POST/workflows/requests/{request_id}/approveApprove request
POST/workflows/requests/{request_id}/rejectReject request

Workflow Types

TypeDescription
access_requestApproval for data product access
change_requestApproval for quality check changes

List Workflows

GET /workflows

Query Parameters

ParameterTypeDescription
workflow_typestringFilter by type
is_activebooleanFilter by active status

Response

[
{
"id": "...",
"name": "Data Access Approval",
"workflow_type": "access_request",
"is_active": true,
"is_default": true,
"steps": [
{
"id": "...",
"name": "Manager Approval",
"order": 1,
"approvers": [...]
}
],
"created_at": "2026-01-15T10:30:00Z"
}
]

Create Workflow

POST /workflows

Request Body

{
"name": "Two-Step Approval",
"workflow_type": "access_request",
"is_default": false,
"steps": [
{
"name": "Team Lead Review",
"order": 1,
"approvers": [
{"user_id": "user-uuid"}
]
},
{
"name": "Data Owner Approval",
"order": 2,
"approvers": [
{"governance_role": "owner"}
]
}
]
}

Add Step

POST /workflows/{workflow_id}/steps
{
"name": "Security Review",
"order": 3
}

Add Approver

POST /workflows/{workflow_id}/steps/{step_id}/approvers

Approvers can be specific users or governance roles:

{
"user_id": "user-uuid"
}

Or by governance role:

{
"governance_role": "steward"
}

Valid governance roles: owner, steward, custodian


Approve Request

POST /workflows/requests/{request_id}/approve
{
"comment": "Approved for production access."
}

Reject Request

POST /workflows/requests/{request_id}/reject
{
"comment": "Need additional justification for this access level."
}

Error Responses

StatusDescription
400Invalid workflow configuration
403Not authorized to approve/reject
404Workflow or request not found