Download OpenAPI specification:
API for a SaaS platform that allows customers to manage approvals for generic workflows, users, and groups.
Handles the callback from OIDC provider and redirects to success page with authorization code
code required | string Authorization code from OIDC provider |
state required | string State parameter to prevent CSRF attacks |
{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}
Exchanges the authorization code and state for a JWT token containing user information and roles
code required | string Authorization code received from OIDC provider |
state required | string State parameter used for CSRF protection |
{- "code": "auth_code_123",
- "state": "state_123"
}
{- "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Creates a new workflow with approvers and rules
name required | string User-friendly name for the workflow |
description | string Detailed description of the workflow |
metadata | object Additional custom metadata for the workflow |
workflowTemplateId required | string <uuid> The unique identifier of the workflow template to use as parent |
{- "name": "string",
- "description": "string",
- "metadata": { },
- "workflowTemplateId": "53e62d87-459b-4f1f-ae45-ffe2549e140f"
}
{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}
Returns a list of workflows with optional filtering
page | integer Default: 1 Page number for pagination |
limit | integer Default: 20 Number of results per page |
include | Array of strings Items Value: "workflow-template" Comma-separated list of related objects to include in the response |
include-only-non-terminal-state | boolean Default: false When set to true, only workflows that are not in terminal state will be returned. Terminal states are: APPROVED, CANCELED, EXPIRED. Non-terminal state: EVALUATION_IN_PROGRESS. |
{- "data": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "status": "string",
- "workflowTemplateId": "53e62d87-459b-4f1f-ae45-ffe2549e140f",
- "metadata": { },
- "ref": {
- "workflowTemplate": {
- "id": "string",
- "name": "string",
- "version": "string",
- "description": "string",
- "status": "ACTIVE",
- "allowVotingOnDeprecatedTemplate": true,
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "metadata": { },
- "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2025-04-15T12:05:00Z"
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "limit": 0
}
}
Returns the details of a specific workflow
workflowId required | string The unique identifier of the workflow |
include | Array of strings Items Value: "workflow-template" Comma-separated list of related objects to include in the response |
{- "id": "string",
- "name": "string",
- "description": "string",
- "status": "string",
- "workflowTemplateId": "53e62d87-459b-4f1f-ae45-ffe2549e140f",
- "metadata": { },
- "ref": {
- "workflowTemplate": {
- "id": "string",
- "name": "string",
- "version": "string",
- "description": "string",
- "status": "ACTIVE",
- "allowVotingOnDeprecatedTemplate": true,
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "metadata": { },
- "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2025-04-15T12:05:00Z"
}
Creates a new workflow template with approval rules, actions, and default expiry settings
name required | string User-friendly name for the workflow template |
description | string Detailed description of the workflow template |
metadata | object Additional custom metadata for the workflow template |
required | any (ApprovalRule) Configuration of approval rules. Can be a boolean operator (AND/OR) combining nested rules, or a specific requirement (minimum count from a group). |
Array of any (WorkflowAction) Actions to be executed when workflow is approved | |
defaultExpiresInHours | integer [ 1 .. 8760 ] Default expiry time for workflows created from this template (in hours, max 1 year) |
{- "name": "string",
- "description": "string",
- "metadata": { },
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1
}
{- "id": "string",
- "name": "string",
- "version": "string",
- "description": "string",
- "status": "ACTIVE",
- "allowVotingOnDeprecatedTemplate": true,
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "metadata": { },
- "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Returns a list of workflow templates with optional filtering
page | integer Default: 1 Page number for pagination |
limit | integer Default: 20 Number of results per page |
{- "data": [
- {
- "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
- "name": "New Workflow Template",
- "version": "1",
- "description": "This is a new workflow template",
- "createdAt": "2025-04-15T12:05:00Z",
- "updatedAt": "2025-04-15T12:05:00Z"
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "limit": 0
}
}
Returns the details of a specific workflow template
templateId required | string The unique identifier of the workflow template |
{- "id": "string",
- "name": "string",
- "version": "string",
- "description": "string",
- "status": "ACTIVE",
- "allowVotingOnDeprecatedTemplate": true,
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "metadata": { },
- "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Updates an existing workflow template by creating a new version and optionally canceling active workflows
templateName required | string The name of the workflow template to update |
description | string Detailed description of the workflow template |
metadata | object Additional custom metadata for the workflow template |
any (ApprovalRule) Configuration of approval rules. Can be a boolean operator (AND/OR) combining nested rules, or a specific requirement (minimum count from a group). | |
Array of any (WorkflowAction) Actions to be executed when workflow is approved | |
defaultExpiresInHours | integer [ 1 .. 8760 ] Default expiry time for workflows created from this template (in hours, max 1 year) |
cancelWorkflows | boolean Default: false If true, all in-progress workflows associated with this template will be canceled when creating a new version. This affects the allowVotingOnDeprecatedTemplate setting: when true, voting is disabled on the deprecated template. |
{- "description": "string",
- "metadata": { },
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "cancelWorkflows": false
}
{- "id": "string",
- "name": "string",
- "version": "string",
- "description": "string",
- "status": "ACTIVE",
- "allowVotingOnDeprecatedTemplate": true,
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "metadata": { },
- "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Marks a workflow template as deprecated with optional workflow cancellation
templateName required | string The name of the workflow template to deprecate |
Options for deprecating a workflow template.
cancelWorkflows | boolean Default: false If true, all in-progress workflows associated with this template will be canceled. This affects the allowVotingOnDeprecatedTemplate setting: when true, voting is disabled on the deprecated template. |
{- "cancelWorkflows": false
}
{- "id": "string",
- "name": "string",
- "version": "string",
- "description": "string",
- "status": "ACTIVE",
- "allowVotingOnDeprecatedTemplate": true,
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "metadata": { },
- "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Creates a new user in the system.
displayName required | string User's display name. |
email required | string <email> User's email address (must be unique). |
orgRole required | string Role assigned to the user within the organization. |
{- "displayName": "Alex Chen",
- "email": "alex.chen@example.com",
- "orgRole": "member"
}
{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}
Returns a list of users
search | string Fuzzy search term for user display name or email. |
page | integer Default: 1 Page number for pagination |
limit | integer Default: 20 Number of results per page |
{- "users": [
- {
- "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
- "displayName": "Alex Chen",
- "email": "alex.chen@example.com"
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "limit": 0
}
}
Returns the details of a specific user by their ID.
userId required | string <uuid> The unique identifier (UUID) of the user. |
{- "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
- "displayName": "Alex Chen",
- "email": "alex.chen@example.com",
- "orgRole": "member",
- "createdAt": "2025-04-15T12:05:00Z"
}
Returns a list of all entities (users, systems, etc.) that belong to a specific group, including their roles.
groupId required | string <uuid> The unique identifier (UUID) of the group. |
page | integer Default: 1 Page number for pagination |
limit | integer Default: 20 Number of results per page |
{- "entities": [
- {
- "entity": {
- "entityType": "human",
- "entityId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}, - "addedAt": "2025-04-16T10:30:00Z"
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "limit": 0
}
}
Add entities (like users) within a specific group.
groupId required | string <uuid> The unique identifier (UUID) of the group. |
required | Array of objects (EntityMembershipAdd) List of entities to add to the group. |
{- "entities": [
- {
- "entity": {
- "entityType": "human",
- "entityId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "entitiesCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Remove entities (like users) from a specific group.
groupId required | string <uuid> The unique identifier (UUID) of the group. |
required | Array of objects (EntityMembershipRemove) List of entities to remove from the group. |
{- "entities": [
- {
- "entity": {
- "entityType": "human",
- "entityId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "entitiesCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Create a new group for organizing approvers
name required | string Name of the group |
description | string Description of the group |
{- "name": "string",
- "description": "string"
}
{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}
Returns a list of groups
page | integer Default: 1 Page number for pagination |
limit | integer Default: 20 Number of results per page |
{- "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "entitiesCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "limit": 0
}
}
Returns the details of a specific group
groupIdentifier required | string The unique identifier of the group or the name of the group |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "entitiesCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Returns a list of all entities (users, systems, etc.) that belong to a specific group, including their roles.
groupId required | string <uuid> The unique identifier (UUID) of the group. |
page | integer Default: 1 Page number for pagination |
limit | integer Default: 20 Number of results per page |
{- "entities": [
- {
- "entity": {
- "entityType": "human",
- "entityId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}, - "addedAt": "2025-04-16T10:30:00Z"
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "limit": 0
}
}
Add entities (like users) within a specific group.
groupId required | string <uuid> The unique identifier (UUID) of the group. |
required | Array of objects (EntityMembershipAdd) List of entities to add to the group. |
{- "entities": [
- {
- "entity": {
- "entityType": "human",
- "entityId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "entitiesCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Remove entities (like users) from a specific group.
groupId required | string <uuid> The unique identifier (UUID) of the group. |
required | Array of objects (EntityMembershipRemove) List of entities to remove from the group. |
{- "entities": [
- {
- "entity": {
- "entityType": "human",
- "entityId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "entitiesCount": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
Adds a new organization administrator by email to the specified organization
organization-name required | string Example: my-org The name or identifier of the organization |
email required | string <email> Email address of the organization administrator |
{- "email": "admin@example.com"
}
{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}
Returns a list of administrators for the specified organization
organization-name required | string Example: my-org The name or identifier of the organization |
page | integer Default: 1 Page number for pagination |
limit | integer Default: 20 Number of results per page |
{- "data": [
- {
- "userId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
- "email": "admin@example.com",
- "createdAt": "2025-04-15T12:05:00Z"
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "limit": 0
}
}
Removes an organization administrator from the specified organization
organization-name required | string Example: my-org The name or identifier of the organization |
userId required | string <uuid> The unique identifier of the user to remove from organization admins |
{- "userId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}
Allows an authenticated entity to cast a vote (approve or veto) on a specific workflow.
workflowId required | string The unique identifier of the workflow |
reason | string Optional reason for the vote. Can be used for approval comments or reject reasons. |
required | any |
{- "reason": "Missing critical information or LGTM!",
- "voteType": {
- "type": "APPROVE",
- "votedForGroups": [
- "a1b2c3d4-e5f6-7890-1234-567890abcdef"
]
}
}
{ }
Determines if the authenticated entity is eligible to cast a vote on the specified workflow.
workflowId required | string The unique identifier of the workflow. |
{- "canVote": true,
- "voteStatus": "VOTE_PENDING",
- "cantVoteReason": "string"
}