{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "api.bitbucket.org",
  "basePath": "/2.0",
  "info": {
    "contact": {
      "email": "support@bitbucket.org",
      "name": "Bitbucket Support",
      "url": "https://support.atlassian.com/bitbucket"
    },
    "description": "Code against the Bitbucket API to automate simple tasks, embed Bitbucket data into your own site, build mobile or desktop apps, or even add custom UI add-ons into Bitbucket itself using the Connect framework.",
    "termsOfService": "https://www.atlassian.com/legal/customer-agreement",
    "title": "Bitbucket",
    "version": "2.0",
    "x-apisguru-categories": [
      "developer_tools",
      "collaboration"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_d301sr5gafysq2.cloudfront.net_0c55837759e5_img_homepage_bitbucket-logo-blue.svg"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://bitbucket.org/api/swagger.json",
        "version": "2.0"
      }
    ],
    "x-preferred": true,
    "x-providerName": "bitbucket.org",
    "x-tags": [
      "code repository",
      "code collaboration",
      "git"
    ]
  },
  "externalDocs": {
    "url": "https://bitbucket.org/api"
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "api_key": {
      "description": "API Keys can be used as Basic HTTP Authentication credentials and provide a substitute for the account's actual username and password. API Keys are only available to team accounts and there is only 1 key per account. API Keys do not support scopes and have therefore access to all contents of the account.",
      "in": "header",
      "name": "Authorization",
      "type": "apiKey"
    },
    "basic": {
      "description": "Basic HTTP Authentication as per [RFC-2617](https://tools.ietf.org/html/rfc2617) (Digest not supported). Note that Basic Auth with username and password as credentials is only available on accounts that have 2-factor-auth / 2-step-verification disabled. If you use 2fa, you should authenticate using OAuth2 instead.",
      "type": "basic"
    },
    "oauth2": {
      "authorizationUrl": "https://bitbucket.org/site/oauth2/authorize",
      "description": "OAuth 2 as per [RFC-6749](https://tools.ietf.org/html/rfc6749).",
      "flow": "accessCode",
      "scopes": {
        "account": "Read your account information",
        "account:write": "Read and modify your account information",
        "email": "Read your account's primary email address",
        "issue": "Read your repositories' issues",
        "issue:write": "Read and modify your repositories' issues",
        "pipeline": "Access your repositories' build pipelines",
        "pipeline:variable": "Access your repositories' build pipelines and configure their variables",
        "pipeline:write": "Access and rerun your repositories' build pipelines",
        "project": "Read your team's project settings and read repositories contained within your team's projects",
        "project:write": "Read and modify your team's project settings, and read and transfer repositories within your team's projects",
        "pullrequest": "Read your repositories and their pull requests",
        "pullrequest:write": "Read and modify your repositories and their pull requests",
        "repository": "Read your repositories",
        "repository:admin": "Administer your repositories",
        "repository:delete": "Delete your repositories",
        "repository:write": "Read and modify your repositories",
        "snippet": "Read your snippets",
        "snippet:write": "Read and modify your snippets",
        "team": "Read your team membership information",
        "team:write": "Read and modify your team membership information",
        "webhook": "Read and modify your repositories' webhooks",
        "wiki": "Read and modify your repositories' wikis"
      },
      "tokenUrl": "https://bitbucket.org/site/oauth2/access_token",
      "type": "oauth2"
    }
  },
  "tags": [
    {
      "description": "",
      "name": "users"
    },
    {
      "description": "",
      "name": "teams"
    },
    {
      "description": "",
      "name": "repositories"
    },
    {
      "description": "Browse the source code in the repository and\n                              create new commits by uploading.",
      "name": "source"
    },
    {
      "description": "",
      "name": "refs"
    },
    {
      "description": "",
      "name": "commits"
    },
    {
      "description": "",
      "name": "pullrequests"
    },
    {
      "description": "The issue resources provide functionality for getting information on\nissues in an issue tracker, creating new issues, updating them and deleting\nthem.\n\nYou can access public issues without authentication, but you can't gain access\nto private repositories' issues. By authenticating, you will get the ability\nto create issues, as well as access to updating data or deleting issues you\nhave access to.",
      "name": "issue_tracker"
    },
    {
      "description": "",
      "name": "wiki"
    },
    {
      "description": "",
      "name": "downloads"
    },
    {
      "description": "",
      "name": "snippets"
    },
    {
      "description": "Webhooks provide a way to configure Bitbucket Cloud to make requests to\nyour server (or another external service) whenever certain events occur in\nBitbucket Cloud.\n\nA webhook consists of:\n\n* A subject -- The resource that generates the events. Currently, this resource\n  is the repository, user account, or team where you create the webhook.\n* One or more event -- The default event is a repository push, but you can\n  select multiple events that can trigger the webhook.\n* A URL -- The endpoint where you want Bitbucket to send the event payloads\n  when a matching event happens.\n\nThere are two parts to getting a webhook to work: creating the webhook and\ntriggering the webhook. After you create a webhook for an event, every time\nthat event occurs, Bitbucket sends a payload request that describes the event\nto the specified URL. Thus, you can think of webhooks as a kind of\nnotification system.\n\nUse webhooks to integrate applications with Bitbucket Cloud. The following\nuse cases provides examples of when you would want to use webhooks:\n\n* Every time a user pushes commits in a repository, you may want to notify\n  your CI server to start a build.\n* Every time a user pushes commits or creates a pull request, you may want to\n  display a notification in your application.\n",
      "name": "webhooks"
    },
    {
      "description": "Commit statuses provide a way to tag commits with meta data,\nlike automated build results.\n",
      "name": "commitstatuses"
    },
    {
      "description": "Repository owners and administrators can set branch management\nrules on a repository that control what can be pushed by whom.\nThrough these rules, you can enforce a project or team\nworkflow. For example, owners or administrators can:\n\n* Limit push powers\n* Prevent branch (bookmark) deletion\n* Prevent history re-writes (Git only)\n",
      "name": "branchrestrictions"
    },
    {
      "description": "Bitbucket Cloud projects make it easier for teams to focus on\na goal, product, or process by organizing their repositories.\n",
      "name": "projects"
    },
    {
      "description": "Bitbucket Pipelines brings continuous delivery to Bitbucket\nCloud, empowering teams with full branching to deployment\nvisibility and faster feedback loops.\n",
      "name": "pipelines"
    }
  ],
  "paths": {
    "/addon": {
      "delete": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "parameters": [],
      "put": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      }
    },
    "/addon/linkers": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "parameters": []
    },
    "/addon/linkers/{linker_key}": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "linker_key",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/addon/linkers/{linker_key}/values": {
      "delete": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "linker_key",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "put": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      }
    },
    "/addon/linkers/{linker_key}/values/": {
      "delete": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "addon"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "linker_key",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/hook_events": {
      "get": {
        "description": "Returns the webhook resource or subject types on which webhooks can\nbe registered.\n\nEach resource/subject type contains an `events` link that returns the\npaginated list of specific events each individual subject type can\nemit.\n\nThis endpoint is publicly accessible and does not require\nauthentication or scopes.\n\nExample:\n\n```\n$ curl https://api.bitbucket.org/2.0/hook_events\n\n{\n    \"repository\": {\n        \"links\": {\n            \"events\": {\n                \"href\": \"https://api.bitbucket.org/2.0/hook_events/repository\"\n            }\n        }\n    },\n    \"team\": {\n        \"links\": {\n            \"events\": {\n                \"href\": \"https://api.bitbucket.org/2.0/hook_events/team\"\n            }\n        }\n    },\n    \"user\": {\n        \"links\": {\n            \"events\": {\n                \"href\": \"https://api.bitbucket.org/2.0/hook_events/user\"\n            }\n        }\n    }\n}\n```",
        "parameters": [],
        "responses": {
          "200": {
            "description": "A mapping of resource/subject types pointing to their individual event types.",
            "schema": {
              "$ref": "#/definitions/subject_types"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "webhooks"
        ]
      },
      "parameters": []
    },
    "/hook_events/{subject_type}": {
      "get": {
        "description": "Returns a paginated list of all valid webhook events for the\nspecified entity.\n\nThis is public data that does not require any scopes or authentication.\n\nExample:\n\nNOTE: The following example is a truncated response object for the `team` `subject_type`.\nWe return the same structure for the other `subject_type` objects.\n\n```\n$ curl https://api.bitbucket.org/2.0/hook_events/team\n{\n    \"page\": 1,\n    \"pagelen\": 30,\n    \"size\": 21,\n    \"values\": [\n        {\n            \"category\": \"Repository\",\n            \"description\": \"Whenever a repository push occurs\",\n            \"event\": \"repo:push\",\n            \"label\": \"Push\"\n        },\n        {\n            \"category\": \"Repository\",\n            \"description\": \"Whenever a repository fork occurs\",\n            \"event\": \"repo:fork\",\n            \"label\": \"Fork\"\n        },\n        ...\n        {\n            \"category\": \"Repository\",\n            \"description\": \"Whenever a repository import occurs\",\n            \"event\": \"repo:imported\",\n            \"label\": \"Import\"\n        }\n    ]\n}\n```",
        "parameters": [
          {
            "description": "A resource or subject type.",
            "enum": [
              "user",
              "repository",
              "team"
            ],
            "in": "path",
            "name": "subject_type",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of webhook types available to subscribe on.",
            "schema": {
              "$ref": "#/definitions/paginated_hook_events"
            }
          },
          "404": {
            "description": "If an invalid `{subject_type}` value was specified.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "webhooks"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "subject_type",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories": {
      "get": {
        "description": "Returns a paginated list of all public repositories.\n\nThis endpoint also supports filtering and sorting of the results. See\n[filtering and sorting](../meta/filtering) for more details.",
        "parameters": [
          {
            "description": "Filter the results to include only repositories create on or\nafter this [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601)\n timestamp. Example: `YYYY-MM-DDTHH:mm:ss.sssZ`",
            "in": "query",
            "name": "after",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "All public repositories.",
            "schema": {
              "$ref": "#/definitions/paginated_repositories"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      },
      "parameters": []
    },
    "/repositories/{username}": {
      "get": {
        "description": "Returns a paginated list of all repositories owned by the specified\naccount or UUID.\n\nThe result can be narrowed down based on the authenticated user's role.\n\nE.g. with `?role=contributor`, only those repositories that the\nauthenticated user has write access to are returned (this includes any\nrepo the user is an admin on, as that implies write access).\n\nThis endpoint also supports filtering and sorting of the results. See\n[filtering and sorting](../../meta/filtering) for more details.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "\nFilters the result based on the authenticated user's role on each repository.\n\n* **member**: returns repositories to which the user has explicit read access\n* **contributor**: returns repositories to which the user has explicit write access\n* **admin**: returns repositories to which the user has explicit administrator access\n* **owner**: returns all repositories owned by the current user\n",
            "enum": [
              "admin",
              "contributor",
              "member",
              "owner"
            ],
            "in": "query",
            "name": "role",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The repositories owned by the specified account.",
            "schema": {
              "$ref": "#/definitions/paginated_repositories"
            }
          },
          "404": {
            "description": "If the specified account does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}": {
      "delete": {
        "description": "Deletes the repository. This is an irreversible operation.\n\nThis does not affect its forks.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Indicates successful deletion."
          },
          "403": {
            "description": "If the caller either does not have admin access to the repository, or the repository is set to read-only.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:delete"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      },
      "get": {
        "description": "Returns the object describing this repository.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The repository object.",
            "schema": {
              "$ref": "#/definitions/repository"
            }
          },
          "403": {
            "description": "If the repository is private and the authenticated user does not have access to it.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If no repository exists at this location.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new repository.\n\nNote: In order to set the project for the newly created repository,\npass in either the project key or the project UUID as part of the\nrequest body as shown in the examples below:\n\n```\n$ curl -X POST -H \"Content-Type: application/json\" -d '{\n    \"scm\": \"git\",\n    \"project\": {\n        \"key\": \"MARS\"\n    }\n}' https://api.bitbucket.org/2.0/repositories/teamsinspace/hablanding\n```\n\nor\n\n```\n$ curl -X POST -H \"Content-Type: application/json\" -d '{\n    \"scm\": \"git\",\n    \"project\": {\n        \"key\": \"{ba516952-992a-4c2d-acbd-17d502922f96}\"\n    }\n}' https://api.bitbucket.org/2.0/repositories/teamsinspace/hablanding\n```\n\nThe project must only be assigned for repositories belonging to a team.\nIf the repository owner is a team and the project is not provided, the\nrepository is automatically assigned to the oldest project in the team.\n\nNote: In the examples above, the username `teamsinspace`,\nand/or the repository name `hablanding` can be replaced by UUIDs.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository that is to be created. Note that most object elements are optional. Elements \"owner\" and \"full_name\" are ignored as the URL implies them.",
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/repository"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The newly created repository.",
            "schema": {
              "$ref": "#/definitions/repository"
            }
          },
          "400": {
            "description": "If the input document was invalid, or if the caller lacks the privilege to create repositories under the targeted account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "If the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      },
      "put": {
        "description": "Since this endpoint can be used to both update and to create a\nrepository, the request body depends on the intent.\n\n### Creation\n\nSee the POST documentation for the repository endpoint for an example\nof the request body.\n\n### Update\n\nNote: Changing the `name` of the repository will cause the location to\nbe changed. This is because the URL of the repo is derived from the\nname (a process called slugification). In such a scenario, it is\npossible for the request to fail if the newly created slug conflicts\nwith an existing repository's slug. But if there is no conflict,\nthe new location will be returned in the `Location` header of the\nresponse.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository that is to be updated.\n\nNote that the elements \"owner\" and \"full_name\" are ignored since the\nURL implies them.\n",
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/repository"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The existing repository has been updated",
            "headers": {
              "Location": {
                "description": "The location of the repository. This header is only\nprovided when the repository's name is changed.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/repository"
            }
          },
          "201": {
            "description": "A new repository has been created",
            "headers": {
              "Location": {
                "description": "The location of the newly created repository",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/repository"
            }
          },
          "400": {
            "description": "If the input document was invalid, or if the caller lacks the privilege to create repositories under the targeted account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "If the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/branch-restrictions": {
      "get": {
        "description": "Returns a paginated list of all branch restrictions on the\nrepository.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "A paginated list of branch restrictions",
            "schema": {
              "$ref": "#/definitions/paginated_branchrestrictions"
            }
          },
          "401": {
            "description": "If the request was not authenticated",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If the authenticated user does not have admin access to the repository",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "branchrestrictions"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new branch restriction rule for a repository.\n\n`kind` describes what will be restricted. Allowed values are: `push`,\n`force`, `delete`, and `restrict_merges`.\n\nDifferent kinds of branch restrictions have different requirements:\n\n* `push` and `restrict_merges` require `users` and `groups` to be\n  specified. Empty lists are allowed, in which case permission is\n  denied for everybody.\n* `force` can not be specified in a Mercurial repository.\n\n`pattern` is used to determine which branches will be restricted.\n\nA `'*'` in `pattern` will expand to match zero or more characters, and\nevery other character matches itself. For example, `'foo*'` will match\n`'foo'` and `'foobar'`, but not `'barfoo'`. `'*'` will match all\nbranches.\n\n`users` and `groups` are lists of user names and group names.\n\n`kind` and `pattern` must be unique within a repository; adding new\nusers or groups to an existing restriction should be done via `PUT`.\n\nNote that branch restrictions with overlapping patterns are allowed,\nbut the resulting behavior may be surprising.",
        "parameters": [
          {
            "description": "The new rule",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/branchrestriction"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "A paginated list of branch restrictions",
            "schema": {
              "$ref": "#/definitions/branchrestriction"
            }
          },
          "401": {
            "description": "If the request was not authenticated",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If the authenticated user does not have admin access to the repository",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "branchrestrictions"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/branch-restrictions/{id}": {
      "delete": {
        "description": "Deletes an existing branch restriction rule.",
        "parameters": [
          {
            "description": "The restriction rule's id",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "401": {
            "description": "If the request was not authenticated",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If the authenticated user does not have admin access to the repository",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository or branch restriction id does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "branchrestrictions"
        ]
      },
      "get": {
        "description": "Returns a specific branch restriction rule.",
        "parameters": [
          {
            "description": "The restriction rule's id",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The branch restriction rule",
            "schema": {
              "$ref": "#/definitions/branchrestriction"
            }
          },
          "401": {
            "description": "If the request was not authenticated",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If the authenticated user does not have admin access to the repository",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository or branch restriction id does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "branchrestrictions"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Updates an existing branch restriction rule.\n\nFields not present in the request body are ignored.\n\nSee [`POST`](../../branch-restrictions#post) for details.",
        "parameters": [
          {
            "description": "The restriction rule's id",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "The new version of the existing rule",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/branchrestriction"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The updated branch restriction rule",
            "schema": {
              "$ref": "#/definitions/branchrestriction"
            }
          },
          "401": {
            "description": "If the request was not authenticated",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If the authenticated user does not have admin access to the repository",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository or branch restriction id does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "branchrestrictions"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/commit/{node}/approve": {
      "delete": {
        "description": "Redact the authenticated user's approval of the specified commit.\n\nThis operation is only available to users that have explicit access to\nthe repository. In contrast, just the fact that a repository is\npublicly accessible to users does not give them the ability to approve\ncommits.",
        "parameters": [
          {
            "description": "The commit's SHA1.",
            "in": "path",
            "name": "node",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "An empty response indicating the authenticated user's approval has been withdrawn."
          },
          "404": {
            "description": "If the specified commit, or the repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "node",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Approve the specified commit as the authenticated user.\n\nThis operation is only available to users that have explicit access to\nthe repository. In contrast, just the fact that a repository is\npublicly accessible to users does not give them the ability to approve\ncommits.",
        "parameters": [
          {
            "description": "The commit's SHA1.",
            "in": "path",
            "name": "node",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The `participant` object recording that the authenticated user approved the commit.",
            "schema": {
              "$ref": "#/definitions/participant"
            }
          },
          "404": {
            "description": "If the specified commit, or the repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/commit/{node}/statuses": {
      "get": {
        "description": "Returns all statuses (e.g. build results) for a specific commit.",
        "parameters": [
          {
            "description": "The commit's SHA1",
            "in": "path",
            "name": "node",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of all commit statuses for this commit.",
            "schema": {
              "$ref": "#/definitions/paginated_commitstatuses"
            }
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the repository or commit does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "commitstatuses"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "node",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/commit/{node}/statuses/build": {
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "node",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new build status against the specified commit.\n\nIf the specified key already exists, the existing status object will\nbe overwritten.\n\nWhen creating a new commit status, you can use a URI template for the URL.\nTemplates are URLs that contain variable names that Bitbucket will\nevaluate at runtime whenever the URL is displayed anywhere similar to\nparameter substitution in\n[Bitbucket Connect](https://developer.atlassian.com/bitbucket/concepts/context-parameters.html).\nFor example, one could use `https://foo.com/builds/{repository.full_name}`\nwhich Bitbucket will turn into `https://foo.com/builds/foo/bar` at render time.\nThe context variables available are `repository` and `commit`.",
        "parameters": [
          {
            "description": "The commit's SHA1",
            "in": "path",
            "name": "node",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "201": {
            "description": "The newly created build status object.",
            "schema": {
              "$ref": "#/definitions/commitstatus"
            }
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the repository, commit, or build status key does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "commitstatuses"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/commit/{node}/statuses/build/{key}": {
      "get": {
        "description": "Returns the specified build status for a commit.",
        "parameters": [
          {
            "description": "The commit's SHA1",
            "in": "path",
            "name": "node",
            "required": true,
            "type": "string"
          },
          {
            "description": "The build status' unique key",
            "in": "path",
            "name": "key",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The build status object with the specified key.",
            "schema": {
              "$ref": "#/definitions/commitstatus"
            }
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the repository, commit, or build status key does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "commitstatuses"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "node",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "key",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Used to update the current status of a build status object on the\nspecific commit.\n\nThis operation can also be used to change other properties of the\nbuild status:\n\n* `state`\n* `name`\n* `description`\n* `url`\n* `refname`\n\nThe `key` cannot be changed.",
        "parameters": [
          {
            "description": "The commit's SHA1",
            "in": "path",
            "name": "node",
            "required": true,
            "type": "string"
          },
          {
            "description": "The commit status' unique key",
            "in": "path",
            "name": "key",
            "required": true,
            "type": "string"
          },
          {
            "description": "The updated build status object",
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/commitstatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The updated build status object.",
            "schema": {
              "$ref": "#/definitions/commitstatus"
            }
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the repository or build does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "commitstatuses"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/commit/{revision}": {
      "get": {
        "description": "Returns the specified commit.",
        "parameters": [
          {
            "description": "The commit's SHA1.",
            "in": "path",
            "name": "revision",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The commit object",
            "schema": {
              "$ref": "#/definitions/commit"
            }
          },
          "404": {
            "description": "If the specified commit or repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "revision",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/commit/{sha}/comments": {
      "get": {
        "description": "Returns the commit's comments.\n\nThis includes both global and inline comments.\n\nThe default sorting is oldest to newest and can be overridden with\nthe `sort` query parameter.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "sha",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/commit/{sha}/comments/{comment_id}": {
      "get": {
        "description": "Returns the specified commit comment.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "sha",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "comment_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/commits": {
      "get": {
        "description": "These are the repository's commits. They are paginated and returned\nin reverse chronological order, similar to the output of `git log` and\n`hg log`. Like these tools, the DAG can be filtered.\n\n## GET /repositories/{username}/{repo_slug}/commits/\n\nReturns all commits in the repo in topological order (newest commit\nfirst). All branches and tags are included (similar to\n`git log --all` and `hg log`).\n\n## GET /repositories/{username}/{repo_slug}/commits/master\n\nReturns all commits on rev `master` (similar to `git log master`,\n`hg log master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/dev?exclude=master\n\nReturns all commits on ref `dev`, except those that are reachable on\n`master` (similar to `git log dev ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?exclude=master\n\nReturns all commits in the repo that are not on master\n(similar to `git log --all ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?include=foo&include=bar&exclude=fu&exclude=fubar\n\nReturns all commits that are on refs `foo` or `bar`, but not on `fu` or\n`fubar` (similar to `git log foo bar ^fu ^fubar`).\n\nBecause the response could include a very large number of commits, it\nis paginated. Follow the 'next' link in the response to navigate to the\nnext page of commits. As with other paginated resources, do not\nconstruct your own links.\n\nWhen the include and exclude parameters are more than can fit in a\nquery string, clients can use a `x-www-form-urlencoded` POST instead.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Identical to `GET /repositories/{username}/{repo_slug}/commits`,\nexcept that POST allows clients to place the include and exclude\nparameters in the request body to avoid URL length issues.\n\n**Note that this resource does NOT support new commit creation.**",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/commits/{revision}": {
      "get": {
        "description": "These are the repository's commits. They are paginated and returned\nin reverse chronological order, similar to the output of `git log` and\n`hg log`. Like these tools, the DAG can be filtered.\n\n## GET /repositories/{username}/{repo_slug}/commits/\n\nReturns all commits in the repo in topological order (newest commit\nfirst). All branches and tags are included (similar to\n`git log --all` and `hg log`).\n\n## GET /repositories/{username}/{repo_slug}/commits/master\n\nReturns all commits on rev `master` (similar to `git log master`,\n`hg log master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/dev?exclude=master\n\nReturns all commits on ref `dev`, except those that are reachable on\n`master` (similar to `git log dev ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?exclude=master\n\nReturns all commits in the repo that are not on master\n(similar to `git log --all ^master`).\n\n## GET /repositories/{username}/{repo_slug}/commits/?include=foo&include=bar&exclude=fu&exclude=fubar\n\nReturns all commits that are on refs `foo` or `bar`, but not on `fu` or\n`fubar` (similar to `git log foo bar ^fu ^fubar`).\n\nBecause the response could include a very large number of commits, it\nis paginated. Follow the 'next' link in the response to navigate to the\nnext page of commits. As with other paginated resources, do not\nconstruct your own links.\n\nWhen the include and exclude parameters are more than can fit in a\nquery string, clients can use a `x-www-form-urlencoded` POST instead.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "revision",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Identical to `GET /repositories/{username}/{repo_slug}/commits`,\nexcept that POST allows clients to place the include and exclude\nparameters in the request body to avoid URL length issues.\n\n**Note that this resource does NOT support new commit creation.**",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/components": {
      "get": {
        "description": "Returns the components that have been defined in the issue tracker.\n\nThis resource is only available on repositories that have the issue\ntracker enabled.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The components that have been defined in the issue tracker.",
            "schema": {
              "$ref": "#/definitions/paginated_components"
            }
          },
          "404": {
            "description": "If the specified repository does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/components/{component_id}": {
      "get": {
        "description": "Returns the specified issue tracker component object.",
        "parameters": [
          {
            "description": "The component's id",
            "in": "path",
            "name": "component_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "The specified component object.",
            "schema": {
              "$ref": "#/definitions/component"
            }
          },
          "404": {
            "description": "If the specified repository or component does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "component_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/default-reviewers": {
      "get": {
        "description": "Returns the repository's default reviewers.\n\nThese are the users that are automatically added as reviewers on every\nnew pull request that is created.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The paginated list of default reviewers"
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/default-reviewers/{target_username}": {
      "delete": {
        "description": "Removes a default reviewer from the repository.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "get": {
        "description": "Returns the specified reviewer.\n\nThis can be used to test whether a user is among the repository's\ndefault reviewers list. A 404 indicates that that specified user is not\na default reviewer.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "target_username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Adds the specified user to the repository's list of default\nreviewers.\n\nThis method is idempotent. Adding a user a second time has no effect.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:admin"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/diff/{spec}": {
      "get": {
        "description": "Produces a raw, git-style diff for either a single commit (diffed\nagainst its first parent), or a revspec of 2 commits (e.g.\n`3a8b42..9ff173` where the first commit represents the source and the\nsecond commit the destination).\n\nIn case of the latter (diffing a revspec), a 3-way diff, or merge diff,\nis computed. This shows the changes introduced by the left branch\n(`3a8b42` in our example) as compared againt the right branch\n(`9ff173`).\n\nThis is equivalent to merging the left branch into the right branch and\nthen computing the diff of the merge commit against its first parent\n(the right branch). This follows the same behavior as pull requests\nthat also show this style of 3-way, or merge diff.\n\nWhile similar to patches, diffs:\n\n* Don't have a commit header (username, commit message, etc)\n* Support the optional `path=foo/bar.py` query param to filter\n  the diff to just that one file diff\n\nThe raw diff is returned as-is, in whatever encoding the files in the\nrepository use. It is not decoded into unicode. As such, the\ncontent-type is `text/plain`.",
        "parameters": [
          {
            "description": "Generate diffs with <n> lines of context instead of the usual three",
            "in": "query",
            "name": "context",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Limit the diff to a single file",
            "in": "query",
            "name": "path",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The raw diff"
          },
          "555": {
            "description": "If the diff was too large and timed out.\n\nSince this endpoint does not employ any form of pagination, but\ninstead returns the diff as a single document, it can run into\ntrouble on very large diffs. If Bitbucket times out in cases\nlike these, a 555 status code is returned.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "spec",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/downloads": {
      "get": {
        "description": "Returns a list of download links associated with the repository.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "downloads"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Upload new download artifacts.\n\nTo upload files, perform a `multipart/form-data` POST containing one\nor more `files` fields:\n\n    $ echo Hello World > hello.txt\n    $ curl -s -u evzijst -X POST https://api.bitbucket.org/2.0/repositories/evzijst/git-tests/downloads -F files=@hello.txt\n\nWhen a file is uploaded with the same name as an existing artifact,\nthen the existing file will be replaced.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "downloads"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/downloads/{filename}": {
      "delete": {
        "description": "Deletes the specified download artifact from the repository.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "downloads"
        ]
      },
      "get": {
        "description": "Return a redirect to the contents of a download artifact.\n\nThis endpoint returns the actual file contents and not the artifact's\nmetadata.\n\n    $ curl -s -L https://api.bitbucket.org/2.0/repositories/evzijst/git-tests/downloads/hello.txt\n    Hello World",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "downloads"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "filename",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/forks": {
      "get": {
        "description": "Returns a paginated list of all the forks of the specified\nrepository.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "All forks.",
            "schema": {
              "$ref": "#/definitions/paginated_repositories"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/hooks": {
      "get": {
        "description": "Returns a paginated list of webhooks installed on this repository.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The paginated list of installed webhooks.",
            "schema": {
              "$ref": "#/definitions/paginated_webhook_subscriptions"
            }
          },
          "403": {
            "description": "If the authenticated user does not have permission to access the webhooks.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "webhooks"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new webhook on the specified repository.\n\nExample:\n\n```\n$ curl -X POST -u credentials -H 'Content-Type: application/json'           https://api.bitbucket.org/2.0/repositories/username/slug/hooks           -d '\n    {\n      \"description\": \"Webhook Description\",\n      \"url\": \"https://example.com/\",\n      \"active\": true,\n      \"events\": [\n        \"repo:push\",\n        \"issue:created\",\n        \"issue:updated\"\n      ]\n    }'\n```\n\nNote that this call requires the webhook scope, as well as any scope\nthat applies to the events that the webhook subscribes to. In the\nexample above that means: `webhook`, `repository` and `issue`.\n\nAlso note that the `url` must properly resolve and cannot be an\ninternal, non-routed address.",
        "parameters": [],
        "responses": {
          "201": {
            "description": "If the webhook was registered successfully.",
            "headers": {
              "Location": {
                "description": "The URL of new newly created webhook.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "403": {
            "description": "If the authenticated user does not have permission to install webhooks on the specified repository.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "webhooks"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/hooks/{uid}": {
      "delete": {
        "description": "Deletes the specified webhook subscription from the given\nrepository.",
        "parameters": [
          {
            "description": "The installed webhook's id",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "When the webhook was deleted successfully"
          },
          "403": {
            "description": "If the authenticated user does not have permission to delete the webhook.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the webhook or repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "webhooks"
        ]
      },
      "get": {
        "description": "Returns the webhook with the specified id installed on the specified\nrepository.",
        "parameters": [
          {
            "description": "The installed webhook's id.",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The webhook subscription object.",
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "404": {
            "description": "If the webhook or repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "webhooks"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "uid",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Updates the specified webhook subscription.\n\nThe following properties can be mutated:\n\n* `description`\n* `url`\n* `active`\n* `events`",
        "parameters": [
          {
            "description": "The installed webhook's id",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The webhook subscription object.",
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "403": {
            "description": "If the authenticated user does not have permission to update the webhook.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the webhook or repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "webhooks"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/issues": {
      "get": {
        "description": "Returns the issues in the issue tracker.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "A paginated list of the issues matching any filter criteria that were provided.",
            "schema": {
              "$ref": "#/definitions/paginated_issues"
            }
          },
          "404": {
            "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new issue.\n\nThis call requires authentication. Private repositories or private\nissue trackers require the caller to authenticate with an account that\nhas appropriate authorisation.\n\nThe authenticated user is used for the issue's `reporter` field.",
        "parameters": [
          {
            "description": "The new issue. Note that the only required element is `title`. All other elements can be omitted from the body.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/issue"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The newly created issue.",
            "headers": {
              "Location": {
                "description": "The (absolute) URL of the newly created issue.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/issue"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "When the authenticated user lacks the privilege to create issues in the issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/issues/{issue_id}": {
      "delete": {
        "description": "Deletes the specified issue. This requires write access to the\nrepository.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The issue object.",
            "schema": {
              "$ref": "#/definitions/issue"
            }
          },
          "403": {
            "description": "When the authenticated user lacks isn't authorized to delete the issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "get": {
        "description": "Returns the specified issue.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The issue object.",
            "schema": {
              "$ref": "#/definitions/issue"
            }
          },
          "403": {
            "description": "When the authenticated user lacks isn't authorized to access the issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "issue_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/issues/{issue_id}/attachments": {
      "get": {
        "description": "Returns all attachments for this issue.\n\nThis returns the files' meta data. This does not return the files'\nactual contents.\n\nThe files are always ordered by their upload date.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of all attachments for this issue.",
            "schema": {
              "$ref": "#/definitions/paginated_issue_attachments"
            }
          },
          "401": {
            "description": "If the issue tracker is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "issue_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Upload new issue attachments.\n\nTo upload files, perform a `multipart/form-data` POST containing one\nor more file fields.\n\nWhen a file is uploaded with the same name as an existing attachment,\nthen the existing file will be replaced.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "201": {
            "description": "An empty response document.",
            "headers": {
              "Location": {
                "description": "The URL to the issue's collection of attachments.",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "If no files were uploaded, or if the wrong `Content-Type` was used."
          },
          "401": {
            "description": "If the issue tracker is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/issues/{issue_id}/attachments/{path}": {
      "delete": {
        "description": "Deletes an attachment.",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Indicates that the deletion was successful"
          },
          "401": {
            "description": "If the issue tracker is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository, issue, or attachment does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "get": {
        "description": "Returns the contents of the specified file attachment.\n\nNote that this endpoint does not return a JSON response, but instead\nreturns a redirect pointing to the actual file that in turn will return\nthe raw contents.\n\nThe redirect URL contains a one-time token that has a limited lifetime.\nAs a result, the link should not be persisted, stored, or shared.",
        "parameters": [],
        "responses": {
          "302": {
            "description": "A redirect to the file's contents",
            "headers": {
              "Location": {
                "type": "string"
              }
            }
          },
          "401": {
            "description": "If the issue tracker is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository or issue does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "path",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "issue_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/issues/{issue_id}/comments": {
      "get": {
        "description": "Returns all comments that were made on the specified issue.\n\nThe default sorting is oldest to newest and can be overridden with\nthe `sort` query parameter.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "issue_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/issues/{issue_id}/comments/{comment_id}": {
      "get": {
        "description": "Returns the specified issue comment object.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "comment_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "issue_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/issues/{issue_id}/vote": {
      "delete": {
        "description": "Retract your vote.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue:write",
              "account:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "get": {
        "description": "Check whether the authenticated user has voted for this issue.\nA 204 status code indicates that the user has voted, while a 404\nimplies they haven't.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "204": {
            "description": "If the authenticated user has not voted for this issue.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the authenticated user has not voted for this issue, or when the repo does not exist, or does not have an issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue",
              "account"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "issue_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Vote for this issue.\n\nTo cast your vote, do an empty PUT. The 204 status code indicates that\nthe operation was successful.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "204": {
            "description": "Indicating the authenticated user has cast their vote successfully.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "When the issue does not exist, the repo does not exist, or when the repos does not have an issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue",
              "account:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/issues/{issue_id}/watch": {
      "delete": {
        "description": "Stop watching this issue.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "204": {
            "description": "Indicates that the authenticated user successfully stopped watching this issue.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the issue or the repo does not exist, or the repository does not have an issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue:write",
              "account:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "get": {
        "description": "Indicated whether or not the authenticated user is watching this\nissue.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "204": {
            "description": "If the authenticated user is watching this issue.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the authenticated user is not watching this issue, or when the repo does not exist, or does not have an issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue",
              "account"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "issue_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Start watching this issue.\n\nTo start watching this issue, do an empty PUT. The 204 status code\nindicates that the operation was successful.",
        "parameters": [
          {
            "description": "The issue's id",
            "in": "path",
            "name": "issue_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "204": {
            "description": "Indicates that the authenticated user successfully started watching this issue.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the authenticated user is not watching this issue, or when the repo does not exist, or does not have an issue tracker.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue",
              "account:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/milestones": {
      "get": {
        "description": "Returns the milestones that have been defined in the issue tracker.\n\nThis resource is only available on repositories that have the issue\ntracker enabled.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The milestones that have been defined in the issue tracker.",
            "schema": {
              "$ref": "#/definitions/paginated_milestones"
            }
          },
          "404": {
            "description": "If the specified repository does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/milestones/{milestone_id}": {
      "get": {
        "description": "Returns the specified issue tracker milestone object.",
        "parameters": [
          {
            "description": "The milestone's id",
            "in": "path",
            "name": "milestone_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "The specified milestone object.",
            "schema": {
              "$ref": "#/definitions/milestone"
            }
          },
          "404": {
            "description": "If the specified repository or milestone does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "milestone_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/patch/{spec}": {
      "get": {
        "description": "Produces a raw patch for a single commit (diffed against its first\nparent), or a patch-series for a revspec of 2 commits (e.g.\n`3a8b42..9ff173` where the first commit represents the source and the\nsecond commit the destination).\n\nIn case of the latter (diffing a revspec), a patch series is returned\nfor the commits on the source branch (`3a8b42` and its ancestors in\nour example). For Mercurial, a single patch is returned that combines\nthe changes of all commits on the source branch.\n\nWhile similar to diffs, patches:\n\n* Have a commit header (username, commit message, etc)\n* Do not support the `path=foo/bar.py` query parameter\n\nThe raw patch is returned as-is, in whatever encoding the files in the\nrepository use. It is not decoded into unicode. As such, the\ncontent-type is `text/plain`.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The raw patches"
          },
          "555": {
            "description": "If the diff was too large and timed out.\n\nSince this endpoint does not employ any form of pagination, but\ninstead returns the diff as a single document, it can run into\ntrouble on very large diffs. If Bitbucket times out in cases\nlike these, a 555 status code is returned.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "commits"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "spec",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pipelines/": {
      "get": {
        "description": "Find pipelines",
        "operationId": "getPipelinesForRepository",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The matching pipelines.",
            "schema": {
              "$ref": "#/definitions/paginated_pipelines"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "post": {
        "description": "Endpoint to create and initiate a pipeline. \nThere are a couple of different options to initiate a pipeline, where the payload of the request will determine which type of pipeline will be instantiated.\n# Trigger a Pipeline for a branch or tag\nOne way to trigger pipelines is by specifying the reference for which you want to trigger a pipeline (e.g. a branch or tag). \nThe specified reference will be used to determine which pipeline definition from the `bitbucket-pipelines.yml` file will be applied to initiate the pipeline. The pipeline will then do a clone of the repository and checkout the latest revision of the specified reference.\n\n### Example\n\n```\n$ curl -X POST -is -u username:password \\\n  -H 'Content-Type: application/json' \\\n https://api.bitbucket.org/2.0/repositories/jeroendr/meat-demo2/pipelines/ \\\n  -d '\n  {\n    \"target\": {\n      \"ref_type\": \"branch\", \n      \"type\": \"pipeline_ref_target\", \n      \"ref_name\": \"master\"\n    }\n  }'\n```\n# Trigger a Pipeline for a commit on a branch or tag\nYou can initiate a pipeline for a specific commit and in the context of a specified reference (e.g. a branch, tag or bookmark).\nThe specified reference will be used to determine which pipeline definition from the bitbucket-pipelines.yml file will be applied to initiate the pipeline. The pipeline will clone the repository and then do a checkout the specified reference. \n\nThe following reference types are supported:\n\n* `branch` \n* `named_branch`\n* `bookmark` \n * `tag`\n\n### Example\n\n```\n$ curl -X POST -is -u username:password \\\n  -H 'Content-Type: application/json' \\\n  https://api.bitbucket.org/2.0/repositories/jeroendr/meat-demo2/pipelines/ \\\n  -d '\n  {\n    \"target\": {\n      \"commit\": {\n        \"type\": \"commit\", \n        \"hash\": \"ce5b7431602f7cbba007062eeb55225c6e18e956\"\n      }, \n      \"ref_type\": \"branch\", \n      \"type\": \"pipeline_ref_target\", \n      \"ref_name\": \"master\"\n    }\n  }'\n```\n# Trigger a specific pipeline definition for a commit\nYou can trigger a specific pipeline that is defined in your `bitbucket-pipelines.yml` file for a specific commit. \nIn addition to the commit revision, you specify the type and pattern of the selector that identifies the pipeline definition. The resulting pipeline will then clone the repository and checkout the specified revision.\n\n### Example\n\n```\n$ curl -X POST -is -u username:password \\\n  -H 'Content-Type: application/json' \\\n https://api.bitbucket.org/2.0/repositories/jeroendr/meat-demo2/pipelines/ \\\n -d '\n  {\n     \"target\": {\n      \"commit\": {\n         \"hash\":\"a3c4e02c9a3755eccdc3764e6ea13facdf30f923\",\n         \"type\":\"commit\"\n       },\n        \"selector\": {\n           \"type\":\"custom\",\n              \"pattern\":\"Deploy to production\"\n          },\n        \"type\":\"pipeline_commit_target\"\n   }\n  }'\n```\n# Trigger a specific pipeline definition for a commit on a branch or tag\nYou can trigger a specific pipeline that is defined in your `bitbucket-pipelines.yml` file for a specific commit in the context of a specified reference. \nIn addition to the commit revision, you specify the type and pattern of the selector that identifies the pipeline definition, as well as the reference information. The resulting pipeline will then clone the repository a checkout the specified reference.\n\n### Example\n\n```\n$ curl -X POST -is -u username:password \\\n  -H 'Content-Type: application/json' \\\n https://api.bitbucket.org/2.0/repositories/jeroendr/meat-demo2/pipelines/ \\\n -d '\n  {\n     \"target\": {\n      \"commit\": {\n         \"hash\":\"a3c4e02c9a3755eccdc3764e6ea13facdf30f923\",\n         \"type\":\"commit\"\n       },\n       \"selector\": {\n          \"type\": \"custom\",\n          \"pattern\": \"Deploy to production\"\n       },\n       \"type\": \"pipeline_ref_target\",\n       \"ref_name\": \"master\",\n       \"ref_type\": \"branch\"\n     }\n  }'\n```\n",
        "operationId": "createPipelineForRepository",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The pipeline to initiate.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The initiated pipeline.",
            "headers": {
              "Location": {
                "description": "The URL of the newly created pipeline.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/pipeline"
            }
          },
          "400": {
            "description": "The account or repository is not enabled, the yml file does not exist in the repository for the given revision, or the request body contained invalid properties.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "The account or repository was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines/{pipeline_uuid}": {
      "get": {
        "description": "Retrieve a specified pipeline",
        "operationId": "getPipelineForRepository",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The pipeline UUID.",
            "in": "path",
            "name": "pipeline_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The pipeline.",
            "schema": {
              "$ref": "#/definitions/pipeline"
            }
          },
          "404": {
            "description": "No account, repository or pipeline with the UUID provided exists.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines/{pipeline_uuid}/steps/": {
      "get": {
        "description": "Find steps for the given pipeline.",
        "operationId": "getPipelineStepsForRepository",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the pipeline.",
            "in": "path",
            "name": "pipeline_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The steps.",
            "schema": {
              "$ref": "#/definitions/paginated_pipeline_steps"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}": {
      "get": {
        "description": "Retrieve a given step of a pipeline.",
        "operationId": "getPipelineStepForRepository",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the pipeline.",
            "in": "path",
            "name": "pipeline_uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the step.",
            "in": "path",
            "name": "step_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The step.",
            "schema": {
              "$ref": "#/definitions/pipeline_step"
            }
          },
          "404": {
            "description": "No account, repository, pipeline or step with the UUID provided exists for the pipeline with the UUID provided.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/log": {
      "get": {
        "description": "Retrieve the log file for a given step of a pipeline.\n\nThis endpoint supports (and encourages!) the use of [HTTP Range requests](https://tools.ietf.org/html/rfc7233) to deal with potentially very large log files.",
        "operationId": "getPipelineStepLogForRepository",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the pipeline.",
            "in": "path",
            "name": "pipeline_uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the step.",
            "in": "path",
            "name": "step_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "text/plain"
        ],
        "responses": {
          "200": {
            "description": "The raw log file for this pipeline step."
          },
          "304": {
            "description": "The log has the same etag as the provided If-None-Match header.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "A pipeline with the given UUID does not exist, a step with the given UUID does not exist in the pipeline or a log file does not exist for the given step.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "416": {
            "description": "The requested range does not exist for requests that specified the [HTTP Range header](https://tools.ietf.org/html/rfc7233#section-3.1).",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines/{pipeline_uuid}/stopPipeline": {
      "post": {
        "description": "Signal the stop of a pipeline and all of its steps that not have completed yet.",
        "operationId": "stopPipeline",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the pipeline.",
            "in": "path",
            "name": "pipeline_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "The pipeline has been signaled to stop."
          },
          "400": {
            "description": "The specified pipeline has already completed.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "Either the account, repository or pipeline with the given UUID does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines_config": {
      "get": {
        "description": "Retrieve the repository pipelines configuration.",
        "operationId": "getRepositoryPipelineConfig",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The repository pipelines configuration.",
            "schema": {
              "$ref": "#/definitions/pipelines_config"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "put": {
        "description": "Update the pipelines configuration for a repository.",
        "operationId": "updateRepositoryPipelineConfig",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The updated repository pipelines configuration.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipelines_config"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The repository pipelines configuration was updated.",
            "schema": {
              "$ref": "#/definitions/pipelines_config"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines_config/ssh/key_pair": {
      "delete": {
        "description": "Delete the repository SSH key pair.",
        "operationId": "deleteRepositoryPipelineKeyPair",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "The SSH key pair was deleted."
          },
          "404": {
            "description": "The account, repository or SSH key pair was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "get": {
        "description": "Retrieve the repository SSH key pair excluding the SSH private key. The private key is a write only field and will never be exposed in the logs or the REST API.",
        "operationId": "getRepositoryPipelineSshKeyPair",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The SSH key pair.",
            "schema": {
              "$ref": "#/definitions/pipeline_ssh_key_pair"
            }
          },
          "404": {
            "description": "The account, repository or SSH key pair was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "put": {
        "description": "Create or update the repository SSH key pair. The private key will be set as a default SSH identity in your build container.",
        "operationId": "updateRepositoryPipelineKeyPair",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The created or updated SSH key pair.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline_ssh_key_pair"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The SSH key pair was created or updated.",
            "schema": {
              "$ref": "#/definitions/pipeline_ssh_key_pair"
            }
          },
          "404": {
            "description": "The account, repository or SSH key pair was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines_config/ssh/known_hosts/": {
      "get": {
        "description": "Find repository level known hosts.",
        "operationId": "getRepositoryPipelineKnownHosts",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The retrieved known hosts.",
            "schema": {
              "$ref": "#/definitions/paginated_pipeline_known_hosts"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "post": {
        "description": "Create a repository level known host.",
        "operationId": "createRepositoryPipelineKnownHost",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The known host to create.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline_known_host"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The known host was created.",
            "headers": {
              "Location": {
                "description": "The URL of the newly created pipeline known host.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/pipeline_known_host"
            }
          },
          "404": {
            "description": "The account or repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "409": {
            "description": "A known host with the provided hostname already exists.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines_config/ssh/known_hosts/{known_host_uuid}": {
      "delete": {
        "description": "Delete a repository level known host.",
        "operationId": "deleteRepositoryPipelineKnownHost",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the known host to delete.",
            "in": "path",
            "name": "known_host_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "The known host was deleted."
          },
          "404": {
            "description": "The account, repository or known host with given UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "get": {
        "description": "Retrieve a repository level known host.",
        "operationId": "getRepositoryPipelineKnownHost",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the known host to retrieve.",
            "in": "path",
            "name": "known_host_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The known host.",
            "schema": {
              "$ref": "#/definitions/pipeline_known_host"
            }
          },
          "404": {
            "description": "The account, repository or known host with the specified UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "put": {
        "description": "Update a repository level known host.",
        "operationId": "updateRepositoryPipelineKnownHost",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the known host to update.",
            "in": "path",
            "name": "known_host_uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The updated known host.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline_known_host"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The known host was updated.",
            "schema": {
              "$ref": "#/definitions/pipeline_known_host"
            }
          },
          "404": {
            "description": "The account, repository or known host with the given UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines_config/variables/": {
      "get": {
        "description": "Find repository level variables.",
        "operationId": "getRepositoryPipelineVariables",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The retrieved variables.",
            "schema": {
              "$ref": "#/definitions/paginated_pipeline_variables"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "post": {
        "description": "Create a repository level variable.",
        "operationId": "createRepositoryPipelineVariable",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The variable to create.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The variable was created.",
            "headers": {
              "Location": {
                "description": "The URL of the newly created pipeline variable.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account or repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "409": {
            "description": "A variable with the provided key already exists.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pipelines_config/variables/{variable_uuid}": {
      "delete": {
        "description": "Delete a repository level variable.",
        "operationId": "deleteRepositoryPipelineVariable",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable to delete.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "The variable was deleted."
          },
          "404": {
            "description": "The account, repository or variable with given UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "get": {
        "description": "Retrieve a repository level variable.",
        "operationId": "getRepositoryPipelineVariable",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable to retrieve.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The variable.",
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account, repository or variable with the specified UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "put": {
        "description": "Update a repository level variable.",
        "operationId": "updateRepositoryPipelineVariable",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The repository.",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable to update.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The updated variable",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The variable was updated.",
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account, repository or variable with the given UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pullrequests": {
      "get": {
        "description": "Returns a paginated list of all pull requests on the specified\nrepository. By default only open pull requests are returned. This can\nbe controlled using the `state` query parameter. To retrieve pull\nrequests that are in one of multiple states, repeat the `state`\nparameter for each individual state.\n\nThis endpoint also supports filtering and sorting of the results. See\n[filtering and sorting](../../../../meta/filtering) for more details.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "Only return pull requests that are in this state. This parameter can be repeated.",
            "enum": [
              "MERGED",
              "SUPERSEDED",
              "OPEN",
              "DECLINED"
            ],
            "in": "query",
            "name": "state",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "All pull requests on the specified repository.",
            "schema": {
              "$ref": "#/definitions/paginated_pullrequests"
            }
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new pull request.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The new pull request.\n\nThe request URL you POST to becomes the destination repository URL. For this reason, you must specify an explicit source repository in the request object if you want to pull from a different repository (fork).\n\nSince not all elements are required or even mutable, you only need to include the elements you want to initialize, such as the source branch and the title.",
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/pullrequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The newly created pull request.",
            "headers": {
              "Location": {
                "description": "The URL of new newly created pull request.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/pullrequest"
            }
          },
          "400": {
            "description": "If the input document was invalid, or if the caller lacks the privilege to create repositories under the targeted account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "If the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pullrequests/activity": {
      "get": {
        "description": "Returns a paginated list of the pull request's activity log.\n\nThis includes comments that were made by the reviewers, updates and\napprovals.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The pull request activity log"
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}": {
      "get": {
        "description": "Returns the specified pull request.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the account,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The id of the pull request.\n",
            "in": "path",
            "name": "pull_request_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "The pull request object",
            "schema": {
              "$ref": "#/definitions/pullrequest"
            }
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the repository or pull request does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Mutates the specified pull request.\n\nThis can be used to change the pull request's branches or description.\n\nOnly open pull requests can be mutated.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The id of the open pull request.\n",
            "in": "path",
            "name": "pull_request_id",
            "required": true,
            "type": "integer"
          },
          {
            "description": "The pull request that is to be updated.",
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/pullrequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The updated pull request",
            "schema": {
              "$ref": "#/definitions/pullrequest"
            }
          },
          "400": {
            "description": "If the input document was invalid.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "401": {
            "description": "If the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the repository or pull request id does not exist",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/activity": {
      "get": {
        "description": "Returns a paginated list of the pull request's activity log.\n\nThis includes comments that were made by the reviewers, updates and\napprovals.",
        "parameters": [
          {
            "description": "This can either be the username or the UUID of the user,\nsurrounded by curly-braces, for example: `{user UUID}`.\n",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n",
            "in": "path",
            "name": "repo_slug",
            "required": true,
            "type": "string"
          },
          {
            "description": "The id of the pull request.\n",
            "in": "path",
            "name": "pull_request_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "The pull request activity log"
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/approve": {
      "delete": {
        "description": "Redact the authenticated user's approval of the specified pull\nrequest.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Approve the specified pull request as the authenticated user.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/comments": {
      "get": {
        "description": "Returns a paginated list of the pull request's comments.\n\nThis includes both global, inline comments and replies.\n\nThe default sorting is oldest to newest and can be overridden with\nthe `sort` query parameter.\n\nThis endpoint also supports filtering and sorting of the results. See\n[filtering and sorting](../../../../../../meta/filtering) for more\ndetails.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/comments/{comment_id}": {
      "get": {
        "description": "Returns a specific pull request comment.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "comment_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/commits": {
      "get": {
        "description": "Returns a paginated list of the pull request's commits.\n\nThese are the commits that are being merged into the destination\nbranch when the pull requests gets accepted.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/decline": {
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Declines the pull request.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The pull request object.",
            "schema": {
              "$ref": "#/definitions/pullrequest"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/diff": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/merge": {
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Merges the pull request.",
        "parameters": [
          {
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/pullrequest_merge_parameters"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The pull request object.",
            "schema": {
              "$ref": "#/definitions/pullrequest"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/patch": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "pullrequests"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/pullrequests/{pull_request_id}/statuses": {
      "get": {
        "description": "Returns all statuses (e.g. build results) for the given pull\nrequest.",
        "parameters": [
          {
            "description": "The pull request's id",
            "in": "path",
            "name": "pull_request_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of all commit statuses for this pull request.",
            "schema": {
              "$ref": "#/definitions/paginated_commitstatuses"
            }
          },
          "401": {
            "description": "If the repository is private and the request was not authenticated."
          },
          "404": {
            "description": "If the specified repository or pull request does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "pullrequest"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories",
          "pullrequests",
          "commitstatuses"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "pull_request_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/refs": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "refs"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/refs/branches": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "refs"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/refs/branches/{name}": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "refs"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "name",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/refs/tags": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "refs"
        ]
      },
      "parameters": [
        {
          "description": "\nThe username for the owner of the repository. This can either be the\n`username` of the owner or the `UUID` of the owner (surrounded by\ncurly-braces (`{}`)). Owners can be users or teams.\n",
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "description": "\nThe repo slug for the repository.  This can either be the `repo_slug` of\nthe repository or the `UUID` of the repository (surrounded by\ncurly-braces (`{}`))\n",
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new tag in the specified repository.\n\nThe payload of the POST should consist of a JSON document that\ncontains the name of the tag and the target hash.\n\n```\n{\n    \"name\" : \"new tag name\",\n    \"target\" : {\n        \"hash\" : \"target commit hash\",\n    }\n}\n```\n\nThis endpoint does support using short hash prefixes for the commit\nhash, but it may return a 400 response if the provided prefix is\nambiguous. Using a full commit hash is the preferred approach.",
        "parameters": [
          {
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tag"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The newly created tag.",
            "schema": {
              "$ref": "#/definitions/tag"
            }
          },
          "400": {
            "description": "If the target hash is missing, ambiguous, or invalid, or if the name is not provided.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "refs"
        ]
      }
    },
    "/repositories/{username}/{repo_slug}/refs/tags/{name}": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "refs"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "name",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/src/{node}/{path}": {
      "get": {
        "description": "",
        "parameters": [
          {
            "description": "Instead of returning the file's contents, return the (json) meta data for it.",
            "enum": [
              "meta"
            ],
            "in": "query",
            "name": "format",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "If the path matches a file, then the raw contents of the file are\nreturned (unless the `format=meta` query parameter was provided,\nin which case a json document containing the file's meta data is\nreturned). If the path matches a directory, then a paginated\nlist of file and directory entries is returned (if the\n`format=meta` query parameter was provided, then the json document\ncontaining the directory's meta data is returned).\n"
          },
          "404": {
            "description": "If the path or commit in the URL does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "source",
          "repositories"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "node",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "path",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/versions": {
      "get": {
        "description": "Returns the versions that have been defined in the issue tracker.\n\nThis resource is only available on repositories that have the issue\ntracker enabled.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The versions that have been defined in the issue tracker.",
            "schema": {
              "$ref": "#/definitions/paginated_versions"
            }
          },
          "404": {
            "description": "If the specified repository does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/versions/{version_id}": {
      "get": {
        "description": "Returns the specified issue tracker version object.",
        "parameters": [
          {
            "description": "The version's id",
            "in": "path",
            "name": "version_id",
            "required": true,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "The specified version object.",
            "schema": {
              "$ref": "#/definitions/version"
            }
          },
          "404": {
            "description": "If the specified repository or version does not exist, or if the repository doesn't have the issue tracker enabled.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "issue"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "issue_tracker"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "version_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/repositories/{username}/{repo_slug}/watchers": {
      "get": {
        "description": "Returns a paginated list of all the watchers on the specified\nrepository.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "repositories"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "repo_slug",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/snippets": {
      "get": {
        "description": "Returns all snippets. Like pull requests, repositories and teams, the\nfull set of snippets is defined by what the current user has access to.\n\nThis includes all snippets owned by the current user, but also all snippets\nowned by any of the teams the user is a member of, or snippets by other\nusers that the current user is either watching or has collaborated on (for\ninstance by commenting on it).\n\nTo limit the set of returned snippets, apply the\n`?role=[owner|contributor|member]` query parameter where the roles are\ndefined as follows:\n\n* `owner`: all snippets owned by the current user\n* `contributor`: all snippets owned by, or watched by the current user\n* `member`: owned by the user, their teams, or watched by the current user\n\nWhen no role is specified, all public snippets are returned, as well as all\nprivately owned snippets watched or commented on.\n\nThe returned response is a normal paginated JSON list. This endpoint\nonly supports `application/json` responses and no\n`multipart/form-data` or `multipart/related`. As a result, it is not\npossible to include the file contents.",
        "parameters": [
          {
            "description": "Filter down the result based on the authenticated user's role (`owner`, `contributor`, or `member`).",
            "enum": [
              "owner",
              "contributor",
              "member"
            ],
            "in": "query",
            "name": "role",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of snippets.",
            "schema": {
              "$ref": "#/definitions/paginated_snippets"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [],
      "post": {
        "description": "Creates a new snippet under the authenticated user's account.\n\nSnippets can contain multiple files. Both text and binary files are\nsupported.\n\nThe simplest way to create a new snippet from a local file:\n\n    $ curl -u username:password -X POST https://api.bitbucket.org/2.0/snippets               -F file=@image.png\n\nCreating snippets through curl has a few limitations and so let's look\nat a more complicated scenario.\n\nSnippets are created with a multipart POST. Both `multipart/form-data`\nand `multipart/related` are supported. Both allow the creation of\nsnippets with both meta data (title, etc), as well as multiple text\nand binary files.\n\nThe main difference is that `multipart/related` can use rich encoding\nfor the meta data (currently JSON).\n\n\nmultipart/related (RFC-2387)\n----------------------------\n\nThis is the most advanced and efficient way to create a paste.\n\n    POST /2.0/snippets/evzijst HTTP/1.1\n    Content-Length: 1188\n    Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n    MIME-Version: 1.0\n\n    --===============1438169132528273974==\n    Content-Type: application/json; charset=\"utf-8\"\n    MIME-Version: 1.0\n    Content-ID: snippet\n\n    {\n      \"title\": \"My snippet\",\n      \"is_private\": true,\n      \"scm\": \"hg\",\n      \"files\": {\n          \"foo.txt\": {},\n          \"image.png\": {}\n        }\n    }\n\n    --===============1438169132528273974==\n    Content-Type: text/plain; charset=\"us-ascii\"\n    MIME-Version: 1.0\n    Content-Transfer-Encoding: 7bit\n    Content-ID: \"foo.txt\"\n    Content-Disposition: attachment; filename=\"foo.txt\"\n\n    foo\n\n    --===============1438169132528273974==\n    Content-Type: image/png\n    MIME-Version: 1.0\n    Content-Transfer-Encoding: base64\n    Content-ID: \"image.png\"\n    Content-Disposition: attachment; filename=\"image.png\"\n\n    iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAYAAAD+MdrbAAABD0lEQVR4Ae3VMUoDQRTG8ccUaW2m\n    TKONFxArJYJamCvkCnZTaa+VnQdJSBFl2SMsLFrEWNjZBZs0JgiL/+KrhhVmJRbCLPx4O+/DT2TB\n    cbblJxf+UWFVVRNsEGAtgvJxnLm2H+A5RQ93uIl+3632PZyl/skjfOn9Gvdwmlcw5aPUwimG+NT5\n    EnNN036IaZePUuIcK533NVfal7/5yjWeot2z9ta1cAczHEf7I+3J0ws9Cgx0fsOFpmlfwKcWPuBQ\n    73Oc4FHzBaZ8llq4q1mr5B2mOUCt815qYR8eB1hG2VJ7j35q4RofaH7IG+Xrf/PfJhfmwtfFYoIN\n    AqxFUD6OMxcvkO+UfKfkOyXfKdsv/AYCHMLVkHAFWgAAAABJRU5ErkJggg==\n    --===============1438169132528273974==--\n\nThe request contains multiple parts and is structured as follows.\n\nThe first part is the JSON document that describes the snippet's\nproperties or meta data. It either has to be the first part, or the\nrequest's `Content-Type` header must contain the `start` parameter to\npoint to it.\n\nThe remaining parts are the files of which there can be zero or more.\nEach file part should contain the `Content-ID` MIME header through\nwhich the JSON meta data's `files` element addresses it. The value\nshould be the name of the file.\n\n`Content-Disposition` is an optional MIME header. The header's\noptional `filename` parameter can be used to specify the file name\nthat Bitbucket should use when writing the file to disk. When present,\n`filename` takes precedence over the value of `Content-ID`.\n\nWhen the JSON body omits the `files` element, the remaining parts are\nnot ignored. Instead, each file is added to the new snippet as if its\nname was explicitly linked (the use of the `files` elements is\nmandatory for some operations like deleting or renaming files).\n\n\nmultipart/form-data\n-------------------\n\nThe use of JSON for the snippet's meta data is optional. Meta data can\nalso be supplied as regular form fields in a more conventional\n`multipart/form-data` request:\n\n    $ curl -X POST -u credentials https://api.bitbucket.org/2.0/snippets               -F title=\"My snippet\"               -F file=@foo.txt -F file=@image.png\n\n    POST /2.0/snippets HTTP/1.1\n    Content-Length: 951\n    Content-Type: multipart/form-data; boundary=----------------------------63a4b224c59f\n\n    ------------------------------63a4b224c59f\n    Content-Disposition: form-data; name=\"file\"; filename=\"foo.txt\"\n    Content-Type: text/plain\n\n    foo\n\n    ------------------------------63a4b224c59f\n    Content-Disposition: form-data; name=\"file\"; filename=\"image.png\"\n    Content-Type: application/octet-stream\n\n    ?PNG\n\n    IHDR?1??I.....\n    ------------------------------63a4b224c59f\n    Content-Disposition: form-data; name=\"title\"\n\n    My snippet\n    ------------------------------63a4b224c59f--\n\nHere the meta data properties are included as flat, top-level form\nfields. The file attachments use the `file` field name. To attach\nmultiple files, simply repeat the field.\n\nThe advantage of `multipart/form-data` over `multipart/related` is\nthat it can be easier to build clients.\n\nEssentially all properties are optional, `title` and `files` included.\n\n\nSharing and Visibility\n----------------------\n\nSnippets can be either public (visible to anyone on Bitbucket, as well\nas anonymous users), or private (visible only to the owner, creator\nand members of the team in case the snippet is owned by a team). This\nis controlled through the snippet's `is_private` element:\n\n* **is_private=false** -- everyone, including anonymous users can view\n  the snippet\n* **is_private=true** -- only the owner and team members (for team\n  snippets) can view it\n\nTo create the snippet under a team account, just append the team name\nto the URL (see `/2.0/snippets/{username}`).",
        "parameters": [
          {
            "description": "The new snippet object.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The newly created snippet object.",
            "headers": {
              "Location": {
                "description": "The URL of the newly created snippet.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          },
          "401": {
            "description": "If the request was not authenticated",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      }
    },
    "/snippets/{username}": {
      "get": {
        "description": "Identical to `/snippets`, except that the result is further filtered\nby the snippet owner and only those that are owned by `{username}` are\nreturned.",
        "parameters": [
          {
            "description": "Filter down the result based on the authenticated user's role (`owner`, `contributor`, or `member`).",
            "enum": [
              "owner",
              "contributor",
              "member"
            ],
            "in": "query",
            "name": "role",
            "required": false,
            "type": "string"
          },
          {
            "description": "Limits the result to snippets owned by this user.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of snippets.",
            "schema": {
              "$ref": "#/definitions/paginated_snippets"
            }
          },
          "404": {
            "description": "If the user does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Identical to `/snippets`, except that the new snippet will be\ncreated under the account specified in the path parameter `{username}`.",
        "parameters": [
          {
            "description": "The new snippet object.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The newly created snippet object.",
            "headers": {
              "Location": {
                "description": "The URL of the newly created snippet.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          },
          "401": {
            "description": "If the request was not authenticated",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If the authenticated user does not have permission to create snippets under the specified account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      }
    },
    "/snippets/{username}/{encoded_id}": {
      "delete": {
        "description": "Deletes a snippet and returns an empty response.",
        "parameters": [
          {
            "description": "The snippet's id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "If the snippet was deleted successfully."
          },
          "401": {
            "description": "If the snippet is private and the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If authenticated user does not have permission to delete the private snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "get": {
        "description": "Retrieves a single snippet.\n\nSnippets support multiple content types:\n\n* application/json\n* multipart/related\n* multipart/form-data\n\n\napplication/json\n----------------\n\nThe default content type of the response is `application/json`.\nSince JSON is always `utf-8`, it cannot reliably contain file contents\nfor files that are not text. Therefore, JSON snippet documents only\ncontain the filename and links to the file contents.\n\nThis means that in order to retrieve all parts of a snippet, N+1\nrequests need to be made (where N is the number of files in the\nsnippet).\n\n\nmultipart/related\n-----------------\n\nTo retrieve an entire snippet in a single response, use the\n`Accept: multipart/related` HTTP request header.\n\n    $ curl -H \"Accept: multipart/related\" https://api.bitbucket.org/2.0/snippets/evzijst/1\n\nResponse:\n\n    HTTP/1.1 200 OK\n    Content-Length: 2214\n    Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n    MIME-Version: 1.0\n\n    --===============1438169132528273974==\n    Content-Type: application/json; charset=\"utf-8\"\n    MIME-Version: 1.0\n    Content-ID: snippet\n\n    {\n      \"links\": {\n        \"self\": {\n          \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj\"\n        },\n        \"html\": {\n          \"href\": \"https://bitbucket.org/snippets/evzijst/kypj\"\n        },\n        \"comments\": {\n          \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/comments\"\n        },\n        \"watchers\": {\n          \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/watchers\"\n        },\n        \"commits\": {\n          \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/commits\"\n        }\n      },\n      \"id\": kypj,\n      \"title\": \"My snippet\",\n      \"created_on\": \"2014-12-29T22:22:04.790331+00:00\",\n      \"updated_on\": \"2014-12-29T22:22:04.790331+00:00\",\n      \"is_private\": false,\n      \"files\": {\n        \"foo.txt\": {\n          \"links\": {\n            \"self\": {\n              \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/files/367ab19/foo.txt\"\n            },\n            \"html\": {\n              \"href\": \"https://bitbucket.org/snippets/evzijst/kypj#file-foo.txt\"\n            }\n          }\n        },\n        \"image.png\": {\n          \"links\": {\n            \"self\": {\n              \"href\": \"https://api.bitbucket.org/2.0/snippets/evzijst/kypj/files/367ab19/image.png\"\n            },\n            \"html\": {\n              \"href\": \"https://bitbucket.org/snippets/evzijst/kypj#file-image.png\"\n            }\n          }\n        }\n      ],\n      \"owner\": {\n        \"username\": \"evzijst\",\n        \"display_name\": \"Erik van Zijst\",\n        \"uuid\": \"{d301aafa-d676-4ee0-88be-962be7417567}\",\n        \"links\": {\n          \"self\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/evzijst\"\n          },\n          \"html\": {\n            \"href\": \"https://bitbucket.org/evzijst\"\n          },\n          \"avatar\": {\n            \"href\": \"https://bitbucket-staging-assetroot.s3.amazonaws.com/c/photos/2013/Jul/31/erik-avatar-725122544-0_avatar.png\"\n          }\n        }\n      },\n      \"creator\": {\n        \"username\": \"evzijst\",\n        \"display_name\": \"Erik van Zijst\",\n        \"uuid\": \"{d301aafa-d676-4ee0-88be-962be7417567}\",\n        \"links\": {\n          \"self\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/evzijst\"\n          },\n          \"html\": {\n            \"href\": \"https://bitbucket.org/evzijst\"\n          },\n          \"avatar\": {\n            \"href\": \"https://bitbucket-staging-assetroot.s3.amazonaws.com/c/photos/2013/Jul/31/erik-avatar-725122544-0_avatar.png\"\n          }\n        }\n      }\n    }\n\n    --===============1438169132528273974==\n    Content-Type: text/plain; charset=\"us-ascii\"\n    MIME-Version: 1.0\n    Content-Transfer-Encoding: 7bit\n    Content-ID: \"foo.txt\"\n    Content-Disposition: attachment; filename=\"foo.txt\"\n\n    foo\n\n    --===============1438169132528273974==\n    Content-Type: image/png\n    MIME-Version: 1.0\n    Content-Transfer-Encoding: base64\n    Content-ID: \"image.png\"\n    Content-Disposition: attachment; filename=\"image.png\"\n\n    iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAYAAAD+MdrbAAABD0lEQVR4Ae3VMUoDQRTG8ccUaW2m\n    TKONFxArJYJamCvkCnZTaa+VnQdJSBFl2SMsLFrEWNjZBZs0JgiL/+KrhhVmJRbCLPx4O+/DT2TB\n    cbblJxf+UWFVVRNsEGAtgvJxnLm2H+A5RQ93uIl+3632PZyl/skjfOn9Gvdwmlcw5aPUwimG+NT5\n    EnNN036IaZePUuIcK533NVfal7/5yjWeot2z9ta1cAczHEf7I+3J0ws9Cgx0fsOFpmlfwKcWPuBQ\n    73Oc4FHzBaZ8llq4q1mr5B2mOUCt815qYR8eB1hG2VJ7j35q4RofaH7IG+Xrf/PfJhfmwtfFYoIN\n    AqxFUD6OMxcvkO+UfKfkOyXfKdsv/AYCHMLVkHAFWgAAAABJRU5ErkJggg==\n    --===============1438169132528273974==--\n\nmultipart/form-data\n-------------------\n\nAs with creating new snippets, `multipart/form-data` can be used as an\nalternative to `multipart/related`. However, the inherently flat\nstructure of form-data means that only basic, root-level properties\ncan be returned, while nested elements like `links` are omitted:\n\n    $ curl -H \"Accept: multipart/form-data\" https://api.bitbucket.org/2.0/snippets/evzijst/kypj\n\nResponse:\n\n    HTTP/1.1 200 OK\n    Content-Length: 951\n    Content-Type: multipart/form-data; boundary=----------------------------63a4b224c59f\n\n    ------------------------------63a4b224c59f\n    Content-Disposition: form-data; name=\"title\"\n    Content-Type: text/plain; charset=\"utf-8\"\n\n    My snippet\n    ------------------------------63a4b224c59f--\n    Content-Disposition: attachment; name=\"file\"; filename=\"foo.txt\"\n    Content-Type: text/plain\n\n    foo\n\n    ------------------------------63a4b224c59f\n    Content-Disposition: attachment; name=\"file\"; filename=\"image.png\"\n    Content-Transfer-Encoding: base64\n    Content-Type: application/octet-stream\n\n    iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAYAAAD+MdrbAAABD0lEQVR4Ae3VMUoDQRTG8ccUaW2m\n    TKONFxArJYJamCvkCnZTaa+VnQdJSBFl2SMsLFrEWNjZBZs0JgiL/+KrhhVmJRbCLPx4O+/DT2TB\n    cbblJxf+UWFVVRNsEGAtgvJxnLm2H+A5RQ93uIl+3632PZyl/skjfOn9Gvdwmlcw5aPUwimG+NT5\n    EnNN036IaZePUuIcK533NVfal7/5yjWeot2z9ta1cAczHEf7I+3J0ws9Cgx0fsOFpmlfwKcWPuBQ\n    73Oc4FHzBaZ8llq4q1mr5B2mOUCt815qYR8eB1hG2VJ7j35q4RofaH7IG+Xrf/PfJhfmwtfFYoIN\n    AqxFUD6OMxcvkO+UfKfkOyXfKdsv/AYCHMLVkHAFWgAAAABJRU5ErkJggg==\n    ------------------------------5957323a6b76--",
        "parameters": [
          {
            "description": "The snippet's id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json",
          "multipart/related",
          "multipart/form-data"
        ],
        "responses": {
          "200": {
            "description": "The snippet object.",
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          },
          "401": {
            "description": "If the snippet is private and the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If authenticated user does not have access to the private snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "consumes": [
          "application/json",
          "multipart/related",
          "multipart/form-data"
        ],
        "description": "Used to update a snippet. Use this to add and delete files and to\nchange a snippet's title.\n\nTo update a snippet, one can either PUT a full snapshot, or only the\nparts that need to be changed.\n\nThe contract for PUT on this API is that properties missing from the\nrequest remain untouched so that snippets can be efficiently\nmanipulated with differential payloads.\n\nTo delete a property (e.g. the title, or a file), include its name in\nthe request, but omit its value (use `null`).\n\nAs in Git, explicit renaming of files is not supported. Instead, to\nrename a file, delete it and add it again under another name. This can\nbe done atomically in a single request. Rename detection is left to\nthe SCM.\n\nPUT supports three different content types for both request and\nresponse bodies:\n\n* `application/json`\n* `multipart/related`\n* `multipart/form-data`\n\nThe content type used for the request body can be different than that\nused for the response. Content types are specified using standard HTTP\nheaders.\n\nUse the `Content-Type` and `Accept` headers to select the desired\nrequest and response format.\n\n\napplication/json\n----------------\n\nAs with creation and retrieval, the content type determines what\nproperties can be manipulated. `application/json` does not support\nfile contents and is therefore limited to a snippet's meta data.\n\nTo update the title, without changing any of its files:\n\n    $ curl -X POST -H \"Content-Type: application/json\" https://api.bitbucket.org/2.0/snippets/evzijst/kypj             -d '{\"title\": \"Updated title\"}'\n\n\nTo delete the title:\n\n    $ curl -X POST -H \"Content-Type: application/json\" https://api.bitbucket.org/2.0/snippets/evzijst/kypj             -d '{\"title\": null}'\n\nNot all parts of a snippet can be manipulated. The owner and creator\nfor instance are immutable.\n\n\nmultipart/related\n-----------------\n\n`multipart/related` can be used to manipulate all of a snippet's\nproperties. The body is identical to a POST. properties omitted from\nthe request are left unchanged. Since the `start` part contains JSON,\nthe mechanism for manipulating the snippet's meta data is identical\nto `application/json` requests.\n\nTo update one of a snippet's file contents, while also changing its\ntitle:\n\n    PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n    Content-Length: 288\n    Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n    MIME-Version: 1.0\n\n    --===============1438169132528273974==\n    Content-Type: application/json; charset=\"utf-8\"\n    MIME-Version: 1.0\n    Content-ID: snippet\n\n    {\n      \"title\": \"My updated snippet\",\n      \"files\": {\n          \"foo.txt\": {}\n        }\n    }\n\n    --===============1438169132528273974==\n    Content-Type: text/plain; charset=\"us-ascii\"\n    MIME-Version: 1.0\n    Content-Transfer-Encoding: 7bit\n    Content-ID: \"foo.txt\"\n    Content-Disposition: attachment; filename=\"foo.txt\"\n\n    Updated file contents.\n\n    --===============1438169132528273974==--\n\nHere only the parts that are changed are included in the body. The\nother files remain untouched.\n\nNote the use of the `files` list in the JSON part. This list contains\nthe files that are being manipulated. This list should have\ncorresponding multiparts in the request that contain the new contents\nof these files.\n\nIf a filename in the `files` list does not have a corresponding part,\nit will be deleted from the snippet, as shown below:\n\n    PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n    Content-Length: 188\n    Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n    MIME-Version: 1.0\n\n    --===============1438169132528273974==\n    Content-Type: application/json; charset=\"utf-8\"\n    MIME-Version: 1.0\n    Content-ID: snippet\n\n    {\n      \"files\": {\n        \"image.png\": {}\n      }\n    }\n\n    --===============1438169132528273974==--\n\nTo simulate a rename, delete a file and add the same file under\nanother name:\n\n    PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n    Content-Length: 212\n    Content-Type: multipart/related; start=\"snippet\"; boundary=\"===============1438169132528273974==\"\n    MIME-Version: 1.0\n\n    --===============1438169132528273974==\n    Content-Type: application/json; charset=\"utf-8\"\n    MIME-Version: 1.0\n    Content-ID: snippet\n\n    {\n        \"files\": {\n          \"foo.txt\": {},\n          \"bar.txt\": {}\n        }\n    }\n\n    --===============1438169132528273974==\n    Content-Type: text/plain; charset=\"us-ascii\"\n    MIME-Version: 1.0\n    Content-Transfer-Encoding: 7bit\n    Content-ID: \"bar.txt\"\n    Content-Disposition: attachment; filename=\"bar.txt\"\n\n    foo\n\n    --===============1438169132528273974==--\n\n\nmultipart/form-data\n-----------------\n\nAgain, one can also use `multipart/form-data` to manipulate file\ncontents and meta data atomically.\n\n    $ curl -X PUT http://localhost:12345/2.0/snippets/evzijst/kypj             -F title=\"My updated snippet\" -F file=@foo.txt\n\n    PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n    Content-Length: 351\n    Content-Type: multipart/form-data; boundary=----------------------------63a4b224c59f\n\n    ------------------------------63a4b224c59f\n    Content-Disposition: form-data; name=\"file\"; filename=\"foo.txt\"\n    Content-Type: text/plain\n\n    foo\n\n    ------------------------------63a4b224c59f\n    Content-Disposition: form-data; name=\"title\"\n\n    My updated snippet\n    ------------------------------63a4b224c59f\n\nTo delete a file, omit its contents while including its name in the\n`files` field:\n\n    $ curl -X PUT https://api.bitbucket.org/2.0/snippets/evzijst/kypj -F files=image.png\n\n    PUT /2.0/snippets/evzijst/kypj HTTP/1.1\n    Content-Length: 149\n    Content-Type: multipart/form-data; boundary=----------------------------ef8871065a86\n\n    ------------------------------ef8871065a86\n    Content-Disposition: form-data; name=\"files\"\n\n    image.png\n    ------------------------------ef8871065a86--\n\nThe explicit use of the `files` element in `multipart/related` and\n`multipart/form-data` is only required when deleting files.\nThe default mode of operation is for file parts to be processed,\nregardless of whether or not they are listed in `files`, as a\nconvenience to the client.",
        "parameters": [
          {
            "description": "The snippet's id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json",
          "multipart/related",
          "multipart/form-data"
        ],
        "responses": {
          "200": {
            "description": "The updated snippet object.",
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          },
          "401": {
            "description": "If the snippet is private and the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If authenticated user does not have permission to update the private snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      }
    },
    "/snippets/{username}/{encoded_id}/comments": {
      "get": {
        "description": "Used to retrieve a paginated list of all comments for a specific\nsnippet.\n\nThis resource works identical to commit and pull request comments.\n\nThe default sorting is oldest to newest and can be overridden with\nthe `sort` query parameter.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "A paginated list of snippet comments, ordered by creation date.",
            "schema": {
              "$ref": "#/definitions/paginated_snippet_comments"
            }
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new comment.\n\nThe only required field in the body is `content.raw`.\n\nTo create a threaded reply to an existing comment, include `parent.id`.",
        "parameters": [
          {
            "description": "The contents of the new comment.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The newly created comment.",
            "headers": {
              "Location": {
                "description": "The URL of the new comment",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      }
    },
    "/snippets/{username}/{encoded_id}/comments/{comment_id}": {
      "delete": {
        "description": "Deletes a snippet comment.\n\nComments can only be removed by their author.",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Indicates the comment was deleted successfully."
          },
          "403": {
            "description": "If the authenticated user is not the author of the comment.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the comment or the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "get": {
        "description": "Returns the specific snippet comment.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The specified comment.",
            "schema": {
              "$ref": "#/definitions/snippet_comment"
            }
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the comment or snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "comment_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Updates a comment.\n\nComments can only be updated by their author.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The updated comment object."
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the comment or snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      }
    },
    "/snippets/{username}/{encoded_id}/commits": {
      "get": {
        "description": "Returns the changes (commits) made on this snippet.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The paginated list of snippet commits.",
            "schema": {
              "$ref": "#/definitions/paginated_snippet_commit"
            }
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/snippets/{username}/{encoded_id}/commits/{revision}": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The specified snippet commit.",
            "schema": {
              "$ref": "#/definitions/snippet_commit"
            }
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the commit or the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "revision",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/snippets/{username}/{encoded_id}/watch": {
      "delete": {
        "description": "Used to stop watching a specific snippet. Returns 204 (No Content)\nto indicate success.",
        "parameters": [
          {
            "description": "The snippet id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Indicates the user stopped watching the snippet successfully.",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "401": {
            "description": "If the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "get": {
        "description": "Used to check if the current user is watching a specific snippet.\n\nReturns 204 (No Content) if the user is watching the snippet and 404 if\nnot.\n\nHitting this endpoint anonymously always returns a 404.",
        "parameters": [
          {
            "description": "The snippet id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "If the authenticated user is watching the snippet.",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "404": {
            "description": "If the snippet does not exist, or if the authenticated user is not watching the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Used to start watching a specific snippet. Returns 204 (No Content).",
        "parameters": [
          {
            "description": "The snippet id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Indicates the authenticated user is now watching the snippet.",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "401": {
            "description": "If the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      }
    },
    "/snippets/{username}/{encoded_id}/watchers": {
      "get": {
        "deprecated": true,
        "description": "Returns a paginated list of all users watching a specific snippet.",
        "parameters": [
          {
            "description": "The snippet id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The paginated list of users watching this snippet",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/snippets/{username}/{encoded_id}/{node_id}": {
      "delete": {
        "description": "Deletes the snippet.\n\nNote that this only works for versioned URLs that point to the latest\ncommit of the snippet. Pointing to an older commit results in a 405\nstatus code.\n\nTo delete a snippet, regardless of whether or not concurrent changes\nare being made to it, use `DELETE /snippets/{encoded_id}` instead.",
        "parameters": [
          {
            "description": "The snippet's id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "If the snippet was deleted successfully."
          },
          "401": {
            "description": "If the snippet is private and the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If authenticated user does not have permission to delete the private snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "405": {
            "description": "If `{node_id}` is not the latest revision.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "get": {
        "description": "Identical to `GET /snippets/encoded_id`, except that this endpoint\ncan be used to retrieve the contents of the snippet as it was at an\nolder revision, while `/snippets/encoded_id` always returns the\nsnippet's current revision.\n\nNote that only the snippet's file contents are versioned, not its\nmeta data properties like the title.\n\nOther than that, the two endpoints are identical in behavior.",
        "parameters": [
          {
            "description": "The snippet's id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "A commit revision (SHA1).",
            "in": "path",
            "name": "node_id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json",
          "multipart/related",
          "multipart/form-data"
        ],
        "responses": {
          "200": {
            "description": "The snippet object.",
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          },
          "401": {
            "description": "If the snippet is private and the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If authenticated user does not have access to the private snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet, or the revision does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "node_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "consumes": [
          "application/json",
          "multipart/related",
          "multipart/form-data"
        ],
        "description": "Identical to `UPDATE /snippets/encoded_id`, except that this endpoint\ntakes an explicit commit revision. Only the snippet's \"HEAD\"/\"tip\"\n(most recent) version can be updated and requests on all other,\nolder revisions fail by returning a 405 status.\n\nUsage of this endpoint over the unrestricted `/snippets/encoded_id`\ncould be desired if the caller wants to be sure no concurrent\nmodifications have taken place between the moment of the UPDATE\nrequest and the original GET.\n\nThis can be considered a so-called \"Compare And Swap\", or CAS\noperation.\n\nOther than that, the two endpoints are identical in behavior.",
        "parameters": [
          {
            "description": "The snippet's id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "A commit revision (SHA1).",
            "in": "path",
            "name": "node_id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json",
          "multipart/related",
          "multipart/form-data"
        ],
        "responses": {
          "200": {
            "description": "The updated snippet object.",
            "schema": {
              "$ref": "#/definitions/snippet"
            }
          },
          "401": {
            "description": "If the snippet is private and the request was not authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "403": {
            "description": "If authenticated user does not have permission to update the private snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet or the revision does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "405": {
            "description": "If `{node_id}` is not the latest revision.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      }
    },
    "/snippets/{username}/{encoded_id}/{node_id}/files/{path}": {
      "get": {
        "description": "Retrieves the raw contents of a specific file in the snippet. The\n`Content-Disposition` header will be \"attachment\" to avoid issues with\nmalevolent executable files.\n\nThe file's mime type is derived from its filename and returned in the\n`Content-Type` header.\n\nNote that for text files, no character encoding is included as part of\nthe content type.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Returns the contents of the specified file.",
            "headers": {
              "Content-Disposition": {
                "description": "attachment",
                "type": "string"
              },
              "Content-Type": {
                "description": "The mime type as derived from the filename",
                "type": "string"
              }
            }
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the file or snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "path",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "node_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/snippets/{username}/{encoded_id}/{revision}/diff": {
      "get": {
        "description": "Returns the diff of the specified commit against its first parent.\n\nNote that this resource is different in functionality from the `patch`\nresource.\n\nThe differences between a diff and a patch are:\n\n* patches have a commit header with the username, message, etc\n* diffs support the optional `path=foo/bar.py` query param to filter the\n  diff to just that one file diff (not supported for patches)\n* for a merge, the diff will show the diff between the merge commit and\n  its first parent (identical to how PRs work), while patch returns a\n  response containing separate patches for each commit on the second\n  parent's ancestry, up to the oldest common ancestor (identical to\n  its reachability).\n\nNote that the character encoding of the contents of the diff is\nunspecified as Git and Mercurial do not track this, making it hard for\nBitbucket to reliably determine this.",
        "parameters": [
          {
            "description": "When used, only one the diff of the specified file will be returned.",
            "in": "query",
            "name": "path",
            "type": "string"
          },
          {
            "description": "The snippet id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "A revspec expression. This can simply be a commit SHA1, a ref name, or a compare expression like `staging..production`.",
            "in": "path",
            "name": "revision",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The raw diff contents."
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "revision",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/snippets/{username}/{encoded_id}/{revision}/patch": {
      "get": {
        "description": "Returns the patch of the specified commit against its first\nparent.\n\nNote that this resource is different in functionality from the `diff`\nresource.\n\nThe differences between a diff and a patch are:\n\n* patches have a commit header with the username, message, etc\n* diffs support the optional `path=foo/bar.py` query param to filter the\n  diff to just that one file diff (not supported for patches)\n* for a merge, the diff will show the diff between the merge commit and\n  its first parent (identical to how PRs work), while patch returns a\n  response containing separate patches for each commit on the second\n  parent's ancestry, up to the oldest common ancestor (identical to\n  its reachability).\n\nNote that the character encoding of the contents of the patch is\nunspecified as Git and Mercurial do not track this, making it hard for\nBitbucket to reliably determine this.",
        "parameters": [
          {
            "description": "The snippet id.",
            "in": "path",
            "name": "encoded_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "A revspec expression. This can simply be a commit SHA1, a ref name, or a compare expression like `staging..production`.",
            "in": "path",
            "name": "revision",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The raw patch contents."
          },
          "403": {
            "description": "If the authenticated user does not have access to the snippet.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the snippet does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "snippet"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "snippets"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "encoded_id",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "revision",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/teams": {
      "get": {
        "description": "Returns all the teams that the authenticated user is associated\nwith.",
        "parameters": [
          {
            "description": "\nFilters the teams based on the authenticated user's role on each team.\n\n* **member**: returns a list of all the teams which the caller is a member of\n  at least one team group or repository owned by the team\n* **contributor**: returns a list of teams which the caller has write access\n  to at least one repository owned by the team\n* **admin**: returns a list teams which the caller has team administrator access\n",
            "enum": [
              "admin",
              "contributor",
              "member"
            ],
            "in": "query",
            "name": "role",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of teams.",
            "schema": {
              "$ref": "#/definitions/paginated_teams"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "team"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams"
        ]
      },
      "parameters": []
    },
    "/teams/{owner}/projects/": {
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "A paginated list of projects that belong to the specified team.",
            "schema": {
              "$ref": "#/definitions/paginated_projects"
            }
          },
          "403": {
            "description": "The requesting user isn't authorized to read the list of projects for the specified team.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "A team doesn't exist at this location.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "project"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "projects"
        ]
      },
      "parameters": [
        {
          "description": "The team which owns the project. This can either be the `username` of\nthe team or the `UUID` of the team (surrounded by curly-braces (`{}`)).\n",
          "in": "path",
          "name": "owner",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new project.\n\nNote that the avatar has to be embedded as either a data-url\nor a URL to an external image as shown in the examples below:\n\n```\n$ body=$(cat << EOF\n{\n    \"name\": \"Mars Project\",\n    \"key\": \"MARS\",\n    \"description\": \"Software for colonizing mars.\",\n    \"links\": {\n        \"avatar\": {\n            \"href\": \"data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/...\"\n        }\n    },\n    \"is_private\": false\n}\nEOF\n)\n$ curl -H \"Content-Type: application/json\" \\\n       -X POST \\\n       -d \"$body\" \\\n       https://api.bitbucket.org/2.0/teams/teams-in-space/projects/ | jq .\n{\n  // Serialized project document\n}\n```\n\nor even:\n\n```\n$ body=$(cat << EOF\n{\n    \"name\": \"Mars Project\",\n    \"key\": \"MARS\",\n    \"description\": \"Software for colonizing mars.\",\n    \"links\": {\n        \"avatar\": {\n            \"href\": \"http://i.imgur.com/72tRx4w.gif\"\n        }\n    },\n    \"is_private\": false\n}\nEOF\n)\n$ curl -H \"Content-Type: application/json\" \\\n       -X POST \\\n       -d \"$body\" \\\n       https://api.bitbucket.org/2.0/teams/teams-in-space/projects/ | jq .\n{\n  // Serialized project document\n}\n```",
        "parameters": [
          {
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/project"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "A new project has been created.",
            "headers": {
              "Location": {
                "description": "The location of the newly created project",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/project"
            }
          },
          "403": {
            "description": "The requesting user isn't authorized to create the project.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "A team doesn't exist at this location.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "project:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "projects"
        ]
      }
    },
    "/teams/{owner}/projects/{project_key}": {
      "delete": {
        "description": "",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Successful deletion."
          },
          "403": {
            "description": "The requesting user isn't authorized to delete the project or the project isn't empty.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "A project isn't hosted at this location.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "project:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "projects"
        ]
      },
      "get": {
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The project object.",
            "schema": {
              "$ref": "#/definitions/project"
            }
          },
          "403": {
            "description": "The requesting user isn't authorized to access the project.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "A project isn't hosted at this location.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "project"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "projects"
        ]
      },
      "parameters": [
        {
          "description": "The team which owns the project. This can either be the `username` of\nthe team or the `UUID` of the team (surrounded by curly-braces (`{}`)).\n",
          "in": "path",
          "name": "owner",
          "required": true,
          "type": "string"
        },
        {
          "description": "The project in question. This can either be the actual `key` assigned\nto the project or the `UUID` (surrounded by curly-braces (`{}`)).\n",
          "in": "path",
          "name": "project_key",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Since this endpoint can be used to both update and to create a\nproject, the request body depends on the intent.\n\n### Creation\n\nSee the POST documentation for the project collection for an\nexample of the request body.\n\nNote: The `key` should not be specified in the body of request\n(since it is already present in the URL). The `name` is required,\neverything else is optional.\n\n### Update\n\nSee the POST documentation for the project collection for an\nexample of the request body.\n\nNote: The key is not required in the body (since it is already in\nthe URL). The key may be specified in the body, if the intent is\nto change the key itself. In such a scenario, the location of the\nproject is changed and is returned in the `Location` header of the\nresponse.",
        "parameters": [
          {
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/project"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The existing project is has been updated.",
            "headers": {
              "Location": {
                "description": "The location of the project. This header is only provided\nwhen the project key is updated.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/project"
            }
          },
          "201": {
            "description": "A new project has been created.",
            "headers": {
              "Location": {
                "description": "The location of the newly created project",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/project"
            }
          },
          "403": {
            "description": "The requesting user isn't authorized to update or create the project.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "A team doesn't exist at the location. Note that the project's absence from this location doesn't raise a 404, since a PUT at a non-existent location can be used to create a new project.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "project:write"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "projects"
        ]
      }
    },
    "/teams/{username}": {
      "get": {
        "description": "Gets the public information associated with a team.\n\nIf the team's profile is private, `location`, `website` and\n`created_on` elements are omitted.",
        "parameters": [
          {
            "description": "The team's username or UUID.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The team object",
            "schema": {
              "$ref": "#/definitions/team"
            }
          },
          "404": {
            "description": "If no team exists for the specified name or UUID, or if the specified account is a personal account, not a team account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/teams/{username}/followers": {
      "get": {
        "description": "Returns the list of accounts that are following this team.",
        "parameters": [
          {
            "description": "The team's username",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of user objects.",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "404": {
            "description": "If no team exists for the specified name, or if the specified account is a personal account, not a team account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/teams/{username}/following": {
      "get": {
        "description": "Returns the list of accounts this team is following.",
        "parameters": [
          {
            "description": "The team's username",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of user objects.",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "404": {
            "description": "If no team exists for the specified name, or if the specified account is a personal account, not a team account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "account"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/teams/{username}/hooks": {
      "get": {
        "description": "Returns a paginated list of webhooks installed on this team.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The paginated list of installed webhooks.",
            "schema": {
              "$ref": "#/definitions/paginated_webhook_subscriptions"
            }
          },
          "403": {
            "description": "If the authenticated user is not an admin on the specified team.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the specified team does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams",
          "webhooks"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new webhook on the specified team.\n\nTeam webhooks are fired for events from all repositories belonging to\nthat team account.\n\nNote that only admins can install webhooks on teams.",
        "parameters": [],
        "responses": {
          "201": {
            "description": "The newly installed webhook.",
            "headers": {
              "Location": {
                "description": "The URL of new newly created webhook.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "403": {
            "description": "If the authenticated user is not an admin on the specified team.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the specified team does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams",
          "webhooks"
        ]
      }
    },
    "/teams/{username}/hooks/{uid}": {
      "delete": {
        "description": "Deletes the specified webhook subscription from the given team\naccount.",
        "parameters": [
          {
            "description": "The installed webhook's id",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "When the webhook was deleted successfully"
          },
          "403": {
            "description": "If the authenticated user does not have permission to delete the webhook.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the webhook or team does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams",
          "webhooks"
        ]
      },
      "get": {
        "description": "Returns the webhook with the specified id installed on the given\nteam account.",
        "parameters": [
          {
            "description": "The installed webhook's id.",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The webhook subscription object.",
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "404": {
            "description": "If the webhook or team does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams",
          "webhooks"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "uid",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Updates the specified webhook subscription.\n\nThe following properties can be mutated:\n\n* `description`\n* `url`\n* `active`\n* `events`",
        "parameters": [
          {
            "description": "The installed webhook's id",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The webhook subscription object.",
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "403": {
            "description": "If the authenticated user does not have permission to update the webhook.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the webhook or team does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams",
          "webhooks"
        ]
      }
    },
    "/teams/{username}/members": {
      "get": {
        "description": "All members of a team.\n\nReturns all members of the specified team. Any member of any of the\nteam's groups is considered a member of the team. This includes users\nin groups that may not actually have access to any of the team's\nrepositories.\n\nNote that members using the \"private profile\" feature are not included.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "All members",
            "schema": {
              "$ref": "#/definitions/user"
            }
          },
          "404": {
            "description": "When the team does not exist, or multiple teams with the same name exist that differ only in casing and the URL did not match the exact casing of a particular one.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "account"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "teams"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/teams/{username}/pipelines_config/variables/": {
      "get": {
        "description": "Find account level variables.",
        "operationId": "getPipelineVariablesForTeam",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The found account level variables.",
            "schema": {
              "$ref": "#/definitions/paginated_pipeline_variables"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "post": {
        "description": "Create an account level variable.",
        "operationId": "createPipelineVariableForTeam",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The variable to create.",
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The created variable.",
            "headers": {
              "Location": {
                "description": "The URL of the newly created pipeline variable.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "409": {
            "description": "A variable with the provided key already exists.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/teams/{username}/pipelines_config/variables/{variable_uuid}": {
      "delete": {
        "description": "Delete a team level variable.",
        "operationId": "deletePipelineVariableForTeam",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable to delete.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "The variable was deleted"
          },
          "404": {
            "description": "The account or the variable with the provided UUID does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "get": {
        "description": "Retrieve a team level variable.",
        "operationId": "getPipelineVariableForTeam",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable to retrieve.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The variable.",
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account or variable with the given UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "put": {
        "description": "Update a team level variable.",
        "operationId": "updatePipelineVariableForTeam",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The updated variable.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The variable was updated.",
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account or the variable was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/teams/{username}/repositories": {
      "get": {
        "description": "All repositories owned by a user/team. This includes private\nrepositories, but filtered down to the ones that the calling user has\naccess to.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users",
          "teams"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/user": {
      "get": {
        "description": "Returns the currently logged in user.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The current user.",
            "schema": {
              "$ref": "#/definitions/user"
            }
          },
          "401": {
            "description": "When the request wasn't authenticated.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "account"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users"
        ]
      },
      "parameters": []
    },
    "/user/emails": {
      "get": {
        "description": "Returns all the authenticated user's email addresses. Both\nconfirmed and unconfirmed.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "email"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users"
        ]
      },
      "parameters": []
    },
    "/user/emails/{email}": {
      "get": {
        "description": "Returns details about a specific one of the authenticated user's\nemail addresses.\n\nDetails describe whether the address has been confirmed by the user and\nwhether it is the user's primary address or not.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "email"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "email",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{username}": {
      "get": {
        "description": "Gets the public information associated with a user account.\n\nIf the user's profile is private, `location`, `website` and\n`created_on` elements are omitted.",
        "parameters": [
          {
            "description": "The account's username or UUID.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The user object",
            "schema": {
              "$ref": "#/definitions/user"
            }
          },
          "404": {
            "description": "If no user exists for the specified name or UUID, or if the specified account is a team account, not a personal account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{username}/followers": {
      "get": {
        "description": "Returns the list of accounts that are following this team.",
        "parameters": [
          {
            "description": "The account's username",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of user objects.",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "404": {
            "description": "If no account exists for the specified name, or if the specified account is a team account, not a personal account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{username}/following": {
      "get": {
        "description": "Returns the list of accounts this user is following.",
        "parameters": [
          {
            "description": "The user's username",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of user objects.",
            "schema": {
              "$ref": "#/definitions/paginated_users"
            }
          },
          "404": {
            "description": "If no user exists for the specified name, or if the specified account is a team account, not a personal account.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "account"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{username}/hooks": {
      "get": {
        "description": "Returns a paginated list of webhooks installed on this user account.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The paginated list of installed webhooks.",
            "schema": {
              "$ref": "#/definitions/paginated_webhook_subscriptions"
            }
          },
          "403": {
            "description": "If the authenticated user is accessing an account other than their own.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the specified account does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users",
          "webhooks"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ],
      "post": {
        "description": "Creates a new webhook on the specified user account.\n\nAccount-level webhooks are fired for events from all repositories\nbelonging to that account.\n\nNote that one can only register webhooks on one's own account, not that\nof others.",
        "parameters": [],
        "responses": {
          "201": {
            "description": "The newly installed webhook.",
            "headers": {
              "Location": {
                "description": "The URL of new newly created webhook.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "403": {
            "description": "If the authenticated user is accessing an account other than their own.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the specified account does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users",
          "webhooks"
        ]
      }
    },
    "/users/{username}/hooks/{uid}": {
      "delete": {
        "description": "Deletes the specified webhook subscription from the given user\naccount.",
        "parameters": [
          {
            "description": "The installed webhook's id",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "When the webhook was deleted successfully"
          },
          "403": {
            "description": "If the authenticated user does not have permission to delete the webhook.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the webhook or user does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users",
          "webhooks"
        ]
      },
      "get": {
        "description": "Returns the webhook with the specified id installed on the given\nuser account.",
        "parameters": [
          {
            "description": "The installed webhook's id.",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The webhook subscription object.",
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "404": {
            "description": "If the webhook or user does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users",
          "webhooks"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        },
        {
          "in": "path",
          "name": "uid",
          "required": true,
          "type": "string"
        }
      ],
      "put": {
        "description": "Updates the specified webhook subscription.\n\nThe following properties can be mutated:\n\n* `description`\n* `url`\n* `active`\n* `events`",
        "parameters": [
          {
            "description": "The installed webhook's id",
            "in": "path",
            "name": "uid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The webhook subscription object.",
            "schema": {
              "$ref": "#/definitions/webhook_subscription"
            }
          },
          "403": {
            "description": "If the authenticated user does not have permission to update the webhook.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "404": {
            "description": "If the webhook or user does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "webhook"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users",
          "webhooks"
        ]
      }
    },
    "/users/{username}/pipelines_config/variables/": {
      "get": {
        "description": "Find user level variables.",
        "operationId": "getPipelineVariablesForUser",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The found user level variables.",
            "schema": {
              "$ref": "#/definitions/paginated_pipeline_variables"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "post": {
        "description": "Create a user level variable.",
        "operationId": "createPipelineVariableForUser",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The variable to create.",
            "in": "body",
            "name": "_body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The created variable.",
            "headers": {
              "Location": {
                "description": "The URL of the newly created pipeline variable.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          },
          "409": {
            "description": "A variable with the provided key already exists.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/users/{username}/pipelines_config/variables/{variable_uuid}": {
      "delete": {
        "description": "Delete an account level variable.",
        "operationId": "deletePipelineVariableForUser",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable to delete.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "The variable was deleted"
          },
          "404": {
            "description": "The account or the variable with the provided UUID does not exist.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "get": {
        "description": "Retrieve a user level variable.",
        "operationId": "getPipelineVariableForUser",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable to retrieve.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The variable.",
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account or variable with the given UUID was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      },
      "put": {
        "description": "Update a user level variable.",
        "operationId": "updatePipelineVariableForUser",
        "parameters": [
          {
            "description": "The account.",
            "in": "path",
            "name": "username",
            "required": true,
            "type": "string"
          },
          {
            "description": "The UUID of the variable.",
            "in": "path",
            "name": "variable_uuid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The updated variable.",
            "in": "body",
            "name": "_body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The variable was updated.",
            "schema": {
              "$ref": "#/definitions/pipeline_variable"
            }
          },
          "404": {
            "description": "The account or the variable was not found.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "tags": [
          "pipelines"
        ]
      }
    },
    "/users/{username}/repositories": {
      "get": {
        "description": "All repositories owned by a user/team. This includes private\nrepositories, but filtered down to the ones that the calling user has\naccess to.",
        "parameters": [],
        "responses": {
          "default": {
            "description": "Unexpected error.",
            "schema": {
              "$ref": "#/definitions/error"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "repository"
            ]
          },
          {
            "basic": []
          },
          {
            "api_key": []
          }
        ],
        "tags": [
          "users",
          "teams"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "username",
          "required": true,
          "type": "string"
        }
      ]
    }
  },
  "definitions": {
    "account": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "An account object.",
          "properties": {
            "created_on": {
              "format": "date-time",
              "type": "string"
            },
            "display_name": {
              "type": "string"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "avatar": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "followers": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "following": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "repositories": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "username": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "type": "string"
            },
            "uuid": {
              "type": "string"
            },
            "website": {
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "author": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "The author of a change in a repository",
          "properties": {
            "raw": {
              "description": "The raw author value from the repository. This may be the only value available if the author does not match a user in Bitbucket.",
              "type": "string"
            },
            "user": {
              "$ref": "#/definitions/account"
            }
          },
          "type": "object"
        }
      ]
    },
    "base_commit": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "The common base type for both repository and snippet commits.",
          "properties": {
            "author": {
              "$ref": "#/definitions/author"
            },
            "date": {
              "format": "date-time",
              "type": "string"
            },
            "hash": {
              "pattern": "[0-9a-f]{7,}?",
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "parents": {
              "items": {
                "$ref": "#/definitions/base_commit"
              },
              "minItems": 0,
              "type": "array"
            }
          },
          "type": "object"
        }
      ]
    },
    "branchrestriction": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A branch restriction rule.",
          "properties": {
            "groups": {
              "items": {
                "$ref": "#/definitions/group"
              },
              "minItems": 0,
              "type": "array"
            },
            "id": {
              "description": "The branch restriction status' id.",
              "type": "integer"
            },
            "kind": {
              "description": "The type of restriction that is being applied",
              "enum": [
                "require_tasks_to_be_completed",
                "require_passing_builds_to_merge",
                "force",
                "require_all_dependencies_merged",
                "push",
                "require_approvals_to_merge",
                "enforce_merge_checks",
                "restrict_merges",
                "reset_pullrequest_approvals_on_change",
                "delete"
              ],
              "type": "string"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "users": {
              "items": {
                "$ref": "#/definitions/account"
              },
              "minItems": 0,
              "type": "array"
            },
            "value": {
              "description": "Value with kind-specific semantics: \"require_approvals_to_merge\" uses it to require a minimum number of approvals on a PR; \"require_passing_builds_to_merge\" uses it to require a minimum number of passing builds.",
              "type": "integer"
            }
          },
          "type": "object"
        }
      ]
    },
    "commit": {
      "allOf": [
        {
          "$ref": "#/definitions/base_commit"
        },
        {
          "additionalProperties": true,
          "description": "A repository commit object.",
          "properties": {
            "links": {
              "additionalProperties": false,
              "properties": {
                "approve": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "comments": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "diff": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "patch": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "statuses": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "participants": {
              "items": {
                "$ref": "#/definitions/participant"
              },
              "minItems": 0,
              "type": "array"
            },
            "repository": {
              "$ref": "#/definitions/repository"
            }
          },
          "type": "object"
        }
      ]
    },
    "commitstatus": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A commit status object.",
          "properties": {
            "created_on": {
              "format": "date-time",
              "type": "string"
            },
            "description": {
              "description": "A description of the build (e.g. \"Unit tests in Bamboo\")",
              "type": "string"
            },
            "key": {
              "description": "An identifier for the status that's unique to\n        its type (current \"build\" is the only supported type) and the vendor,\n        e.g. BB-DEPLOY",
              "type": "string"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "commit": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "description": "An identifier for the build itself, e.g. BB-DEPLOY-1",
              "type": "string"
            },
            "refname": {
              "description": "\nThe name of the ref that pointed to this commit at the time the status\nobject was created. Note that this the ref may since have moved off of\nthe commit. This optional field can be useful for build systems whose\nbuild triggers and configuration are branch-dependent (e.g. a Pipeline\nbuild).\nIt is legitimate for this field to not be set, or even apply (e.g. a\nstatic linting job).",
              "type": "string"
            },
            "state": {
              "description": "Provides some indication of the status of this commit",
              "enum": [
                "SUCCESSFUL",
                "FAILED",
                "INPROGRESS",
                "STOPPED"
              ],
              "type": "string"
            },
            "updated_on": {
              "format": "date-time",
              "type": "string"
            },
            "url": {
              "description": "A URL linking back to the vendor or build system, for providing more information about whatever process produced this status. Accepts context variables `repository` and `commit` that Bitbucket will evaluate at runtime whenever at runtime. For example, one could use https://foo.com/builds/{repository.full_name} which Bitbucket will turn into https://foo.com/builds/foo/bar at render time.",
              "type": "string"
            },
            "uuid": {
              "description": "The commit status' id.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "component": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A component as defined in a repository's issue tracker.",
          "properties": {
            "id": {
              "type": "integer"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "error": {
      "additionalProperties": true,
      "description": "Base type for most resource objects. It defines the common `type` element that identifies an object's type. It also identifies the element as Swagger's `discriminator`.",
      "properties": {
        "error": {
          "additionalProperties": false,
          "properties": {
            "data": {
              "additionalProperties": true,
              "description": "Optional structured data that is endpoint-specific.",
              "properties": {},
              "type": "object"
            },
            "detail": {
              "type": "string"
            },
            "message": {
              "type": "string"
            }
          },
          "required": [
            "message"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "group": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A group object",
          "properties": {
            "full_slug": {
              "description": "The concatenation of the owner's username and the group's slug,\nseparated with a colon (e.g. `acme:developers`)\n",
              "type": "string"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "members": {
              "description": "The number of members in this group",
              "type": "integer"
            },
            "name": {
              "type": "string"
            },
            "owner": {
              "$ref": "#/definitions/account"
            },
            "slug": {
              "description": "The \"sluggified\" version of the group's name. This contains only ASCII\ncharacters and can therefore be slightly different than the name",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "hook_event": {
      "additionalProperties": false,
      "description": "An event, associated with a resource or subject type.",
      "properties": {
        "category": {
          "description": "The category this event belongs to.",
          "type": "string"
        },
        "description": {
          "description": "More detailed description of the webhook event type.",
          "type": "string"
        },
        "event": {
          "description": "The event identifier.",
          "enum": [
            "pullrequest:unapproved",
            "issue:comment_created",
            "pullrequest:approved",
            "repo:created",
            "repo:deleted",
            "repo:imported",
            "pullrequest:comment_updated",
            "issue:updated",
            "project:updated",
            "pullrequest:comment_created",
            "repo:commit_status_updated",
            "pullrequest:updated",
            "issue:created",
            "repo:fork",
            "pullrequest:comment_deleted",
            "repo:commit_status_created",
            "repo:updated",
            "pullrequest:rejected",
            "pullrequest:fulfilled",
            "repo:push",
            "pullrequest:created",
            "repo:transfer",
            "repo:commit_comment_created"
          ],
          "type": "string"
        },
        "label": {
          "description": "Summary of the webhook event type.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "issue": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "An issue.",
          "properties": {
            "assignee": {
              "$ref": "#/definitions/user"
            },
            "component": {
              "$ref": "#/definitions/component"
            },
            "content": {
              "additionalProperties": false,
              "properties": {
                "html": {
                  "description": "The user's markup rendered as HTML.",
                  "type": "string"
                },
                "markup": {
                  "description": "The type of markup language the content is to be interpreted in.",
                  "enum": [
                    "markdown",
                    "creole"
                  ],
                  "type": "string"
                },
                "raw": {
                  "description": "The text as it was typed by a user.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "created_on": {
              "format": "date-time",
              "type": "string"
            },
            "edited_on": {
              "format": "date-time",
              "type": "string"
            },
            "id": {
              "type": "integer"
            },
            "kind": {
              "enum": [
                "bug",
                "enhancement",
                "proposal",
                "task"
              ],
              "type": "string"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "attachments": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "comments": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "vote": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "watch": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "milestone": {
              "$ref": "#/definitions/milestone"
            },
            "priority": {
              "enum": [
                "trivial",
                "minor",
                "major",
                "critical",
                "blocker"
              ],
              "type": "string"
            },
            "reporter": {
              "$ref": "#/definitions/user"
            },
            "repository": {
              "$ref": "#/definitions/repository"
            },
            "state": {
              "enum": [
                "new",
                "open",
                "resolved",
                "on hold",
                "invalid",
                "duplicate",
                "wontfix",
                "closed"
              ],
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "updated_on": {
              "format": "date-time",
              "type": "string"
            },
            "version": {
              "$ref": "#/definitions/version"
            },
            "votes": {
              "type": "integer"
            }
          },
          "type": "object"
        }
      ]
    },
    "issue_attachment": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "An issue file attachment's meta data. Note this does not contain the file's actual contents.",
          "properties": {
            "links": {
              "additionalProperties": false,
              "properties": {
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "milestone": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A milestone as defined in a repository's issue tracker.",
          "properties": {
            "id": {
              "type": "integer"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "object": {
      "additionalProperties": true,
      "description": "Base type for most resource objects. It defines the common `type` element that identifies an object's type. It also identifies the element as Swagger's `discriminator`.",
      "discriminator": "type",
      "properties": {
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "page": {
      "additionalProperties": false,
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "type": "object"
    },
    "paginated_branchrestrictions": {
      "additionalProperties": false,
      "description": "A paginated list of branch restriction rules.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/branchrestriction"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_commitstatuses": {
      "additionalProperties": false,
      "description": "A paginated list of commit status objects.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/commitstatus"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_components": {
      "additionalProperties": false,
      "description": "A paginated list of issue tracker components.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/component"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_hook_events": {
      "additionalProperties": false,
      "description": "A paginated list of webhook types available to subscribe on.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/hook_event"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_issue_attachments": {
      "additionalProperties": false,
      "description": "A paginated list of issue attachments.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/issue_attachment"
          },
          "minItems": 0,
          "type": "array"
        }
      },
      "type": "object"
    },
    "paginated_issues": {
      "additionalProperties": false,
      "description": "A paginated list of issues.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/issue"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_milestones": {
      "additionalProperties": false,
      "description": "A paginated list of issue tracker milestones.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/milestone"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_pipeline_known_hosts": {
      "description": "A paged list of known hosts.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "type": "integer"
        },
        "values": {
          "description": "The values of the current page.",
          "items": {
            "$ref": "#/definitions/pipeline_known_host"
          },
          "minItems": 0,
          "type": "array"
        }
      },
      "type": "object"
    },
    "paginated_pipeline_steps": {
      "description": "A paged list of pipeline steps.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "type": "integer"
        },
        "values": {
          "description": "The values of the current page.",
          "items": {
            "$ref": "#/definitions/pipeline_step"
          },
          "minItems": 0,
          "type": "array"
        }
      },
      "type": "object"
    },
    "paginated_pipeline_variables": {
      "description": "A paged list of variables.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "type": "integer"
        },
        "values": {
          "description": "The values of the current page.",
          "items": {
            "$ref": "#/definitions/pipeline_variable"
          },
          "minItems": 0,
          "type": "array"
        }
      },
      "type": "object"
    },
    "paginated_pipelines": {
      "description": "A paged list of pipelines",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "type": "integer"
        },
        "values": {
          "description": "The values of the current page.",
          "items": {
            "$ref": "#/definitions/pipeline"
          },
          "minItems": 0,
          "type": "array"
        }
      },
      "type": "object"
    },
    "paginated_projects": {
      "additionalProperties": false,
      "description": "A paginated list of projects",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/project"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_pullrequests": {
      "additionalProperties": false,
      "description": "A paginated list of pullrequests.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/pullrequest"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_repositories": {
      "additionalProperties": false,
      "description": "A paginated list of repositories.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/repository"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_snippet_comments": {
      "additionalProperties": false,
      "description": "A paginated list of snippet comments.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/snippet_comment"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_snippet_commit": {
      "additionalProperties": false,
      "description": "A paginated list of snippet commits.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/snippet_commit"
          },
          "minItems": 0,
          "type": "array"
        }
      },
      "type": "object"
    },
    "paginated_snippets": {
      "additionalProperties": false,
      "description": "A paginated list of snippets.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/snippet"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_teams": {
      "additionalProperties": false,
      "description": "A paginated list of teams.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/team"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_users": {
      "additionalProperties": false,
      "description": "A paginated list of users.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/user"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_versions": {
      "additionalProperties": false,
      "description": "A paginated list of issue tracker versions.",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/version"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "paginated_webhook_subscriptions": {
      "additionalProperties": false,
      "description": "A paginated list of webhook subscriptions",
      "properties": {
        "next": {
          "description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "page": {
          "description": "Page number of the current results. This is an optional element that is not provided in all responses.",
          "minimum": 1,
          "type": "integer"
        },
        "pagelen": {
          "description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
          "minimum": 1,
          "type": "integer"
        },
        "previous": {
          "description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
          "format": "uri",
          "type": "string"
        },
        "size": {
          "description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
          "minimum": 0,
          "type": "integer"
        },
        "values": {
          "items": {
            "$ref": "#/definitions/webhook_subscription"
          },
          "minItems": 0,
          "type": "array",
          "uniqueItems": true
        }
      },
      "type": "object"
    },
    "participant": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "Object describing a user's role on resources like commits or pull requests.",
          "properties": {
            "approved": {
              "type": "boolean"
            },
            "role": {
              "enum": [
                "PARTICIPANT",
                "REVIEWER"
              ],
              "type": "string"
            },
            "user": {
              "$ref": "#/definitions/user"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipeline. This represents an actual pipeline result.",
          "properties": {
            "build_seconds_used": {
              "description": "The number of build seconds used by this pipeline.",
              "type": "integer"
            },
            "completed_on": {
              "description": "The timestamp when the Pipeline was completed. This is not set if the pipeline is still in progress.",
              "format": "date-time",
              "type": "string"
            },
            "created_on": {
              "description": "The timestamp when the pipeline was created.",
              "format": "date-time",
              "type": "string"
            },
            "creator": {
              "$ref": "#/definitions/account",
              "description": "The Bitbucket account that was used to create the pipeline."
            },
            "repository": {
              "$ref": "#/definitions/repository"
            },
            "state": {
              "$ref": "#/definitions/pipeline_state"
            },
            "target": {
              "$ref": "#/definitions/pipeline_target",
              "description": "The target that the pipeline built."
            },
            "trigger": {
              "$ref": "#/definitions/pipeline_trigger",
              "description": "The trigger used for the pipeline."
            },
            "uuid": {
              "description": "The UUID identifying the pipeline.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_command": {
      "description": "An executable pipeline command.",
      "properties": {
        "command": {
          "description": "The executable command.",
          "type": "string"
        },
        "log_range": {
          "$ref": "#/definitions/pipeline_log_range",
          "description": "The range in the log that contains the execution output of this command."
        },
        "name": {
          "description": "The name of the command.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "pipeline_commit_target": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_target"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines commit target.",
          "properties": {
            "commit": {
              "$ref": "#/definitions/commit"
            },
            "selector": {
              "$ref": "#/definitions/pipeline_selector"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_error": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "An error causing a pipeline failure.",
          "properties": {
            "key": {
              "description": "The error key.",
              "type": "string"
            },
            "message": {
              "description": "The error message.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_image": {
      "description": "The definition of a Docker image that can be used for a Bitbucket Pipelines step execution context.",
      "properties": {
        "email": {
          "description": "The email needed to authenticate with the Docker registry. Only required when using a private Docker image.",
          "type": "string"
        },
        "name": {
          "description": "The name of the image. If the image is hosted on DockerHub the short name can be used, otherwise the fully qualified name is required here.",
          "type": "string"
        },
        "password": {
          "description": "The password needed to authenticate with the Docker registry. Only required when using a private Docker image.",
          "type": "string"
        },
        "username": {
          "description": "The username needed to authenticate with the Docker registry. Only required when using a private Docker image.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "pipeline_known_host": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Pipelines known host.",
          "properties": {
            "hostname": {
              "description": "The hostname of the known host.",
              "type": "string"
            },
            "public_key": {
              "$ref": "#/definitions/pipeline_ssh_public_key",
              "description": "The public key of the known host."
            },
            "uuid": {
              "description": "The UUID identifying the known host.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_log_range": {
      "description": "A reference to a range of bytes in a log file (does not contain the actual bytes).",
      "properties": {
        "first_byte_position": {
          "description": "The position of the first byte of the range in the log.",
          "type": "integer"
        },
        "last_byte_position": {
          "description": "The position of the last byte of the range in the log.",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "pipeline_ref_target": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_target"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines reference target.",
          "properties": {
            "commit": {
              "$ref": "#/definitions/commit"
            },
            "ref_name": {
              "description": "The name of the reference.",
              "type": "string"
            },
            "ref_type": {
              "description": "The type of reference (branch/tag).",
              "enum": [
                "branch",
                "tag",
                "named_branch",
                "bookmark"
              ],
              "type": "string"
            },
            "selector": {
              "$ref": "#/definitions/pipeline_selector"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_selector": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A representation of the selector that was used to identify the pipeline in the YML file.",
          "properties": {
            "pattern": {
              "description": "The name of the matching pipeline definition.",
              "type": "string"
            },
            "type": {
              "description": "The type of selector.",
              "enum": [
                "branches",
                "tags",
                "bookmarks",
                "default",
                "custom"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_ssh_key_pair": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Pipelines SSH key pair.",
          "properties": {
            "private_key": {
              "description": "The SSH private key. This value will be empty when retrieving the SSH key pair.",
              "type": "string"
            },
            "public_key": {
              "description": "The SSH public key.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_ssh_public_key": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Pipelines known host public key.",
          "properties": {
            "key": {
              "description": "The base64 encoded public key.",
              "type": "string"
            },
            "key_type": {
              "description": "The type of the public key.",
              "type": "string"
            },
            "md5_fingerprint": {
              "description": "The MD5 fingerprint of the public key.",
              "type": "string"
            },
            "sha256_fingerprint": {
              "description": "The SHA-256 fingerprint of the public key.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_state": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "The representation of the progress state of a pipeline.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_state_completed": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_state"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines COMPLETED pipeline state.",
          "properties": {
            "name": {
              "description": "The name of pipeline state (COMPLETED).",
              "enum": [
                "COMPLETED"
              ],
              "type": "string"
            },
            "result": {
              "$ref": "#/definitions/pipeline_state_completed_result",
              "description": "A result of a completed state of a pipeline."
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_state_completed_error": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines ERROR pipeline result.",
          "properties": {
            "error": {
              "$ref": "#/definitions/pipeline_error",
              "description": "An error result of a completed state of a Bitbucket Pipeline."
            },
            "name": {
              "description": "The name of the result (ERROR)",
              "enum": [
                "ERROR"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_state_completed_failed": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines FAILED pipeline result.",
          "properties": {
            "name": {
              "description": "The name of the failed result (FAILED).",
              "enum": [
                "FAILED"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_state_completed_result": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A result of a completed pipeline state.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_state_completed_stopped": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines STOPPED pipeline result.",
          "properties": {
            "name": {
              "description": "The name of the stopped result (STOPPED).",
              "enum": [
                "STOPPED"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_state_completed_successful": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines SUCCESSFUL pipeline result.",
          "properties": {
            "name": {
              "description": "The name of the successful result (SUCCESSFUL).",
              "enum": [
                "SUCCESSFUL"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_state_in_progress": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_state"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines IN_PROGRESS pipeline state.",
          "properties": {
            "name": {
              "description": "The name of pipeline state (IN_PROGRESS).",
              "enum": [
                "IN_PROGRESS"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_state_pending": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_state"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines PENDING pipeline state.",
          "properties": {
            "name": {
              "description": "The name of pipeline state (PENDING).",
              "enum": [
                "PENDING"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A step of a Bitbucket pipeline. This represents the actual result of the step execution.",
          "properties": {
            "completed_on": {
              "description": "The timestamp when the step execution was completed. This is not set if the step is still in progress.",
              "format": "date-time",
              "type": "string"
            },
            "image": {
              "$ref": "#/definitions/pipeline_image",
              "description": "The Docker image used as the build container for the step."
            },
            "logByteCount": {
              "description": "The amount of bytes of the log file that is available.",
              "type": "integer"
            },
            "script_commands": {
              "description": "The list of build commands. These commands are executed in the build container.",
              "items": {
                "$ref": "#/definitions/pipeline_command"
              },
              "type": "array"
            },
            "setup_commands": {
              "description": "The list of commands that are executed as part of the setup phase of the build. These commands are executed outside the build container.",
              "items": {
                "$ref": "#/definitions/pipeline_command"
              },
              "type": "array"
            },
            "started_on": {
              "description": "The timestamp when the step execution was started. This is not set when the step hasn't executed yet.",
              "format": "date-time",
              "type": "string"
            },
            "state": {
              "$ref": "#/definitions/pipeline_step_state",
              "description": "The current state of the step"
            },
            "uuid": {
              "description": "The UUID identifying the step.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_error": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "An error causing a step failure.",
          "properties": {
            "key": {
              "description": "The error key.",
              "type": "string"
            },
            "message": {
              "description": "The error message.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_state": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "The representation of the progress state of a pipeline step.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_completed": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_step_state"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines COMPLETED pipeline step state.",
          "properties": {
            "name": {
              "description": "The name of pipeline step state (COMPLETED).",
              "enum": [
                "COMPLETED"
              ],
              "type": "string"
            },
            "result": {
              "$ref": "#/definitions/pipeline_step_state_completed_result",
              "description": "A result of a completed state of a pipeline step."
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_completed_error": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_step_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines ERROR pipeline step result.",
          "properties": {
            "error": {
              "$ref": "#/definitions/pipeline_step_error",
              "description": "An error result of a completed state of a Bitbucket Pipeline step."
            },
            "name": {
              "description": "The name of the result (ERROR)",
              "enum": [
                "ERROR"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_completed_failed": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_step_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines FAILED pipeline step result.",
          "properties": {
            "name": {
              "description": "The name of the result (FAILED)",
              "enum": [
                "FAILED"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_completed_result": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A result of a completed pipeline step state.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_completed_stopped": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_step_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines STOPPED pipeline step result.",
          "properties": {
            "name": {
              "description": "The name of the result (STOPPED)",
              "enum": [
                "STOPPED"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_completed_successful": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_step_state_completed_result"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines SUCCESSFUL pipeline step result.",
          "properties": {
            "name": {
              "description": "The name of the result (SUCCESSFUL)",
              "enum": [
                "SUCCESSFUL"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_in_progress": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_step_state"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines IN_PROGRESS pipeline step state.",
          "properties": {
            "name": {
              "description": "The name of pipeline step state (IN_PROGRESS).",
              "enum": [
                "IN_PROGRESS"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_step_state_pending": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_step_state"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines PENDING pipeline step state.",
          "properties": {
            "name": {
              "description": "The name of pipeline step state (PENDING).",
              "enum": [
                "PENDING"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipeline_target": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A representation of the target that a pipeline executes on.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_trigger": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A representation of the trigger used for a pipeline.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_trigger_manual": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_trigger"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines MANUAL trigger.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_trigger_push": {
      "allOf": [
        {
          "$ref": "#/definitions/pipeline_trigger"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket Pipelines PUSH trigger.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "pipeline_variable": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Pipelines variable.",
          "properties": {
            "key": {
              "description": "The unique name of the variable.",
              "type": "string"
            },
            "secured": {
              "description": "If true, this variable will be treated as secured. The value will never be exposed in the logs or the REST API.",
              "type": "boolean"
            },
            "uuid": {
              "description": "The UUID identifying the variable.",
              "type": "string"
            },
            "value": {
              "description": "The value of the variable. If the variable is secured, this will be empty.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pipelines_config": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "The Pipelines configuration for a repository.",
          "properties": {
            "enabled": {
              "description": "Whether Pipelines is enabled for the repository.",
              "type": "boolean"
            },
            "repository": {
              "$ref": "#/definitions/repository"
            }
          },
          "type": "object"
        }
      ]
    },
    "project": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket project.\n            Projects are used by teams to organize repositories.",
          "properties": {
            "created_on": {
              "format": "date-time",
              "type": "string"
            },
            "description": {
              "type": "string"
            },
            "is_private": {
              "description": "\nIndicates whether the project is publicly accessible, or whether it is\nprivate to the team and consequently only visible to team members.\nNote that private projects cannot contain public repositories.",
              "type": "boolean"
            },
            "key": {
              "description": "The project's key.",
              "type": "string"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "avatar": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "description": "The name of the project.",
              "type": "string"
            },
            "owner": {
              "$ref": "#/definitions/team"
            },
            "updated_on": {
              "format": "date-time",
              "type": "string"
            },
            "uuid": {
              "description": "The project's immutable id.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pullrequest": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A pull request object.",
          "properties": {
            "author": {
              "$ref": "#/definitions/account"
            },
            "close_source_branch": {
              "description": "A boolean flag indicating if merging the pull request closes the source branch.",
              "type": "boolean"
            },
            "closed_by": {
              "$ref": "#/definitions/account"
            },
            "comment_count": {
              "description": "The number of comments for a specific pull request.",
              "minimum": 0,
              "type": "integer"
            },
            "created_on": {
              "description": "The ISO8601 timestamp the request was created.",
              "format": "date-time",
              "type": "string"
            },
            "destination": {
              "$ref": "#/definitions/pullrequest_endpoint"
            },
            "id": {
              "description": "The pull request's unique ID. Note that pull request IDs are only unique within their associated repository.",
              "type": "integer"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "activity": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "approve": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "comments": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "commits": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "decline": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "diff": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "merge": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "merge_commit": {
              "additionalProperties": false,
              "properties": {
                "hash": {
                  "pattern": "[0-9a-f]{7,}?",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "participants": {
              "description": "        The list of users that are collaborating on this pull request.\n        Collaborators are user that:\n\n        * are added to the pull request as a reviewer (part of the reviewers\n          list)\n        * are not explicit reviewers, but have commented on the pull request\n        * are not explicit reviewers, but have approved the pull request\n\n        Each user is wrapped in an object that indicates the user's role and\n        whether they have approved the pull request. For performance reasons,\n        the API only returns this list when an API requests a pull request by\n        id.\n        ",
              "items": {
                "$ref": "#/definitions/participant"
              },
              "type": "array"
            },
            "reason": {
              "description": "Explains why a pull request was declined. This field is only applicable to pull requests in rejected state.",
              "type": "string"
            },
            "reviewers": {
              "description": "The list of users that were added as reviewers on this pull request when it was created. For performance reasons, the API only includes this list on a pull request's `self` URL.",
              "items": {
                "$ref": "#/definitions/account"
              },
              "type": "array"
            },
            "source": {
              "$ref": "#/definitions/pullrequest_endpoint"
            },
            "state": {
              "description": "The pull request's current status.",
              "enum": [
                "MERGED",
                "SUPERSEDED",
                "OPEN",
                "DECLINED"
              ],
              "type": "string"
            },
            "task_count": {
              "description": "The number of open tasks for a specific pull request.",
              "minimum": 0,
              "type": "integer"
            },
            "title": {
              "description": "Title of the pull request.",
              "type": "string"
            },
            "updated_on": {
              "description": "The ISO8601 timestamp the request was last updated.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "pullrequest_endpoint": {
      "additionalProperties": false,
      "properties": {
        "branch": {
          "additionalProperties": false,
          "properties": {
            "name": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "commit": {
          "additionalProperties": false,
          "properties": {
            "hash": {
              "pattern": "[0-9a-f]{7,}?",
              "type": "string"
            }
          },
          "type": "object"
        },
        "repository": {
          "$ref": "#/definitions/repository"
        }
      },
      "type": "object"
    },
    "pullrequest_merge_parameters": {
      "additionalProperties": true,
      "description": "The metadata that describes a pull request merge.",
      "properties": {
        "close_source_branch": {
          "description": "Whether the source branch should be deleted. If this is not provided, we fallback to the value used when the pull request was created, which defaults to False",
          "type": "boolean"
        },
        "merge_strategy": {
          "default": "merge_commit",
          "description": "The merge strategy that will be used to merge the pull request.",
          "enum": [
            "merge_commit",
            "squash"
          ],
          "type": "string"
        },
        "message": {
          "description": "The commit message that will be used on the resulting commit.",
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "repository": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Bitbucket repository.",
          "properties": {
            "created_on": {
              "format": "date-time",
              "type": "string"
            },
            "description": {
              "type": "string"
            },
            "fork_policy": {
              "description": "\nControls the rules for forking this repository.\n\n* **allow_forks**: unrestricted forking\n* **no_public_forks**: restrict forking to private forks (forks cannot\n  be made public later)\n* **no_forks**: deny all forking\n",
              "enum": [
                "allow_forks",
                "no_public_forks",
                "no_forks"
              ],
              "type": "string"
            },
            "full_name": {
              "description": "The concatenation of the repository owner's username and the slugified name, e.g. \"evzijst/interruptingcow\". This is the same string used in Bitbucket URLs.",
              "type": "string"
            },
            "has_issues": {
              "type": "boolean"
            },
            "has_wiki": {
              "type": "boolean"
            },
            "is_private": {
              "type": "boolean"
            },
            "language": {
              "type": "string"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "avatar": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "clone": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "commits": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downloads": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "forks": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "hooks": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "pullrequests": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "watchers": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "type": "string"
            },
            "owner": {
              "$ref": "#/definitions/account"
            },
            "parent": {
              "$ref": "#/definitions/repository"
            },
            "project": {
              "$ref": "#/definitions/project"
            },
            "scm": {
              "enum": [
                "hg",
                "git"
              ],
              "type": "string"
            },
            "size": {
              "type": "integer"
            },
            "updated_on": {
              "format": "date-time",
              "type": "string"
            },
            "uuid": {
              "description": "The repository's immutable id. This can be used as a substitute for the slug segment in URLs. Doing this guarantees your URLs will survive renaming of the repository by its owner, or even transfer of the repository to a different user.",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "snippet": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A snippet object.",
          "properties": {
            "created_on": {
              "format": "date-time",
              "type": "string"
            },
            "creator": {
              "$ref": "#/definitions/account"
            },
            "id": {
              "minimum": 0,
              "type": "integer"
            },
            "is_private": {
              "type": "boolean"
            },
            "owner": {
              "$ref": "#/definitions/account"
            },
            "scm": {
              "description": "The DVCS used to store the snippet.",
              "enum": [
                "hg",
                "git"
              ],
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "updated_on": {
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "snippet_comment": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A comment on a snippet.",
          "properties": {
            "links": {
              "additionalProperties": false,
              "properties": {
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "snippet": {
              "$ref": "#/definitions/snippet"
            }
          },
          "type": "object"
        }
      ]
    },
    "snippet_commit": {
      "allOf": [
        {
          "$ref": "#/definitions/base_commit"
        },
        {
          "additionalProperties": true,
          "description": "",
          "properties": {
            "links": {
              "additionalProperties": false,
              "properties": {
                "diff": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "html": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "snippet": {
              "$ref": "#/definitions/snippet"
            }
          },
          "type": "object"
        }
      ]
    },
    "subject_types": {
      "additionalProperties": false,
      "description": "The mapping of resource/subject types pointing to their individual event types.",
      "properties": {
        "repository": {
          "additionalProperties": false,
          "properties": {
            "events": {
              "additionalProperties": false,
              "properties": {
                "href": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "team": {
          "additionalProperties": false,
          "properties": {
            "events": {
              "additionalProperties": false,
              "properties": {
                "href": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "user": {
          "additionalProperties": false,
          "properties": {
            "events": {
              "additionalProperties": false,
              "properties": {
                "href": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "tag": {
      "additionalProperties": true,
      "description": "A tag object, representing a tag in a repository.",
      "properties": {
        "date": {
          "description": "The date that the tag was created, if available",
          "format": "date-time",
          "type": "string"
        },
        "links": {
          "additionalProperties": false,
          "properties": {
            "commits": {
              "additionalProperties": false,
              "properties": {
                "href": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "html": {
              "additionalProperties": false,
              "properties": {
                "href": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "self": {
              "additionalProperties": false,
              "properties": {
                "href": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "message": {
          "description": "The message associated with the tag, if available.",
          "type": "string"
        },
        "name": {
          "description": "The name of the tag.",
          "type": "string"
        },
        "tagger": {
          "$ref": "#/definitions/author"
        },
        "target": {
          "$ref": "#/definitions/commit"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "team": {
      "allOf": [
        {
          "$ref": "#/definitions/account"
        },
        {
          "additionalProperties": true,
          "description": "A team object.",
          "properties": {},
          "type": "object"
        }
      ]
    },
    "user": {
      "allOf": [
        {
          "$ref": "#/definitions/account"
        },
        {
          "additionalProperties": true,
          "description": "A user object.",
          "properties": {
            "account_id": {
              "description": "The user's Atlassian account ID.",
              "type": "string"
            },
            "is_staff": {
              "type": "boolean"
            }
          },
          "type": "object"
        }
      ]
    },
    "version": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A version as defined in a repository's issue tracker.",
          "properties": {
            "id": {
              "type": "integer"
            },
            "links": {
              "additionalProperties": false,
              "properties": {
                "self": {
                  "additionalProperties": false,
                  "properties": {
                    "href": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "webhook_subscription": {
      "allOf": [
        {
          "$ref": "#/definitions/object"
        },
        {
          "additionalProperties": true,
          "description": "A Webhook subscription.",
          "properties": {
            "active": {
              "type": "boolean"
            },
            "created_at": {
              "format": "date-time",
              "type": "string"
            },
            "description": {
              "description": "A user-defined description of the webhook.",
              "type": "string"
            },
            "events": {
              "description": "The events this webhook is subscribed to.",
              "items": {
                "enum": [
                  "pullrequest:unapproved",
                  "issue:comment_created",
                  "pullrequest:approved",
                  "repo:created",
                  "repo:deleted",
                  "repo:imported",
                  "pullrequest:comment_updated",
                  "issue:updated",
                  "project:updated",
                  "pullrequest:comment_created",
                  "repo:commit_status_updated",
                  "pullrequest:updated",
                  "issue:created",
                  "repo:fork",
                  "pullrequest:comment_deleted",
                  "repo:commit_status_created",
                  "repo:updated",
                  "pullrequest:rejected",
                  "pullrequest:fulfilled",
                  "repo:push",
                  "pullrequest:created",
                  "repo:transfer",
                  "repo:commit_comment_created"
                ],
                "type": "string"
              },
              "minItems": 1,
              "type": "array",
              "uniqueItems": true
            },
            "subject": {
              "$ref": "#/definitions/object"
            },
            "subject_type": {
              "description": "The type of entity, which is `repository` in the case of webhook subscriptions on repositories.",
              "enum": [
                "user",
                "repository",
                "team"
              ],
              "type": "string"
            },
            "url": {
              "description": "The URL events get delivered to.",
              "format": "uri",
              "type": "string"
            },
            "uuid": {
              "description": "The webhook's id",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    }
  },
  "x-radar-pages": [
    {
      "content": "\n# Authentication methods\n\nThe purpose of this section is to describe how to authenticate when making API calls using the Bitbucket REST API.\n\n-----\n\n*On this page*\n\n* [Oauth 2](#oauth-2)\n  * [Making requests](#make-requests)\n  * [Repository cloning](#repo-clone)\n  * [Refresh tokens](#refresh-tokens)\n* [Scopes](#scopes-bbc)\n* [App passwords](#app-pw)\n* [Basic auth](#basic-auth)\n\n---\n\n# Bitbucket Cloud OAuth 2.0 <a name=\"oauth-2\"></a>\n\nOur OAuth 2 implementation is merged in with our existing OAuth 1 in\nsuch a way that existing OAuth 1 consumers automatically become\nvalid OAuth 2 clients. The only thing you need to do is edit your\nexisting consumer and configure a callback URL.\n\nOnce that is in place, you'll have the following 2 URLs:\n\n    https://bitbucket.org/site/oauth2/authorize\n    https://bitbucket.org/site/oauth2/access_token\n\nFor obtaining access/bearer tokens, we support all 4 of RFC-6749's grant\nflows, plus a custom Bitbucket flow for exchanging JWT tokens for access tokens:\n\n\n### 1. Authorization Code Grant (4.1)\n\nThe full-blown 3-LO flow. Request authorization from the end user by\nsending their browser to:\n\n    https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=code\n\nThe callback includes the `?code={}` query parameter that you can swap\nfor an access token:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=authorization_code -d code={code}\n\n\n### 2. Implicit Grant (4.2)\n\nThis flow is useful for browser-based add-ons that operate without server-side backends.\n\nRequest the end user for authorization by directing the browser to:\n\n    https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=token\n\nThat will redirect to your preconfigured callback URL with a fragment\ncontaining the access token\n(`#access_token={token}&token_type=bearer`) where your page's js can\npull it out of the URL.\n\n\n### 3. Resource Owner Password Credentials Grant (4.3)\n\nUseful if you have the end user's password but you want to use a more\nsecure end user access token instead. This method will not work when the user has two-step verification enabled.\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token -d grant_type=password \\\n      -d username={username} -d password={password}\n\n\n### 4. Client Credentials Grant (4.4)\n\nSomewhat like our existing \"2-LO\" flow for OAuth 1. Obtain an access\ntoken that represents not an end user, but the owner of the\nclient/consumer:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=client_credentials\n\n\n### 5. Bitbucket Cloud JWT Grant (urn:bitbucket:oauth2:jwt)\n\nIf your Atlassian Connect add-on uses JWT authentication, you can swap a\nJWT for an OAuth access token. The resulting access token represents the\naccount for which the add-on is installed.\n\nMake sure you send the JWT token in the Authorization request header\nusing the \"JWT\" scheme (case sensitive). Note that this custom scheme\nmakes this different from HTTP Basic Auth (and so you cannot use \"curl\n-u\").\n\n    $ curl -X POST -H \"Authorization: JWT {jwt_token}\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=urn:bitbucket:oauth2:jwt\n\n\n## Making Requests <a name=\"make-requests\"></a>\n\nOnce you have an access token, as per RFC-6750, you can use it in a request in any of\nthe following ways (in decreasing order of desirability):\n\n1. Send it in a request header: `Authorization: Bearer {access_token}`\n2. Include it in a (application/x-www-form-urlencoded) POST body as `access_token={access_token}`\n3. Put it in the query string of a non-POST: `?access_token={access_token}`\n\n\n## Repository Cloning <a name=\"repo-clone\"></a>\n\nSince add-ons will not be able to upload their own SSH keys to clone\nwith, access tokens can be used as Basic HTTP Auth credentials to\nclone securely over HTTPS. This is much like GitHub, yet slightly\ndifferent:\n\n    $ git clone https://x-token-auth:{access_token}@bitbucket.org/user/repo.git\n\nThe literal string `x-token-auth` as a substitute for username is\nrequired (note the difference with GitHub where the actual token is in\nthe username field).\n\n\n## Refresh Tokens <a name=\"refresh-tokens\"></a>\n\nOur access tokens expire in one hour. When this happens you'll get 401\nresponses.\n\nMost access tokens grant responses (Implicit and JWT excluded). Therefore, you should include a\nrefresh token that can then be used to generate a new access token,\nwithout the need for end user participation:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=refresh_token -d refresh_token={refresh_token}\n\n\n# Scopes for the Bitbucket Cloud REST API <a name=\"scopes-bbc\"></a>\n\nBitbucket's API applies a number of privilege scopes to endpoints. In order to access an endpoint, a request will need to have the necessary scopes.\n\nScopes are declared in the descriptor as a list of strings, with each string being the name of a unique scope.\n\nA descriptor lacking the `scopes` element is implicitly assumed to require all scopes and as a result, Bitbucket will require end users authorizing/installing the add-on\nto explicitly accept all scopes.\n\nOur best practice suggests you add the scopes your add-on needs, but no more than it needs.\n\nInvalid scope strings will cause the descriptor to be rejected and the installation to fail.\n\nFollowing is the set of all currently available scopes.\n\n### repository\n\nGives the add-on read access to all the repositories the authorizing user has access to.\nNote that this scope does not give access to a repository's pull requests.\n\n* access to the repo's source code\n* clone over https\n* access the the file browsing API\n* download zip archives of the repo's contents\n* the ability to view and use the issue tracker on any repo (created issues, comment, vote, etc)\n* the ability to view and use the wiki on any repo (create/edit pages)\n\n### repository:write\n\nGives the add-on write (not admin) access to all the repositories the authorizing user has access to. No distinction is made between public or private repos. This scope implies `repository`, which does not need to be requested separately.\nThis scope alone does not give access to the pull requests API.\n\n* push access over https\n* fork repos\n\n### repository:admin\n\nGives the add-on admin access to all the repositories the authorizing user has access to. No distinction is made between public or private repos. This scope does not imply `repository` or `repository:write`. It gives access to the admin features of a repo only, not direct access to its contents. Of course it can be (mis)used to grant read access to another user account who can then clone the repo, but repos that need to read of write source code would also request explicit read or write.\nThis scope comes with access to the following functionality:\n\n* view and manipulate committer mappings\n* list and edit deploy keys\n* ability to delete the repo\n* view and edit repo permissions\n* view and edit branch permissions\n* import and export the issue tracker\n* enable and disable the issue tracker\n* list and edit issue tracker version, milestones and components\n* enable and disable the wiki\n* list and edit default reviewers\n* list and edit repo links (JIRA/Bamboo/Custom)\n* list and edit the repository web hooks\n* initiate a repo ownership transfer\n\n### snippet\n\nGives the add-on read access to all the snippets the authorizing user has access to.\nNo distinction is made between public and private snippets (public snippets are accessible without any form of authentication).\n\n* view any snippet\n* create snippet comments\n\n### snippet:write\n\nGives the add-on write access to all the snippets the authorizing user can edit.\nNo distinction is made between public and private snippets (public snippets are accessible without any form of authentication).\nThis implies the Snippet Read scope which does not need to be requested separately.\n\n* edit snippets\n* delete snippets\n\n### issue\n\nAbility to interact with issue trackers the way non-repo members can.\nThis scope does not imply any other scopes and does not give implicit access to the repository the issue is attached to.\n\n* view, list and search issues\n* create new issues\n* comment on issues\n* watch issues\n* vote for issues\n\n### issue:write\n\nThis implies `issue`, but adds the ability to transition and delete issues.\nThis scope does not imply any other scopes and does not give implicit access to the repository the issue is attached to.\n\n* transition issues\n* delete issues\n\n### wiki\n\nGives access to wikis. No distinction is made between read and write as wikis are always editable by anyone.\nThis scope does not imply any other scopes and does not give implicit access to the repository the wiki is attached to.\n\n* view wikis\n* create pages\n* edit pages\n* push to wikis\n* clone wikis\n\n### pullrequest\n\nGives the add-on read access to pull requests.\nThis scope implies `repository`, giving read access to the pull request's destination repository.\n\n* see and list pull requests\n* create and resolve tasks\n\n### pullrequest:write\n\nImplies `pullrequest` but adds the ability to create, merge and decline pull requests.\nThis scope implies `repository:write`, giving write access to the pull request's destination repository. This is necessary to facilitate merging.\n\n* merge pull requests\n* decline pull requests\n* create pull requests\n* comment on pull requests\n* approve pull requests\n\n### email\n\nAbility to see the user's primary email address. This should make it easier to use Bitbucket Cloud as a login provider to add-ons or external applications.\n\n### account\n\nAbility to see all the user's account information. Note that this does not include any ability to mutate any of the data.\n\n* see all email addresses\n* language\n* location\n* website\n* full name\n* SSH keys\n* user groups\n\n### account:write\n\nAbility to change properties on the user's account.\n\n* delete the authorizing user's account\n* manage the user's groups\n* manupilate a user's email addresses\n* change username, display name and avatar\n\n### team\n\nThe ability to find out what teams the current user is part of. This is covered by the teams endpoint.\n\n* information about all the groups and teams I am a member or admin of\n\n\n### team:write\n\nImplies `team`, but adds the ability to manage the teams that the authorizing user is an admin on.\n\n* manage team permissions\n\n### webhook\n\nGives access to webhooks. This scope is required for any webhook\nrelated operation.\n\nThis scope gives read access to existing webhook subscriptions on all\nresources you can access, without needing further scopes. This means that\na client can list all existing webhook subscriptions on repository\n`foo/bar` (assuming the principal user has access to this repo). The\nadditional `repository` scope is not required for this.\n\nLikewise, existing webhook subscriptions for a repo's issue tracker can be\nretrieved without holding the `issue` scope. All that is required is the\n`webhook` scope.\n\nHowever, to create a webhook for `issue:created`, the client will need to\nhave both the `webhook` as well as `issue` scope.\n\n* list webhook subscriptions on any accessible repository, user, team, or snippet\n* create/update/delete webhook subscriptions\n\n\n# App passwords <a name=\"app-pw\"></a>\n\nApp passwords allow two-step verification users to make API calls to their Bitbucket account through apps such as SourceTree.\n\nSome important points about app passwords:\n\n* You cannot view an app password or adjust permissions after you create the app password. Because app passwords are encrypted on our database and cannot be viewed by anyone. They are essentially designed to be disposable. If you need to change the scopes or lost the password just create a new one.\n* You cannot use them to log into your Bitbucket account.\n* You cannot use app passwords to manage team actions.\n\n    App passwords are tied to an individual account's credentials and should not be shared. If you're sharing your app password you're essentially giving direct, authenticated, access to everything that password has been scoped to do with the Bitbucket API's.\n\n* You can use them for API call authentication, even if you don't have two-step verification enabled.\n* You can set permission scopes (specific access rights) for each app password.\n\n### Create an app password\n\nTo create an app password:\n\n1. Select **Avatar > Bitbucket settings**.\n2. Click **App passwords** in the Access management section.\n3. Click **Create app password**.\n4. Give the app password a name related to the application that will use the password.\n5. Select the specific access and permissions you want this application password to have.\n6. Copy the generated password and either record or paste it into the application you want to give access. The password is only displayed this one time.\n\nThat's all there is to creating an app password. See your applications documentation for how to apply the app password for a specific application.\n\n## Basic auth <a name=\"basic-auth\"></a>\n\nBasic HTTP Authentication as per [RFC-2617](https://tools.ietf.org/html/rfc2617) (Digest not supported). Note that Basic Auth with username and password as credentials is only available on accounts that have 2-factor-auth / 2-step-verification disabled. If you use 2fa, you should authenticate using OAuth2 instead.\n",
      "description": "How to authenticate API actions",
      "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALIAAACyCAIAAABp6AI/AAAZPElEQVR4nO2deZAc1Z3nv7/3MrMy6+hLrdZBS0ISOpAsC0tcRoA9mEEiOOw1xjEGbzD2BDZjzy6O3QlmZxwbno3xrneHGceytndg7RnfNh7AmEOIEUZgzCGBZAnQLYGkVqvVp/qoqq6qzHzvt39kt2ggu+mqbh3Veh9VdLSkqurqzE++4/d+75fEzDAY3o040x/AcDZitDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYLQwxGC0MMRgtDDEYFXwGjZFG88mCCCiyX3PsrWIlBCT/TkME4GZJ9cMquDK9wM1kC9O4ocwVAwzEo6sSbmT+7ZltBaaWRAd7ej7rw881drVZwmC6UzONExCa/7zW9Z8+uMf1pqFmJw2o5xOhAHCs1v3/fKZbU31maLiEKYvOcMkJfqzg27CuuGKZQnHmqzepBwtCAAKxaA25XmuvSAs1iMwZpwpCFCgo9JlJH1fDQwWpztpHjpLE6XsIScRKa1Djdv08bV8YgCWhOlKTjcMSHAO8htY2KpsQRxNAibrEq1kghp9LBc6A6VBRovTDwMWGEMHn0b++5lpLU5+AA1SIDVpghrKgIc7kVN0RVasBRAFUiav4TKUxSk98ib4bYjBaGGIwWhhiMFoYYih8iEnAxrQZsh5Jjh58E8RFWtBNQibEDhgE7c4/URxiwTYPjXrUpVoETUPHjRBZUCW0eK0wwC9E86afMzYooo5dZej0cIQg9HCEIPRwhCD0cIQg9HCEIPRwhCD0cIQQ+VpOAwCSIPGF4Lls0dAHvo6FLUnMEwI/91UtKsMACCggVCCxDjCKgxiCDrT8dBIYgkmML2zpBDlmJEAGzkiKl8qa0eiA+n+caT4MqgWwXSUzmCfFS3pCSgBHcLqgzMASwFJ6HoESQQAGFKbfDMAlWhBACCBb1Pzd+m88Vz+JYgFKH5PH5iHggadTjUY0EPNgCZgH6WewrTXKX2cEt3CDiFqOZyhSwu58An0foz7HCiAFAQB42kFpyplaEEgAO3dA0IIYu6GXcQHbGKKEsQ98Fak36DUPM5p2Kf6cPM7X4mgJZSG2I/0P9HsZ0V9FzlKg32fwxActkq52848b9X/ipsW8+Bduu069KbgA8SQPNytnGvtR9nbh/xQC3AJ4mJkF6NQGn37ULT4ewDeTqQ86CiB/dQdXw3ioZ6CAQaYwH1IbEbtBqp/WjZmISkMRClf4zkLFzTNaqxxHaunP/92a09rZ5/v2Dvt1FfspatU/83cfQ33LUJ++NOKqNU5d5qQsjsRQZBAHvIW7voCt4RwRltY14CAvp+at1CmBmrERTzJRJsS5HBiioLVA+dNSm1A/atUc5S8nJBWoaBVcXp95tYbL/nkVcsb61N1ac+WMlco9WYL2/cd++H619482KZCtT2ZeU3W3q+KizC4lnuv5r65KCWgJBRAGnJ40DqVmdCGAIB49K0KPPyEif2IUYkmEgIQUATdC3cXJV9H+jWqeU3UZCF9JtZalEpSq6ULZn3sogW3rV21aE4ja4RKhUqHSqc8py7jXdA8bd1Hlzz50t7Hf79r85uHVa7U7iaOidqXRG2SeDEPruaBVZxbwfn5GLSgABnNX6bq5KXCCSqBNQgQakS/8B4/NCBBJ5+gAbxvu5GoNJ6hQBIKQAHW89Twb6jfRem3RbKXbDv0uRCQDjzHSnnO5RcvvenKZasvnDNnxjS/VMoP+og6MyIQlOJQBWBIIT63dtWNa5a9cfDYc9sObnhlb3vPQLEU9ireartb7BpbolkXluj8FRi4Hifm86AENASm4sij8qQ9CQX41tCut5O8870GAJ1GGM0+7KHnvyfJT5Q7a+WhHZhhB7yHaPqDouko3AIEKcXFoq3y0+ozzXMalsxtunLl/KsvWlBf47mu7ZfCgWxOCvnerf409AdANjsopVizcv5ly+d99ZYrdh/ufGHHodf2tBzr7D/W2Vf0wxY3cdhq2EQN36Pmq3Tfn3L7xdxvDU12phTlV8MBGHCgX0adTZSDjEZhDJx499yEARu8ndIelAY2orGT3EGI6AhGe+UuRP4q7qNxX28MAEygn9Ps+2j2YZmy/IDDkkOYXpe+fMXi1Uubl82fcUHztKZpNazYDwKlOZsrCiJLyrHfXErBzNl8iQie61y2fN6aixaUSsHB1u79R7p2HGjbvPPwgaNdRV/3EP3Gmf40Ndyke+5Byxwu6OHfa2pQdn0LQaRBaainqeFJNIyQgEqg4euGT77CA3vQDH6Ipv8S00c+n4EE9EZ+YzHy/EFzXYzovP6G5v9AzEqCZS5XX5e+7EMLb75y+cVLm6fVJL1kApqLpSCbKxAoahvkuE8ZEUkCAK25pIJCyRckls5tWr5w9k1XLcvmS4eOn1j/8p6nN+870tajhXzQmbFVp3/A+5djQOGDvKseytCCwQSaXpdSWgM0cjcAAw44CUVACUKNeJUG5SB4OHrII57vgPMQLeQu5vw4t1pr0H8WC39KM2t14Cu1bs2y//CZNauWNGvNoVZhqLPZAoiIylBhNIhIEgEolAIu+kJQ0nU+fMGsVUvOu/Pmyx95/o3vP7blRG/2iJv8Apb8s963Atkp02aU3YkkHAuAJtzJbVdgIA8JIA31MDU+iWkSuJW7FmMweHeIYjZ8azh1XYNSUA/T9PVosMDjTBzXIIHwn2jOz2hmjfJZiP9257o7rr8YhOxgiQgEIoKUk39ehBgKiIdKh4oLjLq0+9Vbr7z6Iwvu+e76HXuPtqRSf4mFD+tdGYQ8JerAVFBpDwAYuAQDf8wdCjYAieBNJB+jRoA/ie6ruWeM60aBJII3kHycplnj2+agQQJqDzLfpeYUhxD0jT+77o4bL83nC5p54g3DOIkqi0iC0jyQLaxYMPOBv7rly//rkV0Hj21PZL7Hs/8LH9ZTog5MJQeUgGhJHZAaQkMAQg93AgEIEHrMx8jnj+8nMoD7aVa3cEqF0u1rV99x42XZ3CBAp82Jd30egiVFNl+aO6P+m19el055Thj+Usw4hKSEKutXOzup/JieXCwQI/568hsx5gPlzPWjkeYxuJtEg+UXm2c2/NlNl/qlEk1+ldLykFJkB4urlzR/8uoPhaXiceE+Qw3DH7m6qYIRkgYBeiM19MGC5msvWXT+rIZSEE5WscGJQcx885XL6mvSMggeF42YEqPOCQa/3yGaSjjgv6c536eZYzSk0RLaEXgu9LhrLPGryBQgXPD1H12qlD5LyghLQYNFf9WS5vNn1287cPywdI8gMQ/Fah94TpYW5IKLEBL8B2TGk8YXzUEKkNaYg04GJHQeiaPkklJNDelFzY36bCoTy4Bjy1WLz9tx4HgBcjel5vEgwzrjqWgTYRK0EGBA3MA9T1F9J5zx76EOQEt5cCVyYyy4M4ig2+B0koMwXNQ823UspSZUP0EzI/oDRGXUJ1hNnZkvmNMowIMQe5C8HqyronsenUnQIpqYnI/Co3rXCTjjz0ggoA6+PWYeRjQd7iSnhxyowqzptZ5ra82VncQoL9lzbCnFybAqK+0HYaj0RMxYMHuaAAoQrUhMgSHnJI4tyAbPRHkl4nl8qZMlUEjEmqfVJB1LDpaCCsYWDAhBtiVe2PHWEy/tebutJwx1Xcb7o1ULb1yzrLE2WfTDCsyIXjCjIR39NZwSyaCTpsVwFLy8IzKedRCA+2ANwLK0rkl7wpJc9CsY0gkirfXX79/4i2e2h0ppzQwIomdePfCTp7Z9++6bL1o8u1AMKpjgMCBI2JaU0D2wASsK01WvHZPcA1KZjzLelqC0bqhJArKCEadmdh35zR89+8Bjm21LJl0nnUxkkomU62SSib0tnXfd+8iBlm7XsSq4k4bW7CXsGQ0ZHWpfCL+KfRiiygZGSusKem6ldTqZeHrz/p89/YeGGg9grYcfzErrmpT3dmvPtx98QUpR0SyHiciSgsFcfpN5FlIdWvCwC5Iq6bkFkQr1pm0H8kVfipgTr7ROJZ2te4/ufKs9GtKW+RNOrg1jjCzGKqI6tJCAZBBRwQ/LLTDHDClFf754qK3XdaxRTjlLIfpyhY7erJSSy2yQBFGhFLafyAopPVbuKSyBd5qYtCHnKSKa/dYhTCPMSdnW1a/CUJY3KmRBwg/Cnv68kGLME06VzVGjcU+xFOiEXaNDIAxhT7DSnBpzcy8DFhCesgzqs12LCAtsg0FU9MOyW3gipTnlOuc11e063OHaUsW8ATFrx5a2JcutaBg9uy9bAECABzUpcQuJUI7e6kTLhwlo5+wpwHg6iVqLeg4zOuyT8kh7b77gu46leLyZ+ASESmUy3hUr5j29eS8JwvvEEkSFIFwyr2nZ/BnFioIih9p6GLChZyCY+MxUgZ6jxiNwR8tHYUACBYi2oX06hLPhNjOnEQaoHkEtglbLae8e8EPluTbCMppPIvJLwc1XLvvFxu0HjnbVpNxQ6RH/C2atNX/2Eysb69PZXKH8HA5q6x7QIAc8C/5ENs8pkES4npq+SEtKEGP3RARkoF0R5EtByQ8xebeZOduHnFFrMRN+vQ7Ysg619fT056UQZTXUgsgP1OzGmr+7c21TQyY7WDoZsyKC1jww6P/FZ9bcsW51Pl8s2wmGELTzUIdiuNDzUYxMK+9NhomKsG5DRoPmoOSAaZScFYpG4mApRU9/fugWpJPUo5ztrQUNJ/ldgMKLqNXM+450LZ47vdz3EYIGi8HHVy34+Tduu/t//2ZfS5eXsLVmrWFJ8Xd3XveFmy4LVNkzCAakpL5c4a3WbghyoZfy4MS32jpgACHor/nICuQH35fDEeVId8C5l+b2oqJZ+5ic7VoMQyuQ98C+5i27Wz718RXMQbnHngTlC8Gy85tmTavZ+VZ7MuEQWIOFkCsXnedIkfODcpsK1pxw7W37jvX0D5KUi5BrQDBxLYa3SPEV6LuUT6j35YdG+3uPwfsOmk/FIv7Z3olgeOH+Es4mwIqxbW9roViq5MAz25bo7Mv3ZgtyOCIpiPwgbGnvpaEF9vLQzMJyduxv6zqRJdtapbPi/QPaStGAhgQsjnsAloYVpTtN+jS1CrSIhhfzUbyQc5bjtHT0vrb7aCqZULrMuBZgSTGQL/ZlC9bQXjgIolKgOntzEKLc1RBmWFIMDg6+tqeFCTb4cs5iMk8S+SBAFOMeGqIEUW7kbZxURyfCQALh1dz/ilV3om/gdzsOXf2RBeX2p8yQUvZlC73ZgjUc1yJBJT9s78lGRSzKfEP2Evabb7W//MZhJ5lcoPLLkB8ZCK+Ak9uxLDDA/5Pm3k+zY+9BLIACKAcpwQyeXD+qRQsiYA33N2g/m3A2btn3xRsvmV6XDsIyMyQIodJKRxk3jGhIqzlXKAEoe+2UIIRY//KegVxBpNNrVP8sFHliKb4MIrAD3Q/pQW9BRo0+UiGgBoq1Sti2Y03mqawOLQgMiIuQu4hzv3PqD7Z0btp28PNrV/lBGaM7ApTSdRnXS9i92YLrWJoZINsSc2fWA+VlZ0VdUmdv9okXd1sJJ8nB9ejF8Hmt4Hcc+Ulv5BNbKdMzZgQ9mqMdJ7dH6ca6ZE0qMfSvk0G1aAENuAg/zd2buTawrX954tWbr1zm2GWkRwhBxVKwdF7Tv1+3+t5fPF8KwmhgcemFcz73xxcVi6WypiFK6VQy+cCjmw+39VDSu0z1ruYsJlxkMhpfL0f2J3pPFvZoT4t6mQFYX6NFx5GQVOFqzmhUhxYYHnhew70LOb/fTu1v6fzVb1//0r+7PFtOAIqIglDf/dkrm+pST7y0J1/yl53f9Be3rGmqS5eCMvojrTnp2m+3dv3ime2WJS3o27nDg5qsfQAM6YI9lEZ/AgjsQjkoc+A9PqpJCwY1wv+ibv9ra6EQ4v89tvm6Sxc3z6gr+mWsYjBzEOo7brr01ms/4gd+XU2qVArKciLCEvInT209fKxbZjJ/FHZfjb5JDCkRmIf2TcUTrYlEq6ynYgm1Ciao74bWofcy1a+cxLGO3vsefrGCy5OIstkia52w7WyuWG7Ot9KcTjqbth348YZtbtJLKf/z3JHCxDYpvP9DjmPDpjhl6aLVpEU0eZgG/y4+Xq/9RNJ9cOP2h559I51MhGU2pVISwFprWeZqqdbs2LKjJ/vNHz8b+GEgxCfR/TH0TTyyeVZRTVpgeIRxFfpu4w4fImHLb/302R37j9Uk3XKjW1T+MI0ZQpAlxX//6abdb7eTm1is8l/SxxNVnuf9fqpMCwyvEn2BO67QfSXLOdGbu+d76w8fP+E6tpq0uPMoP5rZc6z/89CLv9q43fMSjlZ349hiFKaYE6hGLaKuZDZKf8VHz1eDcN3X97X+zQMbSn7oWPLUmREqnU4nf/jU1m/9eFM66YZMX+a267gXU84JVKMWGD4NK5G/B0czOkhmUpteO3D3fY8FSrmOLLc3+UCYWWuuySQffnb7N3/427RrD0J8mrv+lDuSUB/8+iqkKrWIcKCv496v6VZLhV7SXf/73X/+948c785mku9KvpogmlkISnnO/Y+89JffeQLMBWF9gk98jVsb4U+9diKiirUAkIL6LLr+E7dKrby09/Qre7/yD7/edaijJu1prSvYH/YelNYJ29Kg//GTTX/7g40EDAr7Gt37dd3SjFJ1H7sxqfpfLQP1J9x5j251VeDVpHfsbf383/78id/vSiddKYWqtNmIdptlkm7Hiex//MdH73vwhZTn+ELeoLu+zi0LULSrf1v6GFRNlHM0JLgW6hZ0NnBwr5pz1PNO9Oe/+g+P7Hy7/UufunxabSqXL1I5ZbYYYK1t27Ys+cyr+7/xzxsPt3Yn057PfJvuuIuPn4dSovo3CI1N1WvBgADXI7yWe6dx8I/c/AerNoHwvgeff/H1Q1/7k6uuvXiRUrrgB0Q0duyKAa20ZUkv5bZ19v/fR1/52YZtSimZ9BI6vIvbPsNdMxA40FNvRvoeql6L6PQIoBbhxch+iw/9SM/8NTXa6dSO/a13fuuhT121/K5Pf3Tp/JmBHxRKoRTxUSylWQrKpL2BXOGh9a/f/9grB1u6kkkvlNZKlf0Kt12ObD0CG3qKBTRjqXotRpKBugCFu7n1w8j/KJyx101Dhw8+s+O5P7x1+9pVn71m5fnNjb7vh6FWmqMtAZpZEFlCJFNONl988sVd3398y5adh23LctJpVwe36s7PcedCFNNQElzttdLGydTRIjpbHvQs+Ddyz1Lkf6ManxCNpZR3Il+892ebfv38m9esXnT72o9c0NyY9KwwUFqzk7BCpXv68ht+u+Oh597Y+dbxIFQymSTmS3T/7br9MmQbEJ6MT5wLTmAqaRER3a2iAcGHoJv52Bo98CgaX6ZaVVNztLP/h09uefi5HWtWLrjhiqWrFjd7CXtfS+cLO95+8sXdbd0DoWLpJaRlXahyN6BnHZ9oQpCBqvbSNhUw1bSg4a8pqAT0Gu7/EPI7OP0UN/zOqc/DySre8MreDS/tXjyvKZ10dr/Vni/6jueyk0gQL9b5m3TPVdx/HkoZKG94xnFOOYGpp8VJorS2egQp6Dr0reD8p1TPv4n6bUgf9bwixP5jvVpr6SZkTWKaKi3jvmt17yrONaOYgvagBfQ5MpJ4P1NWi+HTSQ60A52EqkfwYZ1thbuN068jvctJh0Tnqf4VOr+as8sxmIFKQqWgTpaHOzedwBTWYiTRWnwDggxELdQiLqxFb7tyFFAH1QQ/CZ2ATkCP9OCcdQLniBYnr34bbEMxVAbhDPgALLADPWVuJjVZnBNaRNCIbxywM0XXxCeFc0iL93Bypetc7ixG49zVwtgwBlW/sG44FRgtDDFUeI91AH2w8nD6psSN/KqOKFiXheWP47bCFfABWkRVsYe+Z3YsqXU0uecCRD/kAKTR4vQTlVDKQUZ39WJGlL6qlNbDQThrAreE/QAthCAxPDiL6qSmvAQzA1QD1YTAARstTj9Ra+GCbWhmti2RsC0AlhSTsnV9VC20ZiFo656jrx9sSyZszczMjm298uZhx7bA+gXU9pJVmBI38qs6oq3JRVAX7IQluvvz//rs9pqUFyoloqrFnnP9Ry/0EqOWQhgbGi09OgiVbcl7vvv4vT9+ZnpjbRAqAMxIuU46mWDmHGTpHF41OBsgIANlEweh7s8Vou6eiEpBOHd67XPf+crMGfXMXEH78QGdCIEAQRiqQkeEfKEUVQaVGG95ZcOpoxsU3erNknLoHIGICSQgK4/pj6pFdA/729etXrW02XPss+oek4axiaqy1GWSQIV3bBy1EzGcy5QxQTVUFxOZoJrWwhCDmV0aYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhiMFoYYjBaGGIwWhhi+P9r0gnGnONtdAAAAABJRU5ErkJggg==",
      "key": "authentication",
      "title": "Authentication methods"
    },
    {
      "content": "\n# Filter and sort API objects\n\nYou can query the 2.0 API for specific objects using a simple language which resembles SQL.\n\n---\n**On this page**\n\n* [Supported endpoints](#supp-endpoints)\n* [Operators](#operators)\n* [Data types](#data-types)\n* [Querying](#querying)\n    * [Repositoriess](#query-repo)\n    * [Pull requests](#query-pullreq)\n    * [Issues](#query-issues)\n    * [Refs, tags, bookmarks](#query-ref)\n* [Sorting query results](#query-sort)\n\n----\n\n### Supported endpoints <a name=\"supp-endpoints\"></a>\n\nSeveral 2.0 API resources that return collections of objects all support a single, shared, generic querying language that is used to filter down a result set.\n\nCurrently, the endpoints which support filtering and sorting are:\n\n    /2.0/repositories/{username}\n    /2.0/repositories/{username}/{slug}/refs\n    /2.0/repositories/{username}/{slug}/refs/branches\n    /2.0/repositories/{username}/{slug}/refs/tags\n    /2.0/repositories/{username}/{slug}/forks\n    /2.0/repositories/{username}/{slug}/issues\n    /2.0/repositories/{username}/{slug}/pullrequests\n\nFiltering and sorting supports several distinct operators and data types as well as basic features, like logical operators (AND, OR) as shown in the following examples:\n\n\t(state = \"open\" OR state = \"new\") AND assignee = null\n\treporter.username != \"evzijst\" AND priority >= \"major\"\n\t(title ~ \"unicode\" OR content.raw ~ \"unicode\") AND created_on > 2015-10-04T14:00:00-07:00\n\nFilter queries can be added to the URL using the q=<query> query parameter. To sort the response, add sort=<field>. Note that the entire query string is put in the q parameter and hence needs to be URL-encoded as shown in the following example:\n\n\t/2.0/repositories/foo/bar/issues?q=state=\"new\"&sort=-updated_on\n\n### Operators <a name=\"operators\"></a>\n\nFiltering and sorting supports the following operators:\n\n<table class='aui'>\n    <thead>\n        <tr>\n            <th>Operator</th>\n            <th>Definition</th>\n            <th>Example</th>\n        </tr>\n    </thead>\n    <tr>\n        <td>\"=\"</td>\n        <td>test for equality </td>\n        <td><code>username = \"evzijst\"</code></td>\n    </tr>\n    <tr>\n        <td>\"!=\"</td>\n        <td>not equal</td>\n        <td><code>is_private != true</code></td>\n    </tr>\n    <tr>\n        <td>\"~\"</td>\n        <td>case-insensitive text contains </td>\n        <td><code>description ~ \"beef\"</code></td>\n    </tr>\n    <tr>\n        <td>\"!~\"</td>\n        <td>case-insensitive not contains </td>\n        <td><code>description !~ \"fubar\"</code></td>\n    </tr>\n    <tr>\n        <td>\">\"</td>\n        <td>greater than</td>\n        <td><code>priority > \"major\"</code></td>\n    </tr>\n    <tr>\n        <td>\">=\"</td>\n        <td>greater than or equal</td>\n        <td><code>priority <= \"trivial\"</code></td>\n    </tr>\n    <tr>\n        <td>\"<\"</td>\n        <td>less than</td>\n        <td><code>id < 1234</code></td>\n    </tr>\n    <tr>\n        <td>\"<=\"</td>\n        <td>less than or equal </td>\n        <td><code>updated_on <= 2015-03-04</code></td>\n    </tr>\n</table>\n\n### Data types <a name=\"data-types\"></a>\n\nFiltering and sorting supports the following data types:\n\n<table class='aui'>\n    <thead>\n        <tr>\n            <th>Type</th>\n            <th>Description</th>\n            <th>Example</th>\n        </tr>\n    </thead>\n    <tr>\n        <td><b>String</b></td>\n        <td>any text inside double quotes</td>\n        <td><code>\"foo\"</code></td>\n    </tr>\n    <tr>\n        <td><b>Number</b></td>\n        <td>arbitrary precision integers and floats</td>\n        <td><code>1, -10.302</code></td>\n    </tr>\n    <tr>\n        <td><b>Null</b></td>\n        <td>to test for the absence of a value</td>\n        <td><code>null</code></td>\n    </tr>\n    <tr>\n        <td><b>boolean</b></td>\n        <td>the unquoted strings true or false</td>\n        <td><code>true, false</code></td>\n    </tr>\n    <tr>\n        <td><b>datetime</b></td>\n        <td>an unquoted <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO-8601</a> date time string with the timezone offset, milliseconds and entire time component being optional</td>\n        <td><code>2015-03-04T14:08:59.123+02:00</code>, <code>2015-03-04T14:08:59</code> Date time strings are assumed to be in UTC, unless an explicit timezone offset is provided.</td>\n    </tr>\n</table>\n\n## Querying <a name=\"querying\"></a>\n\nObjects can be filtered based on their properties. In principle, every element in an object's JSON document can be used as a filter criterion.\n\n### Repositories <a name=\"query-repo\"></a>\n\nYou can query the following fields in the repository resource:\n\n    uuid (string)\n    full_name (string)\n    scm (string)\n    owner (embedded user object)\n    name (string)\n    description (string)\n    created_on (datetime)\n    updated_on (datetime)\n    size (number)\n    language (string)\n    parent (embedded repository object)\n    fork_policy (string)\n    is_private (boolean)\n    has_issues (boolean)\n    has_wiki (boolean)\n\nFields that contain embedded instances of other object types (e.g. owner is an embedded user object, while parent is an embedded repository) can be traversed recursively. For instance:\n\n\tparent.owner.username = \"bitbucket\"\n\n### Pull Requests <a name=\"query-pullreq\"></a>\n\nYou can query the following fields in the pull request resource:\n\n    id (number)\n    title (string)\n    description (string)\n    author (embedded user object)\n    reviewers (embedded user object)\n    state (string)\n    source.repository (embedded repository object)\n    source.branch.name (string)\n    destination.repository (embedded repository object)\n    destination.branch.name (string)\n    close_source_branch (boolean)\n    closed_by (embedded user object)\n    reason (string)\n    created_on (datetime)\n    updated_on (datetime)\n    task_count (number)\n    comment_count (number)\n\n**For example**\n\nTo find pull requests which merge into master, come from a fork of the repo rather than a branch inside the repo, and on which I am a reviewer:\n\n```\nsource.repository.full_name != \"main/repo\" AND state = \"OPEN\" AND reviewers.username = \"evzijst\" AND destination.branch.name = \"master\"\n```\n```\n/2.0/repositories/main/repo/pullrequests?q=source.repository.full_name+%21%3D+%22main%2Frepo%22+AND+state+%3D+%22OPEN%22+AND+reviewers.username+%3D+%22evzijst%22+AND+destination.branch.name+%3D+%22master%22\n```\n\n### Issues <a name=\"query-issues\"></a>\n\nYou can query the following fields in the issues resource:\n\n    id (number)\n    title (string)\n    reporter (embedded user object)\n    assignee (embedded user object)\n    content.raw (string)\n    created_on (datetime)\n    updated_on (datetime)\n    state (string)\n    kind (string)\n    priority (string)\n    version (string)\n    component (string)\n    milestone (string)\n    watches (number)\n    votes (number)\n\n**For example**\n\nTo find new or on-hold issues related to the UI, created or updated in the last day (SF local time), that have not yet been assigned to anyone:\n\n```\n(state = \"new\" OR state = \"on hold\") AND assignee = null AND component = \"UI\" and updated_on > 2015-11-11T00:00:00-07:00\n```\n```\n/2.0/repositories/main/repo/issues?q=%28state+%3D+%22new%22+OR+state+%3D+%22on+hold%22%29+AND+assignee+%3D+null+AND+component+%3D+%22UI%22+and+updated_on+%3E+2015-11-11T00%3A00%3A00-07%3A00\n```\n\n### Refs (Branches/Tags/Bookmarks) <a name=\"query-ref\"></a>\n\nYou can query the following fields in the refs resource:\n\n    name (string)\n    type (string)\n\n**For example**\n\nTo find all tags with the string \"2015\" in the name:\n\n```\nname ~ \"2015\"\n```\n```\n/2.0/repositories/{username}/{slug}/refs/tags?q=name+%7E+%222015%22\n```\nOr all my branches and bookmarks:\n\n```\nname ~ \"erik/\"\n```\n```\n/2.0/repositories/{username}/{slug}/refs/tags?q=name+%7E+%22erik%2F%22\n```\n## Sorting query results <a name=\"query-sort\"></a>\n\nYou can sort result sets using the ?sort=<field> query parameter, available on the same resources that support filtering:\n\n* In principle, every field that can be queried can also be used as a key for sorting.\n* By default the sort order is ascending. To reverse the order, prefix the field name with a hyphen (e.g. ?sort=-updated_on).\n* Only one field can be sorted on. Compound fields (e.g. sort on state first, followed by updated_on) are not supported.\n\n\n",
      "description": "Query the 2.0 API for specific objects",
      "icon": "data:image/png;base64,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",
      "key": "filtering",
      "title": "Filter and sort API objects"
    },
    {
      "content": "\n# Pagination\n\nEndpoints that return collections of objects should always apply pagination.\nPaginated collections are always wrapped in the following wrapper object:\n\n```json\n{\n  \"size\": 5421,\n  \"page\": 2,\n  \"pagelen: 10,\n  \"next\": \"https://api.bitbucket.org/2.0/repositories/pypy/pypy/commits?page=3\",\n  \"previous\": \"https://api.bitbucket.org/2.0/repositories/pypy/pypy/commits?page=1\",\n  \"values\": [\n    ...\n  ]\n}\n```\n\nPagination is often page-bound, with a query parameter page indicating which\npage is to be returned.\n\nHowever, clients are not expected to construct URLs themselves by manipulating\nthe page number query parameter. Instead, the response contains a link to the\nnext page. This link should be treated as an opaque location that is not to be\nconstructed by clients or even assumed to be predictable. The only contract\naround the next link is that it will return the next chunk of results.\n\nLack of a next link in the response indicates the end of the collection.\n\nThe paginated response contains the following fields:\n\n<table class='aui'>\n    <thead>\n        <tr>\n            <th>Field</th>\n            <th>Value</th>\n        </tr>\n    </thead>\n    <tr>\n        <td><code>size</code></td>\n        <td>Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute. </td>\n    </tr>\n    <tr>\n        <td><code>page</code></td>\n        <td>Page number of the current results. This is an optional element that is not provided in all responses.</td>\n    </tr>\n    <tr>\n        <td><code>pagelen</code></td>\n        <td>Current number of objects on the existing page. Globally, the minimum length is 10 and the maximum is 100. Some APIs may specify a different default.</td>\n    </tr>\n    <tr>\n        <td><code>next</code></td>\n        <td>Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.</td>\n    </tr>\n    <tr>\n        <td><code>previous</code></td>\n        <td>Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available.\n\n        Use this link to navigate the result set and refrain from constructing your own URLs.</td>\n    </tr>\n    <tr>\n        <td><code>values</code></td>\n        <td>The list of objects. This contains at most <code>pagelen</code> objects.</td>\n    </tr>\n</table>\n\nThe link to the next page is included such that you don't have to hardcode or construct any links.  Only values and next are guaranteed (except the last page, which lacks next). This is because the previous and size values can be expensive for some data sets.\n\nIt is important to realize that Bitbucket support both list-based pagination and iterator-based pagination. List-based pagination assumes that the collection is a discrete, immutable, consistently ordered, finite array of objects with a fixed size. Clients navigate a list-based collection by requesting offset-based chunks. In Bitbucket Cloud, list-based responses include the optional size, page, and previous element. The the next and previous links typically resemble something like /foo/bar?page=4.\n\nHowever, not all result sets can be treated as immutable and finite – much like how programming languages tend to distinguish between lists and arrays on one hand and iterators or stream on the other. Where an list-based pagination offers random access into any point in a collection, iterator-based pagination can only navigate forward one element at a time. In Bitbucket such iterator-based pagination contains the next link and pagelen elements, but not necessarily anything else. In these cases, the next link's value often contains an unpredictable hash instead of an explicit page number. The commits resource uses iterator-based pagination.\n",
      "description": "Learn more about pagination",
      "icon": "data:image/png;base64,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",
      "key": "pagination",
      "title": "Pagination"
    },
    {
      "content": "\n# Partial responses\n\nBy default, each endpoint returns the full representation of a resource and in\nsome cases that can be a lot of data. For example, retrieving a list of pull\nrequests can amount to quite a large document.\n\nFor better performance, you can ask the server to only return the fields you\nreally need and to omit unwanted data. To request a partial response and to\nadd or remove specific fields from a response, use the `fields` query\nparameter.\n\n\n## Example\n\nMost API resources embed a substantial list of links pointing to related\nresources. This saves the client from constructing its own URLs, but is\nsomewhat wasteful when the client doesn't need them.\n\nTo significantly reduce the size of the response, use `?fields=-links`:\n\n```\n$ curl https://api.bitbucket.org/2.0/users/evzijst?fields=-links\n{\n  \"username\": \"evzijst\",\n  \"website\": \"\",\n  \"display_name\": \"Erik van Zijst\",\n  \"uuid\": \"{a288a0ab-e13b-43f0-a689-c4ef0a249875}\",\n  \"created_on\": \"2010-07-07T05:16:36+00:00\",\n  \"location\": null,\n  \"type\": \"user\"\n}\n```\n\n## Fields parameter syntax\n\nThe `fields` parameter supports 3 modes of operation:\n\n1. Removal of select fields (e.g. `-links`)\n2. Pulling in additional fields not normally returned by an endpoint, while\n   still getting all the default fields (e.g. `+reviewers`)\n3. Omitting all fields, except those specified (e.g. `owner.username`)\n\nThe fields parameter can contain a list of multiple comma-separated field names\n(e.g. `fields=owner.username,uuid,links.self.href`). The parameter itself is\nnot repeated.\n\nAs discussed at [Condensed Versus Full Objects](serialization#representations),\nmost objects that are embedded inside other objects (like how `owner` is an\nembedded `user` object in `repository`) appear in \"condensed\" form that omits\nmany fields. The `fields` parameter allows us to pull in additional fields in\nsuch cases.\n\nFor example, the embedded repository object in a pull request does not normally\ncontain its `owner`. To add that in we can use:\n`+values.destination.repository.owner`.\n\n\n## Wildcards\n\nThe asterisk can be used to match all fields on a particular level. For\nexample, removing all entries from the `links` element can be done like this:\n\n```\n$ curl https://api.bitbucket.org/2.0/users/evzijst?fields=-links.*\n{\n  \"username\": \"evzijst\",\n  \"website\": \"\",\n  \"display_name\": \"Erik van Zijst\",\n  \"uuid\": \"{a288a0ab-e13b-43f0-a689-c4ef0a249875}\",\n  \"links\": {},\n  \"created_on\": \"2010-07-07T05:16:36+00:00\",\n  \"location\": null,\n  \"type\": \"user\"\n}\n```\n\nWildcards can be used in combination with exclusion and inclusion. For\ninstance, `-*,+foo,+bar` will remove all elements from the root level and then\nadd in `foo` and `bar`.\n\n\n## URL encoding\n\nBe aware that when using the `+foo.bar` syntax in the query string, that the\n\"+\" must be URL encoded as \"%2B\" and so the URL will be:\n\n```\nhttps://api.bitbucket.org/2.0/repositories/evzijst/interruptingcow?fields=%2Bowner.created_on\n```\n\nWithout URL escaping, \"+\" is interpreted as an encoded space which will not\nmatch any fields.\n\n\n## Field discovery\n\nWhile a resource's `self` URL, as well its \"collection\" URL typically return\nthe full object with all its fields, there are some exceptions for fields that\nare overly verbose or costly to generate.\n\nFor instance, a pull request contains the embedded lists of reviewers and\nparticipants. These fields are included from the `self` URL, but not from the\n`/pullrequests` collections resource, as it would impact performance too much.\n\nTo discover any additional fields that might not be included by default,\n`fields=*` can be used.\n\n\n## More examples\n\nIf we want to get a list of all reviewer usernames on pull requests I created,\nwe could combine a [filter](filtering) with a partial response. This will omit\nall other data from the response:\n\n```\n/2.0/repositories/bitbucket/bitbucket/pullrequests?fields=values.id,values.reviewers.username,values.state&q=author.username%3D%22erik%22\n{\n  \"values\": [\n    {\n      \"reviewers\": [\n        {\n          \"username\": \"abhin\"\n        },\n        {\n          \"username\": \"dtao\"\n        },\n        {\n          \"username\": \"csomme\"\n        }\n      ],\n      \"state\": \"OPEN\",\n      \"id\": 11355\n    },\n    {\n      \"reviewers\": [\n        {\n          \"username\": \"csomme\"\n        },\n        {\n          \"username\": \"abhin\"\n        },\n        {\n          \"username\": \"dstevens\"\n        }\n      ],\n      \"state\": \"MERGED\",\n      \"id\": 11347\n    },\n    {\n      \"reviewers\": [\n        {\n          \"username\": \"csomme\"\n        },\n        {\n          \"username\": \"jmooring\"\n        },\n        {\n          \"username\": \"zdavis\"\n        },\n        {\n          \"username\": \"flexbox\"\n        }\n      ],\n      \"state\": \"OPEN\",\n      \"id\": 11344\n    }\n  ]\n}\n```\n",
      "description": "Tweak which fields are returned",
      "icon": "data:image/png;base64,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",
      "key": "partial-response",
      "title": "Partial responses"
    },
    {
      "content": "\n# Open API Specification and Object Representations\n\n----\n\n*On this page*\n\n* [Open API Specification](#oai)\n* [JSON Schema](#jsonschema)\n* [Condensed Versus Full Objects](#representations)\n\n____\n\n\n## Open API Specification <a name=\"aoi\"></a>\n\nBitbucket uses the [Open API Specification](https://openapis.org) (OAI,\nformerly known as Swagger) to describe its APIs. Our OAI specification schema\nis hosted at [https://api.bitbucket.org/swagger.json](https://api.bitbucket.org/swagger.json)\nand serves as the canonical definition and comprehensive declaration of all\navailable endpoints.\n\nThe OAI specification makes writing client applications easier by:\nauto-generating boilerplate code (like data object classes) and dealing with\nauthentication and error handling.\n\nYou can find a comprehensive set of open tools for the OAI specification at:\n[https://github.com/swagger-api](https://github.com/swagger-api).\n\n\n## JSON Schema <a name=\"jsonschema\"></a>\n\nBitbucket uses JSON Schema to describe the layout of every type of object\nconsumed or produced by the API. These schemas are collected under the\n`#definitions` element of our swagger.json file.\n\nWhen an endpoint expects an object as part of a POST or PUT, it also expects\nthe object to validate against the JSON schemas. The same applies to objects\nreturned by an endpoint.\n\n\n## Condensed Versus Full Objects <a name=\"representations\"></a>\n\nMost objects in Bitbucket come both in \"full\" and \"partial\" representation.\nThe full representation is when all elements are included. This is the layout\nreturned by a resource's `self` location (e.g. `/2.0/repositories/foo/bar`),\nas well as resource collection endpoints (e.g. `/2.0/repositories`).\n\nHowever, Bitbucket objects often embed other objects. For example, a `repository`\nobject embeds a `user` object for its owner. Likewise, a `pullrequest` object\nembeds its `repository` object.\n\nThese related objects are embedded, or inlined, to reduce the \"chatter\" when\nclients make frequent followup API calls to collect information on common,\nrelated information.\n\nEmbedded related objects are typically limited in their fields to avoid such\nobject graphs from becoming too deep and noisy. They often exclude their own\nnested objects in an attempt to strike a balance between performance and\nutility.\n\nAn object's embedded or condensed representation tends to be standardized,\nmeaning the fields included is the same set, regardless of where the object\nwas embedded.\n",
      "description": "Learn more about object representations",
      "icon": "data:image/png;base64,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",
      "key": "serialization",
      "title": "Schemas and Serialization"
    },
    {
      "content": "\n# URI, UUID, and structures\n\nYou should be familiar with REST architecture before writing an integration. Read this overview page to gain a good understanding of Bitbucket's REST implementation.\n\n----\n**On this page**\n\n* [URI structure](#uri-structure)\n* [HTTP methods](#http-methods)\n* [UUID](#uuid)\n    * [User object and UUID](#userobj)\n    * [Repository object and UUID](#repo-obj)\n    * [Team object and UUID](#teamobj)\n* [Standard error repsponses](#stand-error)\n* [Standard ISO-8601 timestamps](#timestamp)\n\n----\n\n\n## URI structure <a name=\"uri-structure\"></a>\n\nAll Bitbucket Cloud requests start with the `https://api.bitbucket.org/2.0` prefix (for the 2.0 API) and `https://api.bitbucket.org/1.0` prefix (1.0 API).\n\nThe next segment of the URI path depends on the endpoint of the request. For example, using the curl command and the repositories endpoint you can list all the issues on Bitbucket's tutorial repository:\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/tutorials/tutorials.bitbucket.org\n```\nGiven a specific endpoint, you can then drill down to a particular aspect or resource of that endpoint. The issues resource on a repository is an example:\n\n```\ncurl https://api.bitbucket.org/1.0/repositories/tutorials/tutorials.bitbucket.org/issues\n```\n### HTTP methods <a name=\"http-methods\"></a>\nA given endpoint or resource has a series of actions (or methods) associated with it. The Bitbucket service supports these standard HTTP methods:\n\n<table class='aui'>\n    <thead>\n        <tr>\n            <th>Call</th>\n            <th>Description</th>\n        </tr>\n    </thead>\n    <tr>\n        <td>GET</td>\n        <td>Retrieves information.  </td>\n    </tr>\n    <tr>\n        <td>PUT</td>\n        <td>Updates existing information.</td>\n    </tr>\n    <tr>\n        <td>POST</td>\n        <td>Creates new information.</td>\n    </tr>\n    <tr>\n        <td>DELETE</td>\n        <td>Removes existing information.</td>\n    </tr>\n</table>\n\nFor example, you can call use the POST action on the issues resource and create an issue on the issue tracker.\n\n**Specifying content length**\n\nYou can get a `411 Length Required` response. If this happens, the API requires a Content-Length header but the client is not sending it. You should add the header yourself, for example using the curl client:\n\n```\ncurl -r PUT --header \"Content-Length: 0\" -u user:pass https://api.bitbucket.org/1.0/emails/rap@atlassian.com\n```\n## Universally Unique Identifier <a name=\"uuid\"></a>\n\nUUID's provide a single point of recognition for users, teams, and repositories. The UUID is distinct from the username, team name, and repository name fields and remains the same even when those fields change. For example when a user changes their username or moves a repository you will need to modify calls which use those identifiers but not if you are pointing to the UUID.\n\n### UUID examples and structure\n\nUUID's work with both the 1.0 and 2.0 APIs for the user, team, and repository objects. The following examples the following characters are replacements for curly brackets: `%7B` replaces `{`  and `%7D` replaces `}`. You will see this structure in the following example sections.\n\n### User object and UUID <a name=\"userobj\"></a>\n\nWhen you make a call using either the username or the UUID for that user the response is the same.\n\n**Call with username**:\n\n```\ncurl https://api.bitbucket.org/2.0/users/tutorials\n```\n\n***Call with UUID for the user**:\n\n```\ncurl https://api.bitbucket.org/2.0/users/%7Bc788b2da-b7a2-404c-9e26-d3f077557007%7D\n```\n\n**Response**\n```JSON\n{\n    \"username\": \"tutorials\",\n    \"website\": \"https://tutorials.bitbucket.org/\",\n    \"display_name\": \"tutorials account\",\n    \"uuid\": \"{c788b2da-b7a2-404c-9e26-d3f077557007}\",\n    \"links\": {\n        \"self\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/tutorials\"\n        },\n        \"repositories\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/tutorials\"\n        },\n        \"html\": {\n            \"href\": \"https://bitbucket.org/tutorials\"\n        },\n        \"followers\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/tutorials/followers\"\n        },\n        \"avatar\": {\n            \"href\": \"https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2013/Nov/25/tutorials-avatar-1563784409-6_avatar.png\"\n        },\n        \"following\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/tutorials/following\"\n        }\n    },\n    \"created_on\": \"2011-12-20T16:34:07.132459+00:00\",\n    \"location\": \"Santa Monica, CA\",\n    \"type\": \"user\"\n}\n```\n\n### Repository object and UUID <a name=\"repo-obj\"></a>\n\nOnce you have the UUID for a repository you no longer need a username or team name to make the API call so long as you use an empty field. This helps you resolve repositories no matter if the username or team name changes.\n\n**Call with team name (1team) and repository name (moxie)**:\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/1team/moxie\n```\n**Call with UUID and empty field**:\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/%7B%7D/%7B21fa9bf8-b5b2-4891-97ed-d590bad0f871%7D\n```\n\n**Call with UUID and teamname**:\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/1team/%7B21fa9bf8-b5b2-4891-97ed-d590bad0f871%7D\n```\n\n**Response**\n\n```JSON\n{\n    \"created_on\": \"2013-11-08T01:11:03.222520+00:00\",\n    \"description\": \"\",\n    \"fork_policy\": \"allow_forks\",\n    \"full_name\": \"1team/moxie\",\n    \"has_issues\": false,\n    \"has_wiki\": false,\n    \"is_private\": false,\n    \"language\": \"\",\n    \"links\": {\n        \"avatar\": {\n            \"href\": \"https://bitbucket.org/1team/moxie/avatar/32/\"\n        },\n        \"branches\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/refs/branches\"\n        },\n        \"clone\": [\n            {\n                \"href\": \"https://bitbucket.org/1team/moxie.git\",\n                \"name\": \"https\"\n            },\n            {\n                \"href\": \"ssh://git@bitbucket.org/1team/moxie.git\",\n                \"name\": \"ssh\"\n            }\n        ],\n        \"commits\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/commits\"\n        },\n        \"downloads\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/downloads\"\n        },\n        \"forks\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/forks\"\n        },\n        \"hooks\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/hooks\"\n        },\n        \"html\": {\n            \"href\": \"https://bitbucket.org/1team/moxie\"\n        },\n        \"pullrequests\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/pullrequests\"\n        },\n        \"self\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie\"\n        },\n        \"tags\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/refs/tags\"\n        },\n        \"watchers\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/1team/moxie/watchers\"\n        }\n    },\n    \"name\": \"moxie\",\n    \"owner\": {\n        \"display_name\": \"the team\",\n        \"links\": {\n            \"avatar\": {\n                \"href\": \"https://bitbucket.org/account/1team/avatar/32/\"\n            },\n            \"html\": {\n                \"href\": \"https://bitbucket.org/1team/\"\n            },\n            \"self\": {\n                \"href\": \"https://api.bitbucket.org/2.0/teams/1team\"\n            }\n        },\n        \"type\": \"team\",\n        \"username\": \"1team\",\n        \"uuid\": \"{aa559944-83c9-4963-a9a8-69ac8d9cf5d2}\"\n    },\n    \"project\": {\n        \"key\": \"PROJ\",\n        \"links\": {\n            \"avatar\": {\n                \"href\": \"https://bitbucket.org/account/user/1team/projects/PROJ/avatar/32\"\n            },\n            \"html\": {\n                \"href\": \"https://bitbucket.org/account/user/1team/projects/PROJ\"\n            }\n        },\n        \"name\": \"Untitled project\",\n        \"type\": \"project\",\n        \"uuid\": \"{ab52aaeb-16ad-4fb0-bb1d-47e4f00367ff}\"\n    },\n    \"scm\": \"git\",\n    \"size\": 33348,\n    \"type\": \"repository\",\n    \"updated_on\": \"2013-11-08T01:11:03.263237+00:00\",\n    \"uuid\": \"{21fa9bf8-b5b2-4891-97ed-d590bad0f871}\",\n    \"website\": \"\"\n}\n```\n\n### Team object and UUID <a name=\"teamobj\"></a>\n\nThis example shows a call for a list of team members using both the team name and with the UUID for the team object. As the call is unauthenticated in the following example the response object will only show members with public profiles. The response is the same in either case.\n\n**Call with teamname**\n\n```\ncurl https://api.bitbucket.org/2.0/teams/1team/members\n```\n**Call with UUID for team object**\n\n```\ncurl https://api.bitbucket.org/2.0/teams/%7Baa559944-83c9-4963-a9a8-69ac8d9cf5d2%7D/members\n```\n\n**Response**\n\n```JSON\n{\n    \"page\": 1,\n    \"pagelen\": 50,\n    \"size\": 2,\n    \"values\": [\n        {\n            \"created_on\": \"2011-12-20T16:34:07.132459+00:00\",\n            \"display_name\": \"tutorials account\",\n            \"links\": {\n                \"avatar\": {\n                    \"href\": \"https://bitbucket.org/account/tutorials/avatar/32/\"\n                },\n                \"followers\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/tutorials/followers\"\n                },\n                \"following\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/tutorials/following\"\n                },\n                \"hooks\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/tutorials/hooks\"\n                },\n                \"html\": {\n                    \"href\": \"https://bitbucket.org/tutorials/\"\n                },\n                \"repositories\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/repositories/tutorials\"\n                },\n                \"self\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/tutorials\"\n                },\n                \"snippets\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/snippets/tutorials\"\n                }\n            },\n            \"location\": null,\n            \"type\": \"user\",\n            \"username\": \"tutorials\",\n            \"uuid\": \"{c788b2da-b7a2-404c-9e26-d3f077557007}\",\n            \"website\": \"https://tutorials.bitbucket.org/\"\n        },\n        {\n            \"created_on\": \"2013-12-10T14:44:13+00:00\",\n            \"display_name\": \"Dan Stevens [Atlassian]\",\n            \"links\": {\n                \"avatar\": {\n                    \"href\": \"https://bitbucket.org/account/dans9190/avatar/32/\"\n                },\n                \"followers\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/dans9190/followers\"\n                },\n                \"following\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/dans9190/following\"\n                },\n                \"hooks\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/dans9190/hooks\"\n                },\n                \"html\": {\n                    \"href\": \"https://bitbucket.org/dans9190/\"\n                },\n                \"repositories\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/repositories/dans9190\"\n                },\n                \"self\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/users/dans9190\"\n                },\n                \"snippets\": {\n                    \"href\": \"https://api.bitbucket.org/2.0/snippets/dans9190\"\n                }\n            },\n            \"location\": null,\n            \"type\": \"user\",\n            \"username\": \"dans9190\",\n            \"uuid\": \"{1cd06601-cd0e-4fce-be03-e9ac226978b7}\",\n            \"website\": \"\"\n        }\n    ]\n}\n```\n\n## Standardized error responses <a name=\"stand-error\"></a>\n\nThe 2.0 API standardizes the error response layout. The 2.0 API serves a JSON\nobject along with the appropriate HTTP status code. The JSON object provides a\ndetailed  problem description.\n\n```json\n{\n    \"error\": {\n        \"message\": \"Bad request\",\n        \"fields\": {\n            \"src\": [\n                \"This field is required.\"\n            ]\n        },\n        \"detail\": \"You must specify a valid source branch when creating a pull request.\",\n        \"id\": \"d23a1cc5178f7637f3d9bf2d13824258\",\n        \"data\": {\n          \"extra\": \"Optional, endpoint-specific data to further augment the error.\"\n        }\n    }\n}\n```\n\nThis object contains an error element which contains the following nested\nelements:\n\n<table class='aui'>\n    <thead>\n        <tr>\n            <th>Element</th>\n            <th>Description</th>\n        </tr>\n    </thead>\n    <tr>\n        <td>message</td>\n        <td>A short description of the problem. This element is always present. Its value may be localized.</td>\n    </tr>\n    <tr>\n        <td>fields</td>\n        <td>This optional element is used in response to POST or PUT operations in which clients have provided invalid input. It contains a list of one or more client-provided fields that failed validation. The values may be localized.</td>\n    </tr>\n    <tr>\n        <td>detail</td>\n        <td>An optional detailed explanation of the failure. Its value may be localized.</td>\n    </tr>\n    <tr>\n        <td>id</td>\n        <td>An optional unique error identifier that identifies the error in Bitbucket's logging system. If you feel you hit a bug in an API and this field is provided, please mention it if you decide to contact support as it will greatly help us narrow down the problem.</td>\n    </tr>\n</table>\n\n## Standard ISO-8601 timestamps <a name=\"timestamp\"></a>\n\nAll 2.0 APIs use standardized ISO-8601 timestamps. In most cases, our APIs return UTC timestamps and for these, the timezone offset part will be 00:00. In rare cases where the original localized timestamp has significance, the timezone offset may identify the event's original timezone.\n",
      "description": "URL's, UUID's, errors, and timestamps",
      "icon": "data:image/png;base64,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",
      "key": "uri-uuid",
      "title": "URI, UUID, and structures"
    },
    {
      "content": "\n# Cors and hypermedia\n\nThis section describes [Cross-origin resource sharing](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) (CORS), what content types we support in requests and responses, and hyperlinking resources in each json responses.\n\n\n----\n**On this page**\n\n* [CORS](#cors)\n* [Supported content types](#supported-content)\n* [Resource links](#resource-links)\n\n----\n\n## Cors <a name=\"cors\"></a>\n\nThe Bitbucket API supports Cross-origin resource sharing to allow requests for restricted resources across domains. For more information you can refer to:\n\n* [Wikipedia article on CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)\n* [W3C CORS recommendation](https://www.w3.org/TR/cors/)\n\nSending a general request from the api to bitbucket.com:\n\n`curl -i https://api.bitbucket.org -H \"origin: http://bitbucket.com\"`\n\nGives this result:\n\n    HTTP/1.1 302 FOUND\n    Server: nginx/1.6.2\n    Vary: Cookie\n    Cache-Control: max-age=900\n    Content-Type: text/html; charset=utf-8\n    Strict-Transport-Security: max-age=31536000\n    Date: Tue, 21 Jun 2016 17:54:37 GMT\n    Location: http://confluence.atlassian.com/x/IYBGDQ\n    X-Served-By: app-110\n    X-Static-Version: 2c820eb0d2b3\n    ETag: \"d41d8cd98f00b204e9800998ecf8427e\"\n    X-Content-Type-Options: nosniff\n    X-Render-Time: 0.00379920005798\n    Connection: Keep-Alive\n    X-Version: 2c820eb0d2b3\n    X-Frame-Options: SAMEORIGIN\n    X-Request-Count: 383\n    X-Cache-Info: cached\n    Content-Length: 0\n\nSending the same request with the CORS check -X OPTIONS in the call:\n\n`curl -i https://api.bitbucket.org -H \"origin: http://bitbucket.com\" -X OPTIONS`\n\nGives this result:\n\n    HTTP/1.1 302 FOUND\n    Server: nginx/1.6.2\n    Vary: Cookie\n    Cache-Control: max-age=900\n    Content-Type: text/html; charset=utf-8\n    Access-Control-Expose-Headers: Accept-Ranges, Content-Encoding, Content-Length, Content-Type, ETag, Last-Modified\n    Strict-Transport-Security: max-age=31536000\n    Date: Tue, 21 Jun 2016 18:04:30 GMT\n    Access-Control-Max-Age: 86400\n    Location: http://confluence.atlassian.com/x/IYBGDQ\n    X-Served-By: app-111\n    Access-Control-Allow-Origin: *\n    X-Static-Version: 2c820eb0d2b3\n    ETag: \"d41d8cd98f00b204e9800998ecf8427e\"\n    X-Content-Type-Options: nosniff\n    X-Render-Time: 0.00371098518372\n    Connection: keep-alive\n    X-Version: 2c820eb0d2b3\n    X-Frame-Options: SAMEORIGIN\n    X-Request-Count: 357\n    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS\n    Access-Control-Allow-Headers: Accept, Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, Origin, Range, X-CsrftokenX-Requested-With\n    X-Cache-Info: not cacheable; request wasn't a GET or HEAD\n    Content-Length: 0\n\n\n\n## Supported content types <a name=\"supported-content\"></a>\n\nThe default and primary content type for 2.0 APIs is JSON. This applies both to responses from the server and to the request bodies provided by the client.\n\nUnless documented otherwise, whenever creating a new (POST) or modifying an existing (PUT) object, your client must provide the object's normal representation. Not every object element can be mutated. For example, a repository's created_on date is an auto-generated, immutable field. Your client can omit immutable fields from a request body.\n\nIn some cases, a resource might also accept regular application/x-www-url-form-encoded POST and PUT bodies. Such bodies can be more convenient in scripts and command line usage. Requests bodies can contain contain nested elements or they can be flat (without nested elements). Clients can send flat request bodies as either as application/json or as application/x-www-url-form-encoded. Nested objects always require JSON.\n\n## Resource links <a name=\"resource-links\"></a>\n\nEvery 2.0 object contains a links element that points to related resources or alternate representations. Use links to quickly discover and traverse to related objects. Links serve a \"self-documenting\" function for each endpoint. For example, the following request for a specific user:\n\n\n`$ curl https://api.bitbucket.org/2.0/users/tutorials`\n\n```json\n{\n    \"username\": \"tutorials\",\n    \"website\": \"https://tutorials.bitbucket.org/\",\n    \"display_name\": \"tutorials account\",\n    \"uuid\": \"{c788b2da-b7a2-404c-9e26-d3f077557007}\",\n    \"links\": {\n        \"self\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/tutorials\"\n        },\n        \"repositories\": {\n            \"href\": \"https://api.bitbucket.org/2.0/repositories/tutorials\"\n        },\n        \"html\": {\n            \"href\": \"https://bitbucket.org/tutorials\"\n        },\n        \"followers\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/tutorials/followers\"\n        },\n        \"avatar\": {\n            \"href\": \"https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2013/Nov/25/tutorials-avatar-1563784409-6_avatar.png\"\n        },\n        \"following\": {\n            \"href\": \"https://api.bitbucket.org/2.0/users/tutorials/following\"\n        }\n    },\n    \"created_on\": \"2011-12-20T16:34:07.132459+00:00\",\n    \"location\": \"Santa Monica, CA\",\n    \"type\": \"user\"\n}\n```\nLinks can be actual REST API resources or they can be informational. In this example, informative resources include the user's avatar and the HTML URL for the user's Bitbucket account. Your client should avoid hardcoding an API's URL and instead use the URLs returned in API responses.\n\nA link's key is its `rel` (relationship) attribute and it contains a mandatory href element. For example, the following link:\n\n```json\n\"self\": {\n      \"href\": \"https://api.bitbucket.org/api/2.0/users/tutorials\"\n}\n```\n\nThe rel for this link is self and the href is https://api.bitbucket.org/api/2.0/users/tutorials. A single rel key can contain an list (array) of href objects. Your client should anticipate that any rel key can contain one or more href objects.\n\nFinally, links can also contain optional elements. Two common optional elements are the name element and the title element. They are often used to disambiguate links that share the same rel key. In the example below, the repository object that contains a clone link with two href objects. Each object contains the optional name element to clarify its use.\n\n```json\n\"links\": {\n  \"self\": {\n    \"href\": \"https://api.bitbucket.org/2.0/repositories/evzijst/bitbucket\"\n  },\n  \"clone\": [\n    {\n      \"href\": \"https://api.bitbucket.org/evzijst/bitbucket.git\",\n      \"name\": \"https\"\n    },\n    {\n      \"href\": \"ssh://git@bitbucket.org/erik/bitbucket.git\",\n      \"name\": \"ssh\"\n    }\n  ],\n  ...\n}\n```\nLinks can support [URI Templates](https://tools.ietf.org/html/rfc6570); Those that do contain a `\"templated\": \"true\"` element.\n",
      "description": "Learn about resources and linking",
      "icon": "data:image/png;base64,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",
      "key": "cors-hypermedia",
      "title": "Cors and hypermedia"
    },
    {
      "content": "\n# Atlassian Connect for Bitbucket\n\nYou can use the Atlassian Connect for Bitbucket Cloud to build add-ons which\ncan connect with the Bitbucket UI and your own application set. An add-on could\nbe an integration with another existing service, new features for the Atlassian\napplication, or even a new product that runs within the Atlassian application.\n\nFor complete information see:\n[Atlassian Connect for Bitbucket Cloud](https://developer.atlassian.com/bitbucket/index.html)\n",
      "description": "Build Bitbucket add-ons with Connect",
      "icon": "data:image/png;base64,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",
      "key": "bb-connect",
      "title": "Atlassian Connect"
    }
  ],
  "x-revision": "1cc0811f4855"
}