{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "ReviewDelivery": {
      "enum": [
        "inline",
        "detached"
      ],
      "type": "string"
    },
    "ReviewTarget": {
      "oneOf": [
        {
          "description": "Review the working tree: staged, unstaged, and untracked files.",
          "properties": {
            "type": {
              "enum": [
                "uncommittedChanges"
              ],
              "title": "UncommittedChangesReviewTargetType",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "title": "UncommittedChangesReviewTarget",
          "type": "object"
        },
        {
          "description": "Review changes between the current branch and the given base branch.",
          "properties": {
            "branch": {
              "type": "string"
            },
            "type": {
              "enum": [
                "baseBranch"
              ],
              "title": "BaseBranchReviewTargetType",
              "type": "string"
            }
          },
          "required": [
            "branch",
            "type"
          ],
          "title": "BaseBranchReviewTarget",
          "type": "object"
        },
        {
          "description": "Review the changes introduced by a specific commit.",
          "properties": {
            "sha": {
              "type": "string"
            },
            "title": {
              "description": "Optional human-readable label (e.g., commit subject) for UIs.",
              "type": [
                "string",
                "null"
              ]
            },
            "type": {
              "enum": [
                "commit"
              ],
              "title": "CommitReviewTargetType",
              "type": "string"
            }
          },
          "required": [
            "sha",
            "type"
          ],
          "title": "CommitReviewTarget",
          "type": "object"
        },
        {
          "description": "Arbitrary instructions, equivalent to the old free-form prompt.",
          "properties": {
            "instructions": {
              "type": "string"
            },
            "type": {
              "enum": [
                "custom"
              ],
              "title": "CustomReviewTargetType",
              "type": "string"
            }
          },
          "required": [
            "instructions",
            "type"
          ],
          "title": "CustomReviewTarget",
          "type": "object"
        }
      ]
    }
  },
  "properties": {
    "delivery": {
      "anyOf": [
        {
          "$ref": "#/definitions/ReviewDelivery"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Where to run the review: inline (default) on the current thread or detached on a new thread (returned in `reviewThreadId`)."
    },
    "target": {
      "$ref": "#/definitions/ReviewTarget"
    },
    "threadId": {
      "type": "string"
    }
  },
  "required": [
    "target",
    "threadId"
  ],
  "title": "ReviewStartParams",
  "type": "object"
}