> ## 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, or to another item of the same array, is preserved. Each `set` entry names a `path`, a JSONPath declared in the queue's current Case schema, and the `value` to store there. A path is dotted object fields (`$.invoice.amount`) with optional array indices in brackets (`$.lines[0]` for a whole item, `$.lines[0].amount` for one field of it). An index must name an item that already exists; an out-of-range index or a non-array parent is refused, and a write never adds or removes items. 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 (`$.lines` beside `$.lines[0]`, or `$.lines[0]` beside `$.lines[0].amount`). An index names a position, so when the array can change between your read and your write, add `expect` entries that pin the item, such as its id field (`$.lines[0].id`): if any stored value differs, nothing is written and the response is a 409. 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, or to another item
        of the same array, is preserved. Each `set` entry names a `path`, a
        JSONPath declared in the queue's current Case schema, and the `value` to
        store there. A path is dotted object fields (`$.invoice.amount`) with
        optional array indices in brackets (`$.lines[0]` for a whole item,
        `$.lines[0].amount` for one field of it). An index must name an item
        that already exists; an out-of-range index or a non-array parent is
        refused, and a write never adds or removes items. 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
        (`$.lines` beside `$.lines[0]`, or `$.lines[0]` beside
        `$.lines[0].amount`). An index names a position, so when the array can
        change between your read and your write, add `expect` entries that pin
        the item, such as its id field (`$.lines[0].id`): if any stored value
        differs, nothing is written and the response is a 409. 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, starting at `$`: dotted
                          fields with optional array indices (e.g.
                          `$.invoice.amount` or `$.lines[0].amount`). Must be
                          declared in the queue's current Case schema, and an
                          index must name an existing item.
                      value:
                        $ref: '#/components/schemas/CaseJsonDataValueInput'
                    required:
                      - path
                      - value
                    additionalProperties: false
                  description: The fields to set, applied together (1 to 100).
                expect:
                  description: >-
                    Preconditions checked against the latest stored payload
                    before any field is set (up to 100). If one does not match,
                    nothing is written and the response is a 409. Use them to
                    make sure an array index still names the item you read.
                  maxItems: 100
                  type: array
                  items:
                    type: object
                    properties:
                      path:
                        type: string
                        description: >-
                          JSONPath of a stored value to check, in the same form
                          as a `set` path (e.g. `$.lines[0].id`). Must be
                          declared in the queue's current Case schema.
                      value:
                        $ref: '#/components/schemas/CaseJsonDataValueInput'
                    required:
                      - path
                      - value
                    additionalProperties: false
              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.