Download OpenAPI specification:
API for a SaaS platform that allows customers to manage approvals for generic workflows, users, and groups.
Initiates OIDC authentication specifying a loopback redirect URI for the CLI
| redirectUri required | string The local loopback URL to redirect the user to after authentication |
{- "redirectUri": "string"
}{- "authorizationUrl": "string"
}Exchanges an IDP token for a high-privilege step-up token and sets it as an HttpOnly cookie.
| code required | string The authorization code returned from the IDP |
| state required | string The state parameter returned from the IDP |
| resourceId | string The identifier of the resource being accessed |
| operation required | string (PrivilegedOperation) The operation requiring high privilege authentication |
{- "code": "string",
- "state": "string",
- "resourceId": "string",
- "operation": "string"
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Initiates the step-up authentication flow for the CLI by redirecting to the IDP.
The CLI should open the returned redirect URL in a browser. After the user authenticates,
the IDP will redirect to the CLI local server with a code and state parameter,
which must then be exchanged via POST /auth/cli/exchangePrivilegedToken.
{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Exchanges an IDP authorization code for a high-privilege step-up token, returned as JSON.
| code required | string The authorization code returned from the IDP |
| state required | string The state parameter returned from the IDP |
| resourceId | string The identifier of the resource being accessed |
| operation required | string (PrivilegedOperation) The operation requiring high privilege authentication |
{- "code": "string",
- "state": "string",
- "resourceId": "string",
- "operation": "string"
}{- "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}Exchanges an IDP authorization code and state for a pair of access and refresh tokens, returned as JSON.
| code required | string Authorization code returned by the IDP |
| state required | string State parameter passed to the IDP for CSRF protection |
{- "code": "string",
- "state": "string"
}{- "accessToken": "string",
- "refreshToken": "string"
}Exchanges a refresh token for a new pair of access and refresh tokens, returned as JSON.
| refreshToken required | string Refresh token used to obtain a new access token |
{- "refreshToken": "sd8Axmi9Xkalsmcd..."
}{- "accessToken": "string",
- "refreshToken": "string"
}Creates an encrypted challenge that must be signed by the agent to obtain a token.
Challenge Format (Server → Agent): The server generates a challenge encrypted with the agent's public key. When decrypted and base64 decoded, it contains a JSON object with:
audience: string (agent name)expires_at: ISO 8601 formatted date-time stringissuer: string (the name of the SaaS platform, e.g., "Approvio")nonce: a random string to ensure uniqueness (the actual challenge)| agentName required | string Name of the agent requesting authentication |
{- "agentName": "ci-deployment-agent"
}{- "challenge": "eyJhdWRpZW5jZSI6ImNpLWRlcGxveW1lbnQtYWdlbnQiLCJleHBpcmVzX2F0IjoiMjAyNS0wNC0xNVQxMjoxNTowMFoiLCJpc3N1ZXIiOiJBcHByb3ZpbyIsIm5vbmNlIjoiYWJjZGVmZ2hpams5ODc2NTQzMjEifQ=="
}Validates a JWT assertion and returns a JWT access token for the authenticated agent using OAuth 2.0 JWT Bearer profile (RFC 7523).
JWT Assertion Requirements: The agent must create and sign a JWT assertion with their private key containing:
iss (issuer): Agent namesub (subject): Agent name (same as issuer for client authentication)aud (audience): Authorization server identifier exp (expiration): JWT expiration time (Unix timestamp)jti (JWT ID): Unique nonce from the server's challenge (prevents replay attacks)iat (issued at): JWT issued time (Unix timestamp, optional)Security Notes:
| grantType required | string Value: "urn:ietf:params:oauth:grant-type:jwt-bearer" OAuth 2.0 grant type for JWT Bearer profile |
| clientAssertionType required | string Value: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" OAuth 2.0 client assertion type for JWT Bearer profile |
| clientAssertion required | string JWT assertion signed with the agent's private key using RS256 algorithm. JWT Header:
JWT Payload:
Requirements:
|
{- "grantType": "urn:ietf:params:oauth:grant-type:jwt-bearer",
- "clientAssertionType": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
- "clientAssertion": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaS1kZXBsb3ltZW50LWFnZW50Iiwic3ViIjoiY2ktZGVwbG95bWVudC1hZ2VudCIsImF1ZCI6IkFwcHJvdmlvIiwiZXhwIjoxNjQwOTk1MjAwLCJqdGkiOiJhYmNkZWZnaGlqazk4NzY1NDMyMSIsImlhdCI6MTY0MDk5MTYwMH0.signature"
}{- "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjaS1kZXBsb3ltZW50LWFnZW50IiwiZW50aXR5VHlwZSI6ImFnZW50IiwiaWF0IjoxNjc4OTAxMjAwLCJleHAiOjE2Nzg5ODc2MDB9.signature",
- "refreshToken": "sd8Axmi9Xkalsmcd..."
}Exchanges a refresh token for a new pair of access and refresh tokens. Requires DPoP proof.
| DPoP required | string DPoP proof based on RFC 9449 |
| refreshToken required | string Refresh token used to obtain a new access token |
{- "refreshToken": "sd8Axmi9Xkalsmcd..."
}{- "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjaS1kZXBsb3ltZW50LWFnZW50IiwiZW50aXR5VHlwZSI6ImFnZW50IiwiaWF0IjoxNjc4OTAxMjAwLCJleHAiOjE2Nzg5ODc2MDB9.signature",
- "refreshToken": "sd8Axmi9Xkalsmcd..."
}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
object (ListWorkflowsParams) |
{- "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,
- "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5",
- "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 or name of the workflow |
object (GetWorkflowParams) |
{- "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,
- "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5",
- "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) |
| spaceId required | string <uuid> ID of the space to which this workflow template belongs |
{- "name": "string",
- "description": "string",
- "metadata": { },
- "approvalRule": {
- "type": "AND",
- "rules": [
- null
]
}, - "actions": [
- {
- "type": "EMAIL",
- "recipients": [
- "user@example.com"
]
}
], - "defaultExpiresInHours": 1,
- "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5"
}{- "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,
- "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Returns a list of workflow templates with optional filtering
object (ListWorkflowTemplatesParams) |
{- "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.
| templateIdentifier required | string The unique identifier of the workflow template (UUID) |
{- "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,
- "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5",
- "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
| templateIdentifier 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,
- "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5",
- "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,
- "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5",
- "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"
}Assigns standard roles to a user by replacing all existing role assignments. Roles are specified by their system-defined names and scopes. The user must be authenticated as a human (not an agent) to use this endpoint.
| userId required | string <uuid> The unique identifier (UUID) of the user. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Removes specified roles from a user. Only the roles matching both the role name and scope will be removed. The user must be authenticated as a human (not an agent) to use this endpoint.
| userId required | string <uuid> The unique identifier (UUID) of the user. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}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"
}Creates a new organizational space
| name required | string Name of the space (max 255 characters) |
| description | string Description of the space (max 2048 characters) |
{- "name": "Engineering Team",
- "description": "Space for engineering team collaboration"
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Returns a list of spaces
| 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": "Engineering Team",
- "description": "Space for engineering team collaboration",
- "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 space
| spaceId required | string <uuid> The unique identifier of the space |
{- "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
- "name": "Engineering Team",
- "description": "Space for engineering team collaboration",
- "createdAt": "2025-04-15T12:05:00Z",
- "updatedAt": "2025-04-15T12:05:00Z"
}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"
]
}
}{ }Returns a list of all votes cast for the specified workflow.
| workflowId required | string The unique identifier of the workflow |
{- "votes": [
- {
- "voterId": "2f88d831-dd2d-4646-94b3-a7ea79cde62c",
- "voterType": "string",
- "voteType": "string",
- "reason": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "votedForGroups": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
]
}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",
- "requireHighPrivilege": true
}Creates a new agent registration entry with generated asymmetric key pair for future authentication
| agentName required | string [ 1 .. 1024 ] characters Unique name for the agent (must be unique across the system) |
{- "agentName": "ci-deployment-agent"
}{- "agentId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
- "agentName": "ci-deployment-agent",
- "publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEuLi4KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0t",
- "privateKey": "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUVWd0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktnZ2dnU2tBZ0VBQW9JQkFRQy4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t",
- "createdAt": "2025-04-15T12:05:00Z"
}Returns the details of a specific agent by their ID or name.
| agentIdOrName required | string The unique identifier (UUID) or the name of the agent. |
{- "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
- "agentName": "ci-deployment-agent",
- "publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEuLi4KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0t",
- "createdAt": "2025-04-15T12:05:00Z"
}Assigns standard roles to an agent by replacing all existing role assignments. Roles are specified by their system-defined names and scopes. The user must be authenticated as a human (not an agent) to use this endpoint.
| agentId required | string <uuid> The unique identifier (UUID) of the agent. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Removes specified roles from an agent. Only the roles matching both the role name and scope will be removed. The user must be authenticated as a human (not an agent) to use this endpoint.
| agentId required | string <uuid> The unique identifier (UUID) of the agent. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Assigns standard roles to an agent by replacing all existing role assignments. Roles are specified by their system-defined names and scopes. The user must be authenticated as a human (not an agent) to use this endpoint.
| agentId required | string <uuid> The unique identifier (UUID) of the agent. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Removes specified roles from an agent. Only the roles matching both the role name and scope will be removed. The user must be authenticated as a human (not an agent) to use this endpoint.
| agentId required | string <uuid> The unique identifier (UUID) of the agent. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Assigns standard roles to a user by replacing all existing role assignments. Roles are specified by their system-defined names and scopes. The user must be authenticated as a human (not an agent) to use this endpoint.
| userId required | string <uuid> The unique identifier (UUID) of the user. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}Removes specified roles from a user. Only the roles matching both the role name and scope will be removed. The user must be authenticated as a human (not an agent) to use this endpoint.
| userId required | string <uuid> The unique identifier (UUID) of the user. |
required | Array of objects (RoleOperationItem) Array of role assignments specifying role names and their scopes |
{- "roles": [
- {
- "roleName": "GroupReadOnly",
- "scope": {
- "type": "group",
- "groupId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
]
}{- "code": "string",
- "message": "string",
- "details": [
- {
- "field": "string",
- "message": "string"
}
]
}