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
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/duvo-ai-revision-integrations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
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:
type:
- string
- 'null'
format: uuid
custom_integration_id:
type:
- string
- 'null'
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
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/duvo-ai/refs/heads/main/openapi/duvo-ai-revision-integrations-api-openapi.yml