{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "AbsolutePathBuf": {
      "description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.",
      "type": "string"
    },
    "AskForApproval": {
      "description": "Determines the conditions under which the user is consulted to approve running the command proposed by Codex.",
      "oneOf": [
        {
          "description": "Under this policy, only \"known safe\" commands—as determined by `is_safe_command()`—that **only read files** are auto‑approved. Everything else will ask the user to approve.",
          "enum": [
            "untrusted"
          ],
          "type": "string"
        },
        {
          "description": "*All* commands are auto‑approved, but they are expected to run inside a sandbox where network access is disabled and writes are confined to a specific set of paths. If the command fails, it will be escalated to the user to approve execution without a sandbox.",
          "enum": [
            "on-failure"
          ],
          "type": "string"
        },
        {
          "description": "The model decides when to ask the user for approval.",
          "enum": [
            "on-request"
          ],
          "type": "string"
        },
        {
          "description": "Never ask the user to approve commands. Failures are immediately returned to the model, and never escalated to the user for approval.",
          "enum": [
            "never"
          ],
          "type": "string"
        }
      ]
    },
    "InputItem": {
      "oneOf": [
        {
          "properties": {
            "data": {
              "properties": {
                "text": {
                  "type": "string"
                },
                "text_elements": {
                  "default": [],
                  "description": "UI-defined spans within `text` used to render or persist special elements.",
                  "items": {
                    "$ref": "#/definitions/V1TextElement"
                  },
                  "type": "array"
                }
              },
              "required": [
                "text"
              ],
              "type": "object"
            },
            "type": {
              "enum": [
                "text"
              ],
              "title": "TextInputItemType",
              "type": "string"
            }
          },
          "required": [
            "data",
            "type"
          ],
          "title": "TextInputItem",
          "type": "object"
        },
        {
          "properties": {
            "data": {
              "properties": {
                "image_url": {
                  "type": "string"
                }
              },
              "required": [
                "image_url"
              ],
              "type": "object"
            },
            "type": {
              "enum": [
                "image"
              ],
              "title": "ImageInputItemType",
              "type": "string"
            }
          },
          "required": [
            "data",
            "type"
          ],
          "title": "ImageInputItem",
          "type": "object"
        },
        {
          "properties": {
            "data": {
              "properties": {
                "path": {
                  "type": "string"
                }
              },
              "required": [
                "path"
              ],
              "type": "object"
            },
            "type": {
              "enum": [
                "localImage"
              ],
              "title": "LocalImageInputItemType",
              "type": "string"
            }
          },
          "required": [
            "data",
            "type"
          ],
          "title": "LocalImageInputItem",
          "type": "object"
        }
      ]
    },
    "NetworkAccess": {
      "description": "Represents whether outbound network access is available to the agent.",
      "enum": [
        "restricted",
        "enabled"
      ],
      "type": "string"
    },
    "ReasoningEffort": {
      "description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning",
      "enum": [
        "none",
        "minimal",
        "low",
        "medium",
        "high",
        "xhigh"
      ],
      "type": "string"
    },
    "ReasoningSummary": {
      "description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries",
      "oneOf": [
        {
          "enum": [
            "auto",
            "concise",
            "detailed"
          ],
          "type": "string"
        },
        {
          "description": "Option to disable reasoning summaries.",
          "enum": [
            "none"
          ],
          "type": "string"
        }
      ]
    },
    "SandboxPolicy": {
      "description": "Determines execution restrictions for model shell commands.",
      "oneOf": [
        {
          "description": "No restrictions whatsoever. Use with caution.",
          "properties": {
            "type": {
              "enum": [
                "danger-full-access"
              ],
              "title": "DangerFullAccessSandboxPolicyType",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "title": "DangerFullAccessSandboxPolicy",
          "type": "object"
        },
        {
          "description": "Read-only access to the entire file-system.",
          "properties": {
            "type": {
              "enum": [
                "read-only"
              ],
              "title": "ReadOnlySandboxPolicyType",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "title": "ReadOnlySandboxPolicy",
          "type": "object"
        },
        {
          "description": "Indicates the process is already in an external sandbox. Allows full disk access while honoring the provided network setting.",
          "properties": {
            "network_access": {
              "allOf": [
                {
                  "$ref": "#/definitions/NetworkAccess"
                }
              ],
              "default": "restricted",
              "description": "Whether the external sandbox permits outbound network traffic."
            },
            "type": {
              "enum": [
                "external-sandbox"
              ],
              "title": "ExternalSandboxSandboxPolicyType",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "title": "ExternalSandboxSandboxPolicy",
          "type": "object"
        },
        {
          "description": "Same as `ReadOnly` but additionally grants write access to the current working directory (\"workspace\").",
          "properties": {
            "exclude_slash_tmp": {
              "default": false,
              "description": "When set to `true`, will NOT include the `/tmp` among the default writable roots on UNIX. Defaults to `false`.",
              "type": "boolean"
            },
            "exclude_tmpdir_env_var": {
              "default": false,
              "description": "When set to `true`, will NOT include the per-user `TMPDIR` environment variable among the default writable roots. Defaults to `false`.",
              "type": "boolean"
            },
            "network_access": {
              "default": false,
              "description": "When set to `true`, outbound network access is allowed. `false` by default.",
              "type": "boolean"
            },
            "type": {
              "enum": [
                "workspace-write"
              ],
              "title": "WorkspaceWriteSandboxPolicyType",
              "type": "string"
            },
            "writable_roots": {
              "description": "Additional folders (beyond cwd and possibly TMPDIR) that should be writable from within the sandbox.",
              "items": {
                "$ref": "#/definitions/AbsolutePathBuf"
              },
              "type": "array"
            }
          },
          "required": [
            "type"
          ],
          "title": "WorkspaceWriteSandboxPolicy",
          "type": "object"
        }
      ]
    },
    "ThreadId": {
      "type": "string"
    },
    "V1ByteRange": {
      "properties": {
        "end": {
          "description": "End byte offset (exclusive) within the UTF-8 text buffer.",
          "format": "uint",
          "minimum": 0.0,
          "type": "integer"
        },
        "start": {
          "description": "Start byte offset (inclusive) within the UTF-8 text buffer.",
          "format": "uint",
          "minimum": 0.0,
          "type": "integer"
        }
      },
      "required": [
        "end",
        "start"
      ],
      "type": "object"
    },
    "V1TextElement": {
      "properties": {
        "byteRange": {
          "allOf": [
            {
              "$ref": "#/definitions/V1ByteRange"
            }
          ],
          "description": "Byte range in the parent `text` buffer that this element occupies."
        },
        "placeholder": {
          "description": "Optional human-readable placeholder for the element, displayed in the UI.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "byteRange"
      ],
      "type": "object"
    }
  },
  "properties": {
    "approvalPolicy": {
      "$ref": "#/definitions/AskForApproval"
    },
    "conversationId": {
      "$ref": "#/definitions/ThreadId"
    },
    "cwd": {
      "type": "string"
    },
    "effort": {
      "anyOf": [
        {
          "$ref": "#/definitions/ReasoningEffort"
        },
        {
          "type": "null"
        }
      ]
    },
    "items": {
      "items": {
        "$ref": "#/definitions/InputItem"
      },
      "type": "array"
    },
    "model": {
      "type": "string"
    },
    "outputSchema": {
      "description": "Optional JSON Schema used to constrain the final assistant message for this turn."
    },
    "sandboxPolicy": {
      "$ref": "#/definitions/SandboxPolicy"
    },
    "summary": {
      "$ref": "#/definitions/ReasoningSummary"
    }
  },
  "required": [
    "approvalPolicy",
    "conversationId",
    "cwd",
    "items",
    "model",
    "sandboxPolicy",
    "summary"
  ],
  "title": "SendUserTurnParams",
  "type": "object"
}