duvo.ai Revision Integrations API
Attach integrations to assignment revisions, pin specific connections, and link queues
Attach integrations to assignment revisions, pin specific connections, and link queues
openapi: 3.0.3
info:
title: Duvo Public Agent Folders Revision Integrations API
description: Public API for programmatic access to Duvo. Authenticate with API keys created in the Duvo dashboard.
version: 1.0.0
servers:
- url: https://api.duvo.ai
description: Production server
tags:
- name: Revision Integrations
description: Attach integrations to assignment revisions, pin specific connections, and link queues
paths:
/v2/agents/{agent_id}/revisions/{build_id}/integrations:
get:
operationId: listRevisionIntegrations
tags:
- Revision Integrations
description: List integrations attached to an agent revision.
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
security:
- bearerAuth: []
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
integrations:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
integration_id:
nullable: true
type: string
format: uuid
custom_integration_id:
nullable: true
type: string
format: uuid
integration_type:
type: string
integration_name:
type: string
created_at:
type: string
required:
- id
- integration_id
- custom_integration_id
- integration_type
- integration_name
- created_at
additionalProperties: false
required:
- integrations
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'403':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: List Revision Integrations
post:
operationId: attachRevisionIntegrations
tags:
- Revision Integrations
description: 'Attach one or more integrations to an agent revision. To pin specific connections after attachment, use pinRevisionIntegrationConnection. IMPORTANT for the case-queue-producer and case-queue-consumer integrations: attaching the integration alone is NOT enough — the slot points at no queue and will fail at runtime until you link at least one queue with replaceRevisionIntegrationQueues. After wiring up, call getRevisionCaseQueueSetup to confirm every case-queue slot has linked_queue_count > 0 before starting work.'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
integration_ids:
minItems: 1
type: array
items:
type: string
format: uuid
description: Integration IDs (or custom integration IDs) to attach to the revision
required:
- integration_ids
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
security:
- bearerAuth: []
responses:
'201':
description: Default Response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: True if integrations were attached
count:
type: number
description: Number of new integrations attached to the revision
required:
- success
- count
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'403':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'409':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: Attach Revision Integrations
/v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}:
delete:
operationId: removeRevisionIntegration
tags:
- Revision Integrations
description: Remove an integration from an agent revision. Removes the slot for everyone on the revision, including all per-user connection pins. Requires edit permission on the agent.
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
- schema:
type: string
format: uuid
in: path
name: integration_id
required: true
description: Integration ID (catalog integration ID or slot ID from the list response)
security:
- bearerAuth: []
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: True if the integration was removed
required:
- success
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'403':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'409':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: Remove Revision Integration
/v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/connections:
get:
operationId: listRevisionIntegrationConnections
tags:
- Revision Integrations
description: 'List the connections you have pinned to this build''s integration slot. Multi-pin is supported: you can pin multiple connections to the same slot.'
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
- schema:
type: string
format: uuid
in: path
name: integration_id
required: true
description: Integration ID (catalog integration ID or slot ID from the list response)
security:
- bearerAuth: []
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
connections:
type: array
items:
type: object
properties:
connection_id:
type: string
format: uuid
description: Connection (integration_instance) identifier
created_at:
type: string
description: ISO 8601 timestamp when the pin was created
required:
- connection_id
- created_at
additionalProperties: false
description: Connections pinned by the calling user to this slot
required:
- connections
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: List Revision Integration Connections
post:
operationId: pinRevisionIntegrationConnection
tags:
- Revision Integrations
description: 'Pin one of your connections (from GET /v2/teams/:team_id/connections) to this build''s integration slot. Multi-pin is supported: a single user can pin multiple connections to the same slot.'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
connection_id:
type: string
format: uuid
description: ID of one of your connections (from GET /v2/teams/:team_id/connections) to pin to this slot
required:
- connection_id
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
- schema:
type: string
format: uuid
in: path
name: integration_id
required: true
description: Integration ID (catalog integration ID or slot ID from the list response)
security:
- bearerAuth: []
responses:
'201':
description: Default Response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: True if the connection was pinned
required:
- success
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'403':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'404':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'409':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: Pin Revision Integration Connection
/v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/connections/{connection_id}:
delete:
operationId: unpinRevisionIntegrationConnection
tags:
- Revision Integrations
description: Unpin one of your connections from this build's integration slot. The connection itself is not deleted; only the binding to this slot is removed.
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
- schema:
type: string
format: uuid
in: path
name: integration_id
required: true
description: Integration ID (catalog integration ID or slot ID from the list response)
- schema:
type: string
format: uuid
in: path
name: connection_id
required: true
description: Connection ID to unpin
security:
- bearerAuth: []
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: True if the connection is no longer pinned to the slot
required:
- success
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'403':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'404':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'409':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: Unpin Revision Integration Connection
/v2/agents/{agent_id}/revisions/{build_id}/case-queue-validation:
get:
operationId: getRevisionCaseQueueSetup
tags:
- Revision Integrations
description: Check that this build's case-queue integration slots are wired up correctly. Returns, per case-queue-producer/consumer slot, how many queues are linked, plus whether your team owns any case queues. A slot with linked_queue_count of 0 is attached but points at no queue and will fail at runtime — link a queue with replaceRevisionIntegrationQueues before starting work.
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
security:
- bearerAuth: []
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
configs:
type: array
items:
type: object
properties:
config_id:
type: string
format: uuid
description: Integration slot (agent_integration_config) ID
integration_type:
type: string
description: Slug of the integration type (e.g. case-queue-producer)
linked_queue_count:
type: number
description: Number of queues currently linked to this slot
required:
- config_id
- integration_type
- linked_queue_count
additionalProperties: false
description: Per-slot queue link summary for the build
has_available_queues:
type: boolean
description: True if the current team owns at least one queue
required:
- configs
- has_available_queues
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'403':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'404':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: Get Revision Case Queue Setup
/v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/queues:
get:
operationId: listRevisionIntegrationQueues
tags:
- Revision Integrations
description: List the queues linked to this build's case-queue integration slot. Only meaningful for case-queue-producer and case-queue-consumer integrations.
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
- schema:
type: string
format: uuid
in: path
name: integration_id
required: true
description: Integration ID
security:
- bearerAuth: []
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
queues:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
required:
- id
- name
additionalProperties: false
required:
- queues
additionalProperties: false
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'401':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'403':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'404':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
'500':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
required:
- error
additionalProperties: false
summary: List Revision Integration Queues
put:
operationId: replaceRevisionIntegrationQueues
tags:
- Revision Integrations
description: Replace the set of queues linked to this build's case-queue integration slot. Send the full desired queue list — any queues not in the list will be unlinked. Requires edit permission on the agent. After linking, call getRevisionCaseQueueSetup to confirm the slot now reports linked_queue_count > 0.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
queue_ids:
type: array
items:
type: string
format: uuid
description: Full set of queue IDs to link to this slot. Replaces any existing links.
required:
- queue_ids
parameters:
- schema:
type: string
format: uuid
in: path
name: agent_id
required: true
description: Agent ID
- schema:
type: string
format: uuid
in: path
name: build_id
required: true
description: Build ID
- schema:
type: string
format: uuid
in: path
name: integration_id
required: true
description: Integration ID
security:
- bearerAuth: []
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
properties:
queues:
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/duvoai/refs/heads/main/openapi/duvoai-revision-integrations-api-openapi.yml