{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Writes a dev.knotless.pull record in the account logged in to this appview's web pages, as `knotless pull create` does: asking to merge a branch of this repository or a fork into one of its branches, both of which must exist. Refused, with the template, when the repository has one at the base (see dev.knotless.getTemplate) and the body follows none of it. Requires the session cookie the pages' login sets.",
      "errors": [
        {
          "description": "No such repository.",
          "name": "NotFound"
        },
        {
          "description": "No account is logged in to the pages, or its session has ended.",
          "name": "AuthenticationRequired"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "base": {
              "description": "The branch to merge into.",
              "maxLength": 1024,
              "type": "string"
            },
            "body": {
              "description": "What it does and why, in Markdown.",
              "maxLength": 20000,
              "type": "string"
            },
            "branch": {
              "description": "The branch to bring in.",
              "maxLength": 1024,
              "type": "string"
            },
            "draft": {
              "description": "Open it as a draft, not ready to merge or queue. Not, when absent.",
              "type": "boolean"
            },
            "head": {
              "description": "The repository the branch is on: this one, or a fork.",
              "format": "at-uri",
              "type": "string"
            },
            "images": {
              "description": "Pictures uploaded with dev.knotless.uploadImage; those the body links to are attached.",
              "items": {
                "ref": "dev.knotless.defs#image",
                "type": "ref"
              },
              "maxLength": 32,
              "type": "array"
            },
            "labels": {
              "description": "Labels to put on it as it opens, as dev.knotless.labelItem would: refused, with nothing written, when one is not the repository's or not the account's to put on.",
              "items": {
                "ref": "dev.knotless.defs#labelName",
                "type": "ref"
              },
              "maxLength": 32,
              "type": "array"
            },
            "repo": {
              "description": "The repository to merge into: its dev.knotless.repo record, as dev.knotless.getRepo takes it.",
              "format": "at-uri",
              "type": "string"
            },
            "reviewers": {
              "description": "The accounts its author asks to review it, as its record names them; `requestedAt` is set as it is written.",
              "items": {
                "ref": "dev.knotless.pull#reviewer",
                "type": "ref"
              },
              "maxLength": 32,
              "type": "array"
            },
            "title": {
              "maxGraphemes": 300,
              "maxLength": 3000,
              "type": "string"
            }
          },
          "required": [
            "repo",
            "base",
            "head",
            "branch",
            "title"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "uri": {
              "description": "The dev.knotless.pull record written.",
              "format": "at-uri",
              "type": "string"
            }
          },
          "required": [
            "uri"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "description": "Opens a pull on a repository, as the account logged in to this appview's pages.",
  "id": "dev.knotless.createPull",
  "lexicon": 1
}
