duvo.ai · Agentic Access

duvo.ai Agentic Access

x-agentic-access generated

duvo.ai exposes 213 API operations that an AI agent could call, of which 124 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.

By consequence: 89 read, 116 write, 1 physical, and 7 safety-critical.

7 operations are classed safety-critical and should require human-in-the-loop approval at runtime.

Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.

CompanyAi MlProcess IntelligenceAutomationAgentsMCPEnterprise OperationsSAP MigrationWorkflow
Operations: 213 Acting: 124 Human-in-the-loop: 7 Method: generated

By consequence

read 89 write 116 physical 1 safety-critical 7

Highest-consequence actions

The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.

MethodPathConsequenceHuman-in-loop
POST /v2/artifacts/{artifactId}/stop safety-critical required
POST /v2/clarity-v2/processes/{process_id}/snapshots/{kind}/stop safety-critical required
POST /v2/runs/{run_id}/stop safety-critical required
DELETE /v2/skills/{skill_id} safety-critical required
PUT /v2/skills/{skill_id}/files/{*} safety-critical required
POST /v2/teams/{teamId}/skills safety-critical required
POST /v2/teams/{teamId}/skills/upload safety-critical required
POST /v2/artifacts/{artifactId}/messages physical conditional

Source

Agentic Access

Raw ↑
generated: '2026-07-18'
method: generated
source: openapi/duvoai-openapi-original.json
description: Recommended x-agentic-access execution contracts, classified heuristically from
  the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
  audience per deployment. See research/curity/agentic-governance/.
summary:
  operations: 213
  by_action_class:
    acting: 124
    connected: 89
  by_consequence:
    write: 116
    read: 89
    physical: 1
    safety-critical: 7
  human_in_the_loop_required: 7
operations:
- path: /v2/mcp
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/mcp
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/memory/files
  method: get
  operationId: listAgentMemoryFiles
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/memory/files/{*}
  method: get
  operationId: getAgentMemoryFile
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/plugins/catalog
  method: get
  operationId: listPluginCatalog
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/schedules
  method: post
  operationId: createSchedule
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/schedules
  method: get
  operationId: listAgentSchedules
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/schedules/{schedule_id}
  method: patch
  operationId: updateSchedule
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/schedules/{schedule_id}
  method: delete
  operationId: deleteSchedule
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/teams/{teamId}
  method: get
  operationId: getTeam
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/teams/{teamId}/connections/oauth/native/{provider}/start
  method: post
  operationId: startNativeOAuth
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/teams/{teamId}/connections/oauth/mcp/start
  method: post
  operationId: authorizeMcpOAuth
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/connections/oauth/mcp/check
  method: post
  operationId: checkMcpOAuth
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts
  method: get
  operationId: listPulseDashboards
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts
  method: post
  operationId: createPulseDashboard
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}
  method: get
  operationId: getPulseDashboard
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}
  method: patch
  operationId: updatePulseDashboard
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}
  method: delete
  operationId: deletePulseDashboard
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/render
  method: get
  operationId: getPulseDashboardHtml
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}/export/pdf
  method: get
  operationId: getPulseDashboardPdf
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}/export/html
  method: get
  operationId: exportPulseDashboardHtml
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}/publish
  method: post
  operationId: publishPulseDashboard
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/duplicate
  method: post
  operationId: duplicatePulseDashboard
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/messages
  method: post
  operationId: sendPulseDashboardMessage
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/messages
  method: get
  operationId: listPulseDashboardMessages
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}/refresh
  method: post
  operationId: refreshPulseDashboard
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/stop
  method: post
  operationId: stopPulseDashboardMessage
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /v2/artifacts/{artifactId}/connections
  method: get
  operationId: listPulseDashboardConnections
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}/connections
  method: post
  operationId: attachPulseDashboardConnection
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/connections/{connectionId}
  method: delete
  operationId: detachPulseDashboardConnection
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/answer
  method: post
  operationId: answerPulseDashboardQuestion
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/artifacts/{artifactId}/revisions
  method: get
  operationId: listPulseDashboardVersions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}/revisions/{revisionId}/render
  method: get
  operationId: getPulseDashboardVersionHtml
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/artifacts/{artifactId}/revisions/{revisionId}/restore
  method: post
  operationId: restorePulseDashboardVersion
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/sandboxes
  method: post
  operationId: createSandbox
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/sandboxes/{sandbox_id}/upload-urls
  method: post
  operationId: createSandboxUploadUrl
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/sandboxes/{sandbox_id}/files
  method: get
  operationId: listSandboxFiles
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/sandboxes/{sandbox_id}/files
  method: post
  operationId: uploadSandboxFile
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agent/{agentId}/runs/{runId}/evaluation
  method: get
  operationId: getRunEvaluation
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agent/{agentId}/eval-scores
  method: get
  operationId: getEvalScores
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agentId}/eval-rubrics
  method: get
  operationId: getEvalRubrics
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agentId}/eval-rubrics
  method: post
  operationId: createEvalRubric
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agentId}/eval-rubrics
  method: put
  operationId: replaceEvalRubrics
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agentId}/eval-rubrics/{rubricId}
  method: patch
  operationId: updateEvalRubric
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agentId}/eval-rubrics/{rubricId}
  method: delete
  operationId: deleteEvalRubric
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/case-triggers
  method: get
  operationId: listAgentCaseTriggers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/case-triggers
  method: post
  operationId: createAgentCaseTrigger
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/case-triggers/conflict-preview
  method: get
  operationId: previewAgentCaseTriggerConflicts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/case-triggers/{trigger_id}
  method: get
  operationId: getAgentCaseTrigger
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/case-triggers/{trigger_id}
  method: patch
  operationId: updateAgentCaseTrigger
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/case-triggers/{trigger_id}
  method: delete
  operationId: deleteAgentCaseTrigger
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/triggers/{agentId}
  method: get
  operationId: listAgentTriggers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/triggers/{agentId}
  method: put
  operationId: upsertAgentTrigger
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/trigger-config/{agentId}
  method: get
  operationId: listAgentTriggerTypes
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/revisions
  method: post
  operationId: createRevision
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/revisions
  method: get
  operationId: listAgentRevisions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/revisions/{build_id}
  method: get
  operationId: getRevision
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/revisions/{build_id}
  method: patch
  operationId: updateRevision
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/revisions/{build_id}/promote
  method: post
  operationId: promoteRevision
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}
  method: get
  operationId: getAgent
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}
  method: patch
  operationId: updateAgent
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}
  method: delete
  operationId: deleteAgent
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/move
  method: post
  operationId: moveAgent
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations
  method: get
  operationId: listRevisionIntegrations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations
  method: post
  operationId: attachRevisionIntegrations
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}
  method: delete
  operationId: removeRevisionIntegration
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/connections
  method: get
  operationId: listRevisionIntegrationConnections
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/connections
  method: post
  operationId: pinRevisionIntegrationConnection
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/connections/{connection_id}
  method: delete
  operationId: unpinRevisionIntegrationConnection
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/revisions/{build_id}/case-queue-validation
  method: get
  operationId: getRevisionCaseQueueSetup
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/queues
  method: get
  operationId: listRevisionIntegrationQueues
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/{agent_id}/revisions/{build_id}/integrations/{integration_id}/queues
  method: put
  operationId: replaceRevisionIntegrationQueues
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/{agent_id}/suggestions
  method: get
  operationId: listAgentSuggestions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/agents/suggestions/{id}/consume
  method: post
  operationId: consumeAgentSuggestion
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/agents/suggestions/{id}/reject
  method: post
  operationId: rejectAgentSuggestion
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/skills/system
  method: get
  operationId: listSystemSkills
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/skills/{skill_id}
  method: delete
  operationId: deleteSkill
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /v2/skills/{skill_id}/download
  method: get
  operationId: downloadSkill
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/skills/{skill_id}/files
  method: get
  operationId: listSkillFiles
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/skills/{skill_id}/files/{*}
  method: get
  operationId: getSkillFileContent
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/skills/{skill_id}/files/{*}
  method: put
  operationId: updateSkillFile
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /v2/skills/{skill_id}/assignments
  method: get
  operationId: listSkillAssignments
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/profile
  method: get
  operationId: getProfile
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/clarity/processes/{id}
  method: get
  operationId: getLegacyClarityProcess
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/organizations/{orgId}/clarity/hierarchy/nodes/{nodeId}
  method: patch
  operationId: updateClarityLandscapeNode
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/organizations/{orgId}/clarity/hierarchy/nodes/{nodeId}
  method: delete
  operationId: deleteClarityLandscapeNode
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/organizations/{orgId}/clarity/hierarchy/nodes/{nodeId}/placement
  method: put
  operationId: setClarityLandscapeNodePlacement
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/organizations/{orgId}/clarity/hierarchy/proposed-processes
  method: post
  operationId: proposeClarityLandscapeProcess
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}
  method: get
  operationId: getClarityProcess
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/clarity-v2/processes/{process_id}/postprocess
  method: post
  operationId: postprocessClaritySnapshot
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/automation
  method: post
  operationId: buildClarityAutomation
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/transformation-proposals/{transformation_proposal_id}/extra-capture-requests
  method: get
  operationId: listClarityExtraCaptureRequests
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/clarity-v2/processes/{process_id}/transformation-proposals/{transformation_proposal_id}/extra-capture-requests/{request_id}/assign
  method: patch
  operationId: assignClarityExtraCaptureRequest
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/invite-link
  method: post
  operationId: createClarityInviteLink
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/artifact-imports/create-upload-url
  method: post
  operationId: createClarityArtifactImportUploadUrl
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/artifact-imports/{capture_id}/complete
  method: post
  operationId: completeClarityArtifactImport
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/artifact-chat/conversations
  method: get
  operationId: listClarityArtifactChatConversations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/clarity-v2/processes/{process_id}/artifact-chat/conversations/{conversation_id}/messages
  method: get
  operationId: getClarityArtifactChatMessages
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/clarity-v2/processes/{process_id}/artifact-chat/messages
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/artifact-chat/messages/{message_id}
  method: put
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v2/clarity-v2/processes/{process_id}/snapshots/{kind}
  method: get
  operationId: listClarityProcessSnapshots
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/clarity-v2/processes/{process_id}/snapshots/{kind}/{snapshot_id}
  method: get
  operationId: getClarityProcessSnapshot
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/clarity-v2/processes/{process_id}/snapshots/{kind}/{snapshot_id}
  method: delete
  operationId: revertClarityProcessSnapshot
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
  

# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/duvoai/refs/heads/main/agentic-access/duvoai-agentic-access.yml