> ## 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.

# Set Case Json Data Fields

> Set one or more fields of a typed case's structured `json_data` payload in one atomic write, leaving every other field as stored. Prefer this over `PATCH /cases/{case_id}` with a full `json_data` object when changing some fields: the write reads and locks the latest payload in the database, so a concurrent edit to another field is preserved. Each `set` entry names a `path`, a JSONPath in dotted form (`$.invoice.amount`) declared in the queue's current Case schema, and the `value` to store there; array indices are not supported. A `value` can be any JSON value, including an object for an object field. Paths must be distinct, and no path may sit inside another in the same request. The resulting payload is validated against the queue's current Case schema and the case is re-pinned to that schema version; if any entry is refused, nothing is written. A case without a structured payload yet must be given one with `PATCH /cases/{case_id}` first. Returns the updated case with its event history and approval batches.



## OpenAPI

````yaml https://api.duvo.ai/v2/documentation/mintlify.json patch /v2/cases/{case_id}/json-data
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/cases/{case_id}/json-data:
    patch:
      tags:
        - Cases
      summary: Set Case Json Data Fields
      description: >-
        Set one or more fields of a typed case's structured `json_data` payload
        in one atomic write, leaving every other field as stored. Prefer this
        over `PATCH /cases/{case_id}` with a full `json_data` object when
        changing some fields: the write reads and locks the latest payload in
        the database, so a concurrent edit to another field is preserved. Each
        `set` entry names a `path`, a JSONPath in dotted form
        (`$.invoice.amount`) declared in the queue's current Case schema, and
        the `value` to store there; array indices are not supported. A `value`
        can be any JSON value, including an object for an object field. Paths
        must be distinct, and no path may sit inside another in the same
        request. The resulting payload is validated against the queue's current
        Case schema and the case is re-pinned to that schema version; if any
        entry is refused, nothing is written. A case without a structured
        payload yet must be given one with `PATCH /cases/{case_id}` first.
        Returns the updated case with its event history and approval batches.
      operationId: setCaseJsonDataFields
      parameters:
        - schema:
            type: string
            format: uuid
          in: path
          name: case_id
          required: true
          description: The case's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                set:
                  minItems: 1
                  maxItems: 100
                  type: array
                  items:
                    type: object
                    properties:
                      path:
                        type: string
                        description: >-
                          JSONPath of the field to set, in dotted form starting
                          at `$` (e.g. `$.invoice.amount`). Must be declared in
                          the queue's current Case schema.
                      value:
                        $ref: '#/components/schemas/CaseJsonDataValueInput'
                    required:
                      - path
                      - value
                    additionalProperties: false
                  description: The fields to set, applied together (1 to 100).
              required:
                - set
              additionalProperties: false
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  case:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      queue_id:
                        type: string
                        format: uuid
                      title:
                        type: string
                      data:
                        type: string
                      json_data:
                        nullable: true
                        type: object
                        additionalProperties: {}
                      json_schema_id:
                        nullable: true
                        type: string
                        format: uuid
                      status:
                        type: string
                        enum:
                          - pending
                          - completed
                          - failed
                      priority:
                        type: string
                        enum:
                          - none
                          - medium
                          - high
                      display_status:
                        type: string
                        enum:
                          - pending
                          - in_progress
                          - needs_input
                          - postponed
                          - evaluating
                          - success
                          - issues
                          - completed
                          - failed
                          - canceled
                      outcome_source:
                        nullable: true
                        type: string
                        enum:
                          - system
                          - eval
                          - manual
                      outcome_severity:
                        nullable: true
                        type: string
                        enum:
                          - critical
                          - medium
                          - low
                      claimed_at:
                        type: string
                        nullable: true
                      claimed_by_run_id:
                        type: string
                        nullable: true
                      completed_at:
                        type: string
                        nullable: true
                      postponed_to:
                        type: string
                        nullable: true
                      created_at:
                        type: string
                      updated_at:
                        type: string
                      created_by_user_id:
                        nullable: true
                        type: string
                        format: uuid
                      created_by_user_name:
                        type: string
                        nullable: true
                      created_by_user_email:
                        type: string
                        nullable: true
                      agent_run_status:
                        type: string
                        nullable: true
                      agent_run_user_id:
                        nullable: true
                        type: string
                        format: uuid
                      pending_human_request_id:
                        nullable: true
                        type: string
                        format: uuid
                      pending_approval_batch_id:
                        nullable: true
                        type: string
                        format: uuid
                      pending_approval_assignee_user_ids:
                        type: array
                        items:
                          type: string
                          format: uuid
                      approval_approved_count:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      approval_rejected_count:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      eval_summary:
                        nullable: true
                        type: object
                        properties:
                          evaluationId:
                            type: string
                            format: uuid
                          passed:
                            type: number
                          total:
                            type: number
                          final_comment:
                            type: string
                          status:
                            type: string
                            enum:
                              - ready
                              - unavailable
                              - in_progress
                          severityCounts:
                            type: object
                            properties:
                              critical:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                              medium:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                              low:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                            required:
                              - critical
                              - medium
                              - low
                            additionalProperties: false
                        required:
                          - passed
                          - total
                          - status
                        additionalProperties: false
                      search_match_data_snippet:
                        type: object
                        properties:
                          before:
                            type: string
                          match:
                            type: string
                          after:
                            type: string
                        required:
                          - before
                          - match
                          - after
                        additionalProperties: false
                      labels:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                            key:
                              type: string
                            value:
                              type: string
                              minLength: 1
                            color_hue:
                              type: integer
                              minimum: 0
                              maximum: 360
                          required:
                            - id
                            - key
                            - value
                            - color_hue
                          additionalProperties: false
                    required:
                      - id
                      - queue_id
                      - title
                      - data
                      - status
                      - priority
                      - display_status
                      - claimed_at
                      - claimed_by_run_id
                      - completed_at
                      - postponed_to
                      - created_at
                      - updated_at
                      - created_by_user_id
                      - created_by_user_name
                      - created_by_user_email
                      - agent_run_status
                      - agent_run_user_id
                      - pending_human_request_id
                      - pending_approval_batch_id
                      - pending_approval_assignee_user_ids
                      - approval_approved_count
                      - approval_rejected_count
                      - labels
                    additionalProperties: false
                  events:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        case_queue_item_id:
                          type: string
                          format: uuid
                        agent_run_id:
                          nullable: true
                          type: string
                          format: uuid
                        human_request_id:
                          nullable: true
                          type: string
                          format: uuid
                        type:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        created_at:
                          type: string
                        agent_id:
                          nullable: true
                          type: string
                          format: uuid
                        agent_name:
                          type: string
                          nullable: true
                        user_id:
                          nullable: true
                          type: string
                          format: uuid
                        user_name:
                          type: string
                          nullable: true
                        user_email:
                          type: string
                          nullable: true
                        human_request_title:
                          type: string
                          nullable: true
                      required:
                        - id
                        - case_queue_item_id
                        - agent_run_id
                        - human_request_id
                        - type
                        - reason
                        - created_at
                        - agent_id
                        - agent_name
                        - user_id
                        - user_name
                        - user_email
                        - human_request_title
                      additionalProperties: false
                  approvalBatches:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        case_queue_item_id:
                          type: string
                          format: uuid
                        agent_run_id:
                          type: string
                          format: uuid
                        title:
                          type: string
                        created_at:
                          type: string
                        resolved_at:
                          type: string
                          nullable: true
                        cancelled_at:
                          type: string
                          nullable: true
                        cancellation_reason:
                          type: string
                          nullable: true
                        rows:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              assignee_user_id:
                                type: string
                                format: uuid
                              can_respond:
                                description: >-
                                  Whether the authenticated viewer can answer
                                  this pending case approval. Submission
                                  rechecks authorization.
                                type: boolean
                              assignee_name:
                                type: string
                                nullable: true
                              assignee_email:
                                type: string
                                nullable: true
                              prompt:
                                type: string
                              resolution:
                                description: >-
                                  Written resolution submitted with this
                                  decision.
                                nullable: true
                                type: string
                              decision:
                                nullable: true
                                type: string
                                enum:
                                  - approved
                                  - rejected
                              responded_at:
                                type: string
                                nullable: true
                              responded_by_user_id:
                                nullable: true
                                type: string
                                format: uuid
                              responded_by_name:
                                type: string
                                nullable: true
                              responded_by_email:
                                type: string
                                nullable: true
                              cancelled_at:
                                type: string
                                nullable: true
                              cancellation_reason:
                                type: string
                                nullable: true
                            required:
                              - id
                              - assignee_user_id
                              - assignee_name
                              - assignee_email
                              - prompt
                              - decision
                              - responded_at
                              - responded_by_user_id
                              - responded_by_name
                              - responded_by_email
                              - cancelled_at
                              - cancellation_reason
                            additionalProperties: false
                      required:
                        - id
                        - case_queue_item_id
                        - agent_run_id
                        - title
                        - created_at
                        - resolved_at
                        - cancelled_at
                        - cancellation_reason
                        - rows
                      additionalProperties: false
                  scopedApprovalBatches:
                    description: >-
                      Approval batches with Run references redacted for
                      Process-scoped access. When present, use this field
                      instead of approvalBatches, which is empty for these
                      callers.
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        case_queue_item_id:
                          type: string
                          format: uuid
                        agent_run_id:
                          type: string
                          nullable: true
                          enum:
                            - null
                        title:
                          type: string
                        created_at:
                          type: string
                        resolved_at:
                          type: string
                          nullable: true
                        cancelled_at:
                          type: string
                          nullable: true
                        cancellation_reason:
                          type: string
                          nullable: true
                        rows:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              assignee_user_id:
                                type: string
                                format: uuid
                              can_respond:
                                description: >-
                                  Whether the authenticated viewer can answer
                                  this pending case approval. Submission
                                  rechecks authorization.
                                type: boolean
                              assignee_name:
                                type: string
                                nullable: true
                              assignee_email:
                                type: string
                                nullable: true
                              prompt:
                                type: string
                              resolution:
                                description: >-
                                  Written resolution submitted with this
                                  decision.
                                nullable: true
                                type: string
                              decision:
                                nullable: true
                                type: string
                                enum:
                                  - approved
                                  - rejected
                              responded_at:
                                type: string
                                nullable: true
                              responded_by_user_id:
                                nullable: true
                                type: string
                                format: uuid
                              responded_by_name:
                                type: string
                                nullable: true
                              responded_by_email:
                                type: string
                                nullable: true
                              cancelled_at:
                                type: string
                                nullable: true
                              cancellation_reason:
                                type: string
                                nullable: true
                            required:
                              - id
                              - assignee_user_id
                              - assignee_name
                              - assignee_email
                              - prompt
                              - decision
                              - responded_at
                              - responded_by_user_id
                              - responded_by_name
                              - responded_by_email
                              - cancelled_at
                              - cancellation_reason
                            additionalProperties: false
                      required:
                        - id
                        - case_queue_item_id
                        - agent_run_id
                        - title
                        - created_at
                        - resolved_at
                        - cancelled_at
                        - cancellation_reason
                        - rows
                      additionalProperties: false
                  attachments:
                    default: []
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        case_id:
                          type: string
                          format: uuid
                        filename:
                          type: string
                        mime_type:
                          type: string
                        size_bytes:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        status:
                          type: string
                          enum:
                            - pending
                            - ready
                            - failed
                        failure_reason:
                          type: string
                          nullable: true
                        source:
                          type: string
                          enum:
                            - user
                            - agent
                        uploaded_by_user_id:
                          type: string
                          format: uuid
                        agent_run_id:
                          nullable: true
                          type: string
                          format: uuid
                        created_at:
                          type: string
                      required:
                        - id
                        - case_id
                        - filename
                        - mime_type
                        - size_bytes
                        - status
                        - failure_reason
                        - source
                        - uploaded_by_user_id
                        - agent_run_id
                        - created_at
                      additionalProperties: false
                required:
                  - case
                  - events
                  - approvalBatches
                  - attachments
                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
        '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
      security:
        - bearerAuth: []
components:
  schemas:
    CaseJsonDataValueInput:
      anyOf:
        - type: string
          nullable: true
        - type: number
        - type: boolean
        - type: array
          items:
            $ref: '#/components/schemas/CaseJsonDataValueInput'
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/CaseJsonDataValueInput'
      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.