> ## Documentation Index
> Fetch the complete documentation index at: https://docs.duvo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Read Automation Policy

> Read an automation's whole Policy before answering anything about it: every question by section, with its `id` (the field id updateConfigField takes), key, type, answer and who gave it; `counts.questions` as the Policy screen's header counts them (`required_open` is what still blocks a run) apart from the module's pre-filled `module_defaults`; answers proposed by interviews and waiting for review; accepted and pending process-context notes; the interviews assigned; and `pending_apply`, the structural answers and notes not yet written into an Agent. `running` says whether the automation runs on live work: there a changed answer reaches its Agents from their next run, so name the question, its current answer and the new one, and change it only after the user says yes. A question whose `bindings` include `structural` changes how the Agents run; propose the matching Agent change too. Never invent an answer for a question shown as open. Give the user the full URLs in `urls`.



## OpenAPI

````yaml https://api.duvo.ai/v2/documentation/mintlify.json get /v2/automations/{automation_id}/policy
openapi: 3.0.3
info:
  title: Duvo Public API
  description: >-
    Public API for programmatic access to Duvo. Authenticate with API keys
    created in the Duvo dashboard.


    ## Rate limits


    Requests are counted per API key. Every response advertises the quota with
    the IETF RateLimit fields, so a client can self-throttle without waiting for
    a rejection:


    - `RateLimit-Policy: "default";q=<quota>;w=<window seconds>` — the policy in
    force: `q` requests per `w` seconds.

    - `RateLimit: "default";r=<remaining>;t=<seconds>` — the live state: `r`
    requests left, quota resetting in `t` seconds.

    - Read the quota from the headers rather than hard-coding it; it differs per
    environment.

    - The same numbers are also sent as `ratelimit-limit`, `ratelimit-remaining`
    and `ratelimit-reset`.


    Once the quota is exhausted the API answers `429 Too Many Requests` with
    `Retry-After` set to the seconds to wait; honor it instead of retrying
    immediately.
  version: 1.0.0
servers:
  - url: https://api.duvo.ai
    description: Production server
security: []
tags:
  - name: Runs
    description: Start, monitor, and manage agent runs (Runs in the Duvo UI)
  - name: Sandboxes
    description: Create sandboxes and upload files for agent runs
  - name: Queues
    description: Manage queues and their agent bindings
  - name: Cases
    description: Create, list, and manage cases and their labels within queues
  - name: Case Approvals
    description: Submit decisions on pending case approval requests issued by an agent run
  - name: Case Attachments
    description: Upload, list, download, and remove the files attached to a case
  - name: Automations
    description: >-
      List and manage automations — the workspace container that groups the
      agents and queues making up one end-to-end process
  - name: Agents
    description: Create and manage agents for automation workloads
  - name: Revisions
    description: Create and manage agent revisions — the underlying Setup for an Agent
  - name: Agent Folders
    description: Organize agents into folders
  - name: Agent Memory
    description: Read an agent's memory files (the Memory feature in the Duvo UI)
  - name: Suggestions
    description: >-
      List, apply, and dismiss an Agent's improvement suggestions (the
      suggestions inbox in the Duvo UI)
  - name: Notifications
    description: >-
      List, read, dismiss, and clear the authenticated user's team notifications
      (the Notification Center in the Duvo UI)
  - name: Schedules
    description: List schedules configured for an agent
  - name: Duvo Pulse
    description: >-
      Create, list, iterate on, and delete Duvo Pulse dashboards — live,
      agent-generated visualizations of your Duvo data
  - name: Case Triggers
    description: >-
      Configure case triggers that automatically dispatch agent runs (Runs in
      the Duvo UI) for cases added to a queue
  - name: Triggers
    description: >-
      Configure event triggers that start a Run automatically when an external
      event fires (e.g. an email arrives, a Linear issue is created, or a file
      changes in Google Drive)
  - name: Skills
    description: Manage team and system skills (reusable knowledge packs).
  - name: Files
    description: Manage team files.
  - name: Plugins
    description: Discover plugins that can be referenced from a revision.
  - name: Organizations
    description: Inspect organizations you belong to and the teams within them
  - name: Team
    description: Inspect the team and members associated with the API key
  - name: Invites
    description: >-
      Invite people to a team — one at a time or in bulk, scoped to a Clarity
      process or the whole team — and manage the team's shareable invite link
  - name: Integrations
    description: Browse the team's catalog of available integration types
  - name: Connections
    description: Manage your connected integrations
  - name: Credentials
    description: >-
      Manage logins (domain + username + password + TOTP) used by agents to sign
      in to websites and desktop applications, and attach them to assignment
      revisions
  - name: Secrets
    description: >-
      Manage env-var secrets injected into runs, and attach them to assignment
      revisions. Only metadata is exposed; values are never returned
  - name: Revision Integrations
    description: >-
      Attach integrations to assignment revisions, pin specific connections, and
      link queues
  - name: ClarityV2
    description: >-
      Manage Clarity v2 process snapshots, automation proposals, and the
      extra-capture-request follow-up loop
paths:
  /v2/automations/{automation_id}/policy:
    get:
      tags:
        - Automations
      summary: Read Automation Policy
      description: >-
        Read an automation's whole Policy before answering anything about it:
        every question by section, with its `id` (the field id updateConfigField
        takes), key, type, answer and who gave it; `counts.questions` as the
        Policy screen's header counts them (`required_open` is what still blocks
        a run) apart from the module's pre-filled `module_defaults`; answers
        proposed by interviews and waiting for review; accepted and pending
        process-context notes; the interviews assigned; and `pending_apply`, the
        structural answers and notes not yet written into an Agent. `running`
        says whether the automation runs on live work: there a changed answer
        reaches its Agents from their next run, so name the question, its
        current answer and the new one, and change it only after the user says
        yes. A question whose `bindings` include `structural` changes how the
        Agents run; propose the matching Agent change too. Never invent an
        answer for a question shown as open. Give the user the full URLs in
        `urls`.
      operationId: readAutomationPolicy
      parameters:
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
          in: query
          name: include_hidden
          required: false
          description: >-
            Also list the questions a person hid, under hidden_fields. Defaults
            to false.
        - schema:
            type: string
            format: uuid
          in: path
          name: automation_id
          required: true
          description: Automation ID
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  policy:
                    type: object
                    properties:
                      automation:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: The automation
                          name:
                            type: string
                            description: The automation's name
                        required:
                          - id
                          - name
                        additionalProperties: false
                        description: The automation this Policy belongs to
                      running:
                        type: boolean
                        description: >-
                          Whether the automation runs on live work: a changed
                          answer is used from its Agents' next run, so confirm
                          each change with the user first
                      sections:
                        type: array
                        items:
                          type: object
                          properties:
                            key:
                              nullable: true
                              description: Null for the questions that sit in no section
                              type: string
                            section:
                              type: string
                              description: The section's name
                            fields:
                              type: array
                              items:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    description: >-
                                      Pass as the field id to updateConfigField
                                      and its siblings
                                  key:
                                    type: string
                                    description: Stable key an Agent's AOP references
                                  label:
                                    type: string
                                    description: Short name of the question
                                  question:
                                    type: string
                                    description: The question as the Policy tab asks it
                                  type:
                                    type: string
                                    enum:
                                      - freeText
                                      - identifier
                                      - number
                                      - select
                                      - multiSelect
                                      - list
                                      - orderedList
                                      - personList
                                      - table
                                      - compound
                                      - sourcePointer
                                    description: What kind of answer it takes
                                  options:
                                    description: >-
                                      The choices of a select or multiSelect
                                      question
                                    type: array
                                    items: {}
                                  columns:
                                    description: The columns of a table question
                                    type: array
                                    items: {}
                                  origin:
                                    type: string
                                    enum:
                                      - template
                                      - added
                                    description: >-
                                      `template`: shipped with the module.
                                      `added`: a person added it
                                  customized:
                                    type: boolean
                                    description: >-
                                      A template question someone has edited
                                      since install
                                  bindings:
                                    type: array
                                    items:
                                      type: string
                                      enum:
                                        - context
                                        - parameter
                                        - tool
                                        - structural
                                        - readOnly
                                    description: >-
                                      `structural` means its answer changes how
                                      the module's Agents run: changing it also
                                      needs a matching Agent change
                                  required:
                                    type: boolean
                                    description: An open required question blocks a Run
                                  fill_mode:
                                    type: string
                                    enum:
                                      - interview
                                      - setup
                                      - module_default
                                    description: How the question is meant to be answered
                                  status:
                                    type: string
                                    enum:
                                      - answered
                                      - open
                                    description: Whether it has an answer
                                  value:
                                    nullable: true
                                    description: >-
                                      The current answer; never invent one for
                                      an open question
                                    allOf:
                                      - $ref: >-
                                          #/components/schemas/AutomationPolicyJsonValue
                                  provenance:
                                    nullable: true
                                    description: Who answered it, how and when
                                    type: object
                                    properties:
                                      filled_via:
                                        type: string
                                        enum:
                                          - manual
                                          - interview
                                          - document
                                          - template_default
                                          - org_default
                                          - ask_duvo
                                        description: How the answer was given
                                      filled_by_name:
                                        nullable: true
                                        description: Who gave it, when a person did
                                        type: string
                                      filled_at:
                                        type: string
                                        description: When, as an ISO timestamp
                                    required:
                                      - filled_via
                                      - filled_by_name
                                      - filled_at
                                    additionalProperties: false
                                required:
                                  - id
                                  - key
                                  - label
                                  - question
                                  - type
                                  - origin
                                  - customized
                                  - bindings
                                  - required
                                  - fill_mode
                                  - status
                                  - value
                                  - provenance
                                additionalProperties: false
                              description: The section's questions, in Policy order
                          required:
                            - key
                            - section
                            - fields
                          additionalProperties: false
                        description: Every visible question, by section
                      hidden_fields:
                        description: 'Present with include_hidden: questions a person hid'
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              description: The question
                            key:
                              type: string
                              description: Its key
                            label:
                              type: string
                              description: Its short name
                            question:
                              type: string
                              description: The question
                            section:
                              nullable: true
                              description: Its section's name
                              type: string
                          required:
                            - id
                            - key
                            - label
                            - question
                            - section
                          additionalProperties: false
                      counts:
                        type: object
                        properties:
                          questions:
                            type: object
                            properties:
                              answered:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: Questions with an answer
                              open:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: Questions without one
                              total:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: All of them
                              required_open:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: >-
                                  Required questions still open: these block a
                                  Run
                            required:
                              - answered
                              - open
                              - total
                              - required_open
                            additionalProperties: false
                            description: >-
                              The team's own questions, as the Policy screen's
                              header counts them
                          module_defaults:
                            type: object
                            properties:
                              filled:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: Pre-filled values in place
                              open:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: Ones left empty
                              total:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: All of them
                            required:
                              - filled
                              - open
                              - total
                            additionalProperties: false
                            description: >-
                              Values the module pre-fills; open ones are not the
                              team's backlog
                        required:
                          - questions
                          - module_defaults
                        additionalProperties: false
                        description: Answered and open counts
                      pending_proposals:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              description: The proposal
                            field_key:
                              type: string
                              description: The question it answers
                            question:
                              type: string
                              description: That question's text
                            proposed_value:
                              nullable: true
                              description: The proposed answer
                              allOf:
                                - $ref: >-
                                    #/components/schemas/AutomationPolicyJsonValue
                            rationale:
                              nullable: true
                              description: Why; null below the role that may read it
                              type: string
                            confidence:
                              description: How sure the extraction was
                            interview_id:
                              nullable: true
                              description: The interview it came from
                              type: string
                              format: uuid
                            interviewee:
                              nullable: true
                              description: >-
                                Who said it; null below the role that may read
                                it
                              type: string
                          required:
                            - id
                            - field_key
                            - question
                            - proposed_value
                            - rationale
                            - confidence
                            - interview_id
                            - interviewee
                          additionalProperties: false
                        description: Answers extracted from interviews, waiting for review
                      context_notes:
                        type: object
                        properties:
                          accepted:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  description: The note
                                title:
                                  type: string
                                  description: The note's title
                                note:
                                  type: string
                                  description: What the note says
                                rationale:
                                  nullable: true
                                  description: >-
                                    The interview's own words; null below the
                                    role that may read them
                                  type: string
                                source:
                                  type: string
                                  description: Where the note came from
                                interviewee:
                                  nullable: true
                                  description: >-
                                    Who said it; null below the role that may
                                    read it
                                  type: string
                              required:
                                - id
                                - title
                                - note
                                - rationale
                                - source
                                - interviewee
                              additionalProperties: false
                            description: Notes accepted into the Policy
                          pending:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  description: The note
                                title:
                                  type: string
                                  description: The note's title
                                note:
                                  type: string
                                  description: What the note says
                                rationale:
                                  nullable: true
                                  description: >-
                                    The interview's own words; null below the
                                    role that may read them
                                  type: string
                                source:
                                  type: string
                                  description: Where the note came from
                                interviewee:
                                  nullable: true
                                  description: >-
                                    Who said it; null below the role that may
                                    read it
                                  type: string
                              required:
                                - id
                                - title
                                - note
                                - rationale
                                - source
                                - interviewee
                              additionalProperties: false
                            description: Notes waiting for review
                        required:
                          - accepted
                          - pending
                        additionalProperties: false
                        description: Process context gathered from interviews
                      interviews:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              description: The interview
                            invited_email:
                              nullable: true
                              description: Who it was sent to; null for an unassigned slot
                              type: string
                            status:
                              type: string
                              description: Where the interview stands
                            context:
                              nullable: true
                              description: Who the person is, as given when assigning it
                              type: string
                            created_at:
                              type: string
                              description: When it was assigned
                            answers_written:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                              description: How many Policy answers this interview wrote
                          required:
                            - id
                            - invited_email
                            - status
                            - context
                            - created_at
                            - answers_written
                          additionalProperties: false
                        description: The automation's Policy interviews
                      pending_apply:
                        type: object
                        properties:
                          count:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                            description: How many items wait
                          fields:
                            type: array
                            items:
                              type: object
                              properties:
                                key:
                                  nullable: true
                                  description: The question's key
                                  type: string
                                question:
                                  type: string
                                  description: The question
                                value:
                                  nullable: true
                                  description: The answer to write in
                                  allOf:
                                    - $ref: >-
                                        #/components/schemas/AutomationPolicyJsonValue
                              required:
                                - key
                                - question
                                - value
                              additionalProperties: false
                            description: Structural answers waiting
                          notes:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  description: The note
                                title:
                                  type: string
                                  description: Its title
                              required:
                                - id
                                - title
                              additionalProperties: false
                            description: Accepted notes waiting
                        required:
                          - count
                          - fields
                          - notes
                        additionalProperties: false
                        description: >-
                          Structural answers and accepted notes not yet written
                          into an Agent build
                      links:
                        type: object
                        properties:
                          overview:
                            type: string
                            description: Root-relative path that opens this tab
                          process:
                            type: string
                            description: Root-relative path that opens this tab
                          past_runs:
                            description: >-
                              The Past Runs tab. A Module automation has none:
                              its Runs are on each Agent, opened from
                              agents_queues
                            type: string
                          requests:
                            description: >-
                              The Requests tab: the questions and approvals this
                              automation's runs raised, and answering them
                            type: string
                          policy:
                            type: string
                            description: Root-relative path that opens this tab
                          people:
                            description: >-
                              The People tab: the process roles, meaning who
                              runs, reviews and manages the work. Its own tab,
                              not part of Policy
                            type: string
                          agents_queues:
                            description: >-
                              The Automation tab: its Agents, Queues and the
                              flow between them
                            type: string
                          revisions:
                            description: >-
                              The Revisions tab. A Module automation has none:
                              say so, and do not point to another tab or to the
                              Agents for revision history
                            type: string
                          setup:
                            type: string
                            description: Root-relative path that opens this tab
                          setup_start:
                            type: string
                            description: Root-relative path that opens this tab
                          upload_files:
                            type: string
                            description: Root-relative path that opens this tab
                          interview:
                            type: string
                            description: Root-relative path that opens this tab
                          automation_proposal:
                            type: string
                            description: Root-relative path that opens this tab
                          dashboards:
                            type: array
                            items:
                              type: object
                              properties:
                                artifact_id:
                                  type: string
                                  format: uuid
                                  description: The dashboard
                                name:
                                  type: string
                                  description: The dashboard's tab label
                                link:
                                  type: string
                                  description: Root-relative path that opens this tab
                              required:
                                - artifact_id
                                - name
                                - link
                              additionalProperties: false
                            description: >-
                              One link per dashboard on this automation's tab
                              bar
                        required:
                          - dashboards
                        additionalProperties: false
                        description: Root-relative paths of the automation's tabs
                      urls:
                        type: object
                        properties:
                          overview:
                            type: string
                            description: Root-relative path that opens this tab
                          process:
                            type: string
                            description: Root-relative path that opens this tab
                          past_runs:
                            description: >-
                              The Past Runs tab. A Module automation has none:
                              its Runs are on each Agent, opened from
                              agents_queues
                            type: string
                          requests:
                            description: >-
                              The Requests tab: the questions and approvals this
                              automation's runs raised, and answering them
                            type: string
                          policy:
                            type: string
                            description: Root-relative path that opens this tab
                          people:
                            description: >-
                              The People tab: the process roles, meaning who
                              runs, reviews and manages the work. Its own tab,
                              not part of Policy
                            type: string
                          agents_queues:
                            description: >-
                              The Automation tab: its Agents, Queues and the
                              flow between them
                            type: string
                          revisions:
                            description: >-
                              The Revisions tab. A Module automation has none:
                              say so, and do not point to another tab or to the
                              Agents for revision history
                            type: string
                          setup:
                            type: string
                            description: Root-relative path that opens this tab
                          setup_start:
                            type: string
                            description: Root-relative path that opens this tab
                          upload_files:
                            type: string
                            description: Root-relative path that opens this tab
                          interview:
                            type: string
                            description: Root-relative path that opens this tab
                          automation_proposal:
                            type: string
                            description: Root-relative path that opens this tab
                          dashboards:
                            type: array
                            items:
                              type: object
                              properties:
                                artifact_id:
                                  type: string
                                  format: uuid
                                  description: The dashboard
                                name:
                                  type: string
                                  description: The dashboard's tab label
                                link:
                                  type: string
                                  description: Root-relative path that opens this tab
                              required:
                                - artifact_id
                                - name
                                - link
                              additionalProperties: false
                            description: >-
                              One link per dashboard on this automation's tab
                              bar
                        required:
                          - dashboards
                        additionalProperties: false
                        description: '`links` as full web-app URLs; give these to the user'
                    required:
                      - automation
                      - running
                      - sections
                      - counts
                      - pending_proposals
                      - context_notes
                      - interviews
                      - pending_apply
                      - links
                      - urls
                    additionalProperties: false
                    description: The automation's whole Policy
                required:
                  - policy
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '403':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
      security:
        - bearerAuth: []
components:
  schemas:
    AutomationPolicyJsonValue:
      anyOf:
        - type: string
          nullable: true
        - type: number
        - type: boolean
        - type: array
          items:
            $ref: '#/components/schemas/AutomationPolicyJsonValue'
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/AutomationPolicyJsonValue'
      nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication. Get your API key from the Duvo dashboard.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.