{ "openapi": "3.0.0", "info": { "title": "Bitbucket API", "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.", "version": "2.0", "termsOfService": "https://www.atlassian.com/legal/customer-agreement", "contact": { "name": "Bitbucket Support", "url": "https://support.atlassian.com/bitbucket-cloud/", "email": "support@bitbucket.org" } }, "paths": { "/addon": { "delete": { "tags": [ "Addon" ], "description": "Deletes the application for the user.\n\nThis endpoint is intended to be used by Bitbucket Connect apps\nand only supports JWT authentication -- that is how Bitbucket\nidentifies the particular installation of the app. Developers\nwith applications registered in the \"Develop Apps\" section\nof Bitbucket Marketplace need not use this endpoint as\nupdates for those applications can be sent out via the\nUI of that section.\n\n```\n$ curl -X DELETE https://api.bitbucket.org/2.0/addon \\\n -H \"Authorization: JWT \"\n```", "summary": "Delete an app", "responses": { "204": { "description": "Request has succeeded. The application has been deleted for the user." }, "401": { "description": "No authorization.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "Improper authentication.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Addon" ], "description": "Updates the application installation for the user.\n\nThis endpoint is intended to be used by Bitbucket Connect apps\nand only supports JWT authentication -- that is how Bitbucket\nidentifies the particular installation of the app. Developers\nwith applications registered in the \"Develop Apps\" section\nof Bitbucket need not use this endpoint as updates for those\napplications can be sent out via the UI of that section.\n\nPassing an empty body will update the installation using the\nexisting descriptor URL.\n\n```\n$ curl -X PUT https://api.bitbucket.org/2.0/addon \\\n -H \"Authorization: JWT \" \\\n --header \"Content-Type: application/json\" \\\n --data '{}'\n```\n\nThe new `descriptor` for the installation can be also provided\nin the body directly.\n\n```\n$ curl -X PUT https://api.bitbucket.org/2.0/addon \\\n -H \"Authorization: JWT \" \\\n --header \"Content-Type: application/json\" \\\n --data '{\"descriptor\": $NEW_DESCRIPTOR}'\n```\n\nIn both these modes the URL of the descriptor cannot be changed. To\nchange the descriptor location and upgrade an installation\nthe request must be made exclusively with a `descriptor_url`.\n\n ```\n$ curl -X PUT https://api.bitbucket.org/2.0/addon \\\n -H \"Authorization: JWT \" \\\n --header \"Content-Type: application/json\" \\\n --data '{\"descriptor_url\": $NEW_URL}'\n```\n\nThe `descriptor_url` must exactly match the marketplace registration\nthat Atlassian has for the application. Contact your Atlassian\ndeveloper advocate to update this registration. Once the registration\nhas been updated you may call this resource for each installation.\n\nNote that the scopes of the application cannot be increased\nin the new descriptor nor reduced to none.", "summary": "Update an installed app", "responses": { "204": { "description": "Request has succeeded. The installation has been updated to the new descriptor." }, "400": { "description": "Scopes have increased or decreased to none.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "No authorization.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "Improper authentication.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/addon/linkers": { "get": { "tags": [ "Addon" ], "description": "Gets a list of all [linkers](/cloud/bitbucket/modules/linker/)\nfor the authenticated application.", "summary": "List linkers for an app", "responses": { "200": { "description": "Successful." }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/addon/linkers/{linker_key}": { "get": { "tags": [ "Addon" ], "description": "Gets a [linker](/cloud/bitbucket/modules/linker/) specified by `linker_key`\nfor the authenticated application.", "summary": "Get a linker for an app", "responses": { "200": { "description": "Successful." }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The linker does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "linker_key", "in": "path", "description": "The unique key of a [linker module](/cloud/bitbucket/modules/linker/)\nas defined in an application descriptor.", "required": true, "schema": { "type": "string" } } ] }, "/addon/linkers/{linker_key}/values": { "delete": { "tags": [ "Addon" ], "description": "Delete all [linker](/cloud/bitbucket/modules/linker/) values for the\nspecified linker of the authenticated application.", "summary": "Delete all linker values", "responses": { "204": { "description": "Successfully deleted the linker values." }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The linker does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Addon" ], "description": "Gets a list of all [linker](/cloud/bitbucket/modules/linker/) values for the\nspecified linker of the authenticated application.\n\nA linker value lets applications supply values to modify its regular expression.\n\nThe base regular expression must use a Bitbucket-specific match group `(?K)`\nwhich will be translated to `([\\w\\-]+)`. A value must match this pattern.\n\n[Read more about linker values](/cloud/bitbucket/modules/linker/#usingthebitbucketapitosupplyvalues)", "summary": "List linker values for a linker", "responses": { "200": { "description": "Successful." }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The linker does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Addon" ], "description": "Creates a [linker](/cloud/bitbucket/modules/linker/) value for the specified\nlinker of authenticated application.\n\nA linker value lets applications supply values to modify its regular expression.\n\nThe base regular expression must use a Bitbucket-specific match group `(?K)`\nwhich will be translated to `([\\w\\-]+)`. A value must match this pattern.\n\n[Read more about linker values](/cloud/bitbucket/modules/linker/#usingthebitbucketapitosupplyvalues)", "summary": "Create a linker value", "responses": { "201": { "description": "Successfully created the linker value." }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The linker does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "The linker already has the value being added.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Addon" ], "description": "Bulk update [linker](/cloud/bitbucket/modules/linker/) values for the specified\nlinker of the authenticated application.\n\nA linker value lets applications supply values to modify its regular expression.\n\nThe base regular expression must use a Bitbucket-specific match group `(?K)`\nwhich will be translated to `([\\w\\-]+)`. A value must match this pattern.\n\n[Read more about linker values](/cloud/bitbucket/modules/linker/#usingthebitbucketapitosupplyvalues)", "summary": "Update a linker value", "responses": { "204": { "description": "Successfully updated the linker values." }, "400": { "description": "Invalid input.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The linker does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "linker_key", "in": "path", "description": "The unique key of a [linker module](/cloud/bitbucket/modules/linker/)\nas defined in an application descriptor.", "required": true, "schema": { "type": "string" } } ] }, "/addon/linkers/{linker_key}/values/{value_id}": { "delete": { "tags": [ "Addon" ], "description": "Delete a single [linker](/cloud/bitbucket/modules/linker/) value\nof the authenticated application.", "summary": "Delete a linker value", "responses": { "204": { "description": "Successfully deleted the linker value." }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The linker value does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Addon" ], "description": "Get a single [linker](/cloud/bitbucket/modules/linker/) value\nof the authenticated application.", "summary": "Get a linker value", "responses": { "200": { "description": "Successful." }, "401": { "description": "Authentication must use app JWT", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The linker value does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "linker_key", "in": "path", "description": "The unique key of a [linker module](/cloud/bitbucket/modules/linker/)\nas defined in an application descriptor.", "required": true, "schema": { "type": "string" } }, { "name": "value_id", "in": "path", "description": "The numeric ID of the linker value.", "required": true, "schema": { "type": "integer" } } ] }, "/hook_events": { "get": { "tags": [ "Webhooks" ], "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.", "summary": "Get a webhook resource", "responses": { "200": { "description": "A mapping of resource/subject types pointing to their individual event types.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/subject_types" }, "examples": { "response": { "value": { "repository": { "links": { "events": { "href": "https://api.bitbucket.org/2.0/hook_events/repository" } } }, "workspace": { "links": { "events": { "href": "https://api.bitbucket.org/2.0/hook_events/workspace" } } } } } } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/hook_events/{subject_type}": { "get": { "tags": [ "Webhooks" ], "description": "Returns a paginated list of all valid webhook events for the\nspecified entity.\n**The team and user webhooks are deprecated, and you should use workspace instead.\nFor more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).**\n\nThis is public data that does not require any scopes or authentication.\n\nNOTE: The example response is a truncated response object for the `workspace` `subject_type`.\nWe return the same structure for the other `subject_type` objects.", "summary": "List subscribable webhook types", "responses": { "200": { "description": "A paginated list of webhook types available to subscribe on.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_hook_events" }, "examples": { "response": { "value": { "page": 1, "pagelen": 30, "size": 4, "values": [ { "category": "Repository", "description": "Whenever a repository push occurs", "event": "repo:push", "label": "Push" }, { "category": "Repository", "description": "Whenever a repository fork occurs", "event": "repo:fork", "label": "Fork" }, { "category": "Repository", "description": "Whenever a repository import occurs", "event": "repo:imported", "label": "Import" }, { "category": "Pull Request", "label": "Approved", "description": "When someone has approved a pull request", "event": "pullrequest:approved" } ] } } } } } }, "404": { "description": "If an invalid `{subject_type}` value was specified.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "subject_type", "in": "path", "description": "A resource or subject type.", "required": true, "schema": { "type": "string", "enum": [ "repository", "workspace" ] } } ] }, "/repositories": { "get": { "tags": [ "Repositories" ], "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](/cloud/bitbucket/rest/intro/#filtering) for more details.", "summary": "List public repositories", "responses": { "200": { "description": "All public repositories.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repositories" } } } } }, "parameters": [ { "name": "after", "in": "query", "description": "Filter the results to include only repositories created on or\nafter this [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601)\n timestamp. Example: `YYYY-MM-DDTHH:mm:ss.sssZ`", "required": false, "schema": { "type": "string" } }, { "name": "role", "in": "query", "description": "Filters 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", "required": false, "schema": { "type": "string", "enum": [ "admin", "contributor", "member", "owner" ] } }, { "name": "q", "in": "query", "description": "Query string to narrow down the response as per [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n`role` parameter must also be specified.\n", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Field by which the results should be sorted as per [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/repositories/{workspace}": { "get": { "tags": [ "Repositories" ], "description": "Returns a paginated list of all repositories owned by the specified\nworkspace.\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](/cloud/bitbucket/rest/intro/#filtering) for more details.", "summary": "List repositories in a workspace", "responses": { "200": { "description": "The repositories owned by the specified account.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repositories" } } } }, "404": { "description": "If the specified account does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "410": { "description": "If the specified account marked as spam.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "role", "in": "query", "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", "required": false, "schema": { "type": "string", "enum": [ "admin", "contributor", "member", "owner" ] } }, { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nField by which the results should be sorted as per [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n ", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}": { "delete": { "tags": [ "Repositories" ], "description": "Deletes the repository. This is an irreversible operation.\n\nThis does not affect its forks.", "summary": "Delete a repository", "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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "redirect_to", "in": "query", "description": "If a repository has been moved to a new location, use this parameter to\nshow users a friendly message in the Bitbucket UI that the repository\nhas moved to a new location. However, a GET to this endpoint will still\nreturn a 404.\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository:delete" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "delete:repository:bitbucket" ] } ] }, "get": { "tags": [ "Repositories" ], "description": "Returns the object describing this repository.", "summary": "Get a repository", "responses": { "200": { "description": "The repository object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } } }, "403": { "description": "If the repository is private and the authenticated user does not have access to it.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If no repository exists at this location.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Repositories" ], "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 be assigned for all repositories. If the project is not provided,\nthe repository is automatically assigned to the oldest project in the workspace.\n\nNote: In the examples above, the workspace ID `teamsinspace`,\nand/or the repository name `hablanding` can be replaced by UUIDs.", "summary": "Create a repository", "responses": { "200": { "description": "The newly created repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } } }, "400": { "description": "If the input document was invalid, or if the caller lacks the privilege to create repositories under the targeted account.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "If the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } }, "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." }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "put": { "tags": [ "Repositories" ], "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.", "summary": "Update a 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.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } } }, "201": { "description": "A new repository has been created", "headers": { "Location": { "description": "The location of the newly created repository", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } } }, "400": { "description": "If the input document was invalid, or if the caller lacks the privilege to create repositories under the targeted account.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "If the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } }, "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" }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/branch-restrictions": { "get": { "tags": [ "Branch restrictions" ], "description": "Returns a paginated list of all branch restrictions on the\nrepository.", "summary": "List branch restrictions", "responses": { "200": { "description": "A paginated list of branch restrictions", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_branchrestrictions" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "kind", "in": "query", "description": "Branch restrictions of this type", "required": false, "schema": { "type": "string" } }, { "name": "pattern", "in": "query", "description": "Branch restrictions applied to branches of this pattern", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "post": { "tags": [ "Branch restrictions" ], "description": "Creates a new branch restriction rule for a repository.\n\n`kind` describes what will be restricted. Allowed values include:\n`push`, `force`, `delete`, `restrict_merges`, `require_tasks_to_be_completed`,\n`require_approvals_to_merge`, `require_default_reviewer_approvals_to_merge`,\n`require_no_changes_requested`, `require_passing_builds_to_merge`, `require_commits_behind`,\n`reset_pullrequest_approvals_on_change`, `smart_reset_pullrequest_approvals`,\n`reset_pullrequest_changes_requested_on_change`, `require_all_dependencies_merged`,\n`enforce_merge_checks`, and `allow_auto_merge_when_builds_pass`.\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\nThe restriction applies to all branches that match. There are\ntwo ways to match a branch. It is configured in `branch_match_kind`:\n\n1. `glob`: Matches a branch against the `pattern`. A `'*'` in\n `pattern` will expand to match zero or more characters, and every\n other character matches itself. For example, `'foo*'` will match\n `'foo'` and `'foobar'`, but not `'barfoo'`. `'*'` will match all\n branches.\n2. `branching_model`: Matches a branch against the repository's\n branching model. The `branch_type` controls the type of branch\n to match. Allowed values include: `production`, `development`,\n `bugfix`, `release`, `feature` and `hotfix`.\n\nThe combination of `kind` and match must be unique. This means that\ntwo `glob` restrictions in a repository cannot have the same `kind` and\n`pattern`. Additionally, two `branching_model` restrictions in a\nrepository cannot have the same `kind` and `branch_type`.\n\n`users` and `groups` are lists of users and groups that are except from\nthe restriction. They can only be configured in `push` and\n`restrict_merges` restrictions. The `push` restriction stops a user\npushing to matching branches unless that user is in `users` or is a\nmember of a group in `groups`. The `restrict_merges` stops a user\nmerging pull requests to matching branches unless that user is in\n`users` or is a member of a group in `groups`. Adding new users or\ngroups to an existing restriction should be done via `PUT`.\n\nNote that branch restrictions with overlapping matchers is allowed,\nbut the resulting behavior may be surprising.", "summary": "Create a branch restriction rule", "responses": { "201": { "description": "A paginated list of branch restrictions", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branchrestriction" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branchrestriction" } } }, "description": "The new rule", "required": true }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/branch-restrictions/{id}": { "delete": { "tags": [ "Branch restrictions" ], "description": "Deletes an existing branch restriction rule.", "summary": "Delete a branch restriction rule", "responses": { "204": { "description": "" }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository or branch restriction id does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "get": { "tags": [ "Branch restrictions" ], "description": "Returns a specific branch restriction rule.", "summary": "Get a branch restriction rule", "responses": { "200": { "description": "The branch restriction rule", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branchrestriction" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository or branch restriction id does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "put": { "tags": [ "Branch restrictions" ], "description": "Updates an existing branch restriction rule.\n\nFields not present in the request body are ignored.\n\nSee [`POST`](/cloud/bitbucket/rest/api-group-branch-restrictions/#api-repositories-workspace-repo-slug-branch-restrictions-post) for details.", "summary": "Update a branch restriction rule", "responses": { "200": { "description": "The updated branch restriction rule", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branchrestriction" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository or branch restriction id does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branchrestriction" } } }, "description": "The new version of the existing rule", "required": true }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "parameters": [ { "name": "id", "in": "path", "description": "The restriction rule's id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/branching-model": { "get": { "tags": [ "Branching model" ], "description": "Return the branching model as applied to the repository. This view is\nread-only. The branching model settings can be changed using the\n[settings](#api-repositories-workspace-repo-slug-branching-model-settings-get) API.\n\nThe returned object:\n\n1. Always has a `development` property. `development.branch` contains\n the actual repository branch object that is considered to be the\n `development` branch. `development.branch` will not be present\n if it does not exist.\n2. Might have a `production` property. `production` will not\n be present when `production` is disabled.\n `production.branch` contains the actual branch object that is\n considered to be the `production` branch. `production.branch` will\n not be present if it does not exist.\n3. Always has a `branch_types` array which contains all enabled branch\n types.", "summary": "Get the branching model for a repository", "responses": { "200": { "description": "The branching model object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branching_model" }, "examples": { "response": { "value": { "development": { "name": "master", "branch": { "type": "branch", "name": "master", "target": { "hash": "16dffcb0de1b22e249db6799532074cf32efe80f" } }, "use_mainbranch": true }, "production": { "name": "production", "branch": { "type": "branch", "name": "production", "target": { "hash": "16dffcb0de1b22e249db6799532074cf32efe80f" } }, "use_mainbranch": false }, "branch_types": [ { "kind": "release", "prefix": "release/" }, { "kind": "hotfix", "prefix": "hotfix/" }, { "kind": "feature", "prefix": "feature/" }, { "kind": "bugfix", "prefix": "bugfix/" } ], "type": "branching_model", "links": { "self": { "href": "https://api.bitbucket.org/.../branching-model" } } } } } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have read access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/branching-model/settings": { "get": { "tags": [ "Branching model" ], "description": "Return the branching model configuration for a repository. The returned\nobject:\n\n1. Always has a `development` property for the development branch.\n2. Always a `production` property for the production branch. The\n production branch can be disabled.\n3. The `branch_types` contains all the branch types.\n\nThis is the raw configuration for the branching model. A client\nwishing to see the branching model with its actual current branches may\nfind the [active model API](/cloud/bitbucket/rest/api-group-branching-model/#api-repositories-workspace-repo-slug-branching-model-get) more useful.", "summary": "Get the branching model config for a repository", "responses": { "200": { "description": "The branching model configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branching_model_settings" }, "examples": { "response": { "value": { "development": { "is_valid": true, "name": "null", "use_mainbranch": true }, "production": { "is_valid": true, "name": "production", "use_mainbranch": false, "enabled": false }, "branch_types": [ { "kind": "release", "enabled": true, "prefix": "release/" }, { "kind": "hotfix", "enabled": true, "prefix": "hotfix/" }, { "kind": "feature", "enabled": true, "prefix": "feature/" }, { "kind": "bugfix", "enabled": false, "prefix": "bugfix/" } ], "type": "branching_model_settings", "links": { "self": { "href": "https://api.bitbucket.org/.../branching-model/settings" } } } } } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "put": { "tags": [ "Branching model" ], "description": "Update the branching model configuration for a repository.\n\nThe `development` branch can be configured to a specific branch or to\ntrack the main branch. When set to a specific branch it must\ncurrently exist. Only the passed properties will be updated. The\nproperties not passed will be left unchanged. A request without a\n`development` property will leave the development branch unchanged.\n\nIt is possible for the `development` branch to be invalid. This\nhappens when it points at a specific branch that has been\ndeleted. This is indicated in the `is_valid` field for the branch. It is\nnot possible to update the settings for `development` if that\nwould leave the branch in an invalid state. Such a request will be\nrejected.\n\nThe `production` branch can be a specific branch, the main\nbranch or disabled. When set to a specific branch it must currently\nexist. The `enabled` property can be used to enable (`true`) or\ndisable (`false`) it. Only the passed properties will be updated. The\nproperties not passed will be left unchanged. A request without a\n`production` property will leave the production branch unchanged.\n\nIt is possible for the `production` branch to be invalid. This\nhappens when it points at a specific branch that has been\ndeleted. This is indicated in the `is_valid` field for the branch. A\nrequest that would leave `production` enabled and invalid will be\nrejected. It is possible to update `production` and make it invalid if\nit would also be left disabled.\n\nThe `branch_types` property contains the branch types to be updated.\nOnly the branch types passed will be updated. All updates will be\nrejected if it would leave the branching model in an invalid state.\nFor branch types this means that:\n\n1. The prefixes for all enabled branch types are valid. For example,\n it is not possible to use '*' inside a Git prefix.\n2. A prefix of an enabled branch type must not be a prefix of another\n enabled branch type. This is to ensure that a branch can be easily\n classified by its prefix unambiguously.\n\nIt is possible to store an invalid prefix if that branch type would be\nleft disabled. Only the passed properties will be updated. The\nproperties not passed will be left unchanged. Each branch type must\nhave a `kind` property to identify it.\n\nThere is currently a side effect when using this API endpoint. If the\nrepository is inheriting branching model settings from its project,\nupdating the branching model for this repository will disable the\nproject setting inheritance.\n\n\nWe have deprecated this side effect and will remove it on 1 August 2022.", "summary": "Update the branching model config for a repository", "responses": { "200": { "description": "The updated branching model configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branching_model_settings" }, "examples": { "response": { "value": { "development": { "use_mainbranch": true }, "production": { "enabled": true, "use_mainbranch": false, "name": "production" }, "branch_types": [ { "kind": "bugfix", "enabled": true, "prefix": "bugfix/" }, { "kind": "feature", "enabled": true, "prefix": "feature/" }, { "kind": "hotfix", "prefix": "hotfix/" }, { "kind": "release", "enabled": false } ] } } } } } }, "400": { "description": "If the request contains invalid branching model configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commit/{commit}": { "get": { "tags": [ "Commits" ], "description": "Returns the specified commit.", "summary": "Get a commit", "responses": { "200": { "description": "The commit object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commit" }, "examples": { "response": { "value": { "rendered": { "message": { "raw": "Add a GEORDI_OUTPUT_DIR setting", "markup": "markdown", "html": "

Add a GEORDI_OUTPUT_DIR setting

", "type": "rendered" } }, "hash": "f7591a13eda445d9a9167f98eb870319f4b6c2d8", "repository": { "name": "geordi", "type": "repository", "full_name": "bitbucket/geordi", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi" }, "html": { "href": "https://bitbucket.org/bitbucket/geordi" }, "avatar": { "href": "https://bytebucket.org/ravatar/%7B85d08b4e-571d-44e9-a507-fa476535aa98%7D?ts=1730260" } }, "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/commit/f7591a13eda445d9a9167f98eb870319f4b6c2d8" }, "comments": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/commit/f7591a13eda445d9a9167f98eb870319f4b6c2d8/comments" }, "patch": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/patch/f7591a13eda445d9a9167f98eb870319f4b6c2d8" }, "html": { "href": "https://bitbucket.org/bitbucket/geordi/commits/f7591a13eda445d9a9167f98eb870319f4b6c2d8" }, "diff": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/diff/f7591a13eda445d9a9167f98eb870319f4b6c2d8" }, "approve": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/commit/f7591a13eda445d9a9167f98eb870319f4b6c2d8/approve" }, "statuses": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/commit/f7591a13eda445d9a9167f98eb870319f4b6c2d8/statuses" } }, "author": { "raw": "Brodie Rao ", "type": "author", "user": { "display_name": "Brodie Rao", "uuid": "{9484702e-c663-4afd-aefb-c93a8cd31c28}", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/%7B9484702e-c663-4afd-aefb-c93a8cd31c28%7D" }, "html": { "href": "https://bitbucket.org/%7B9484702e-c663-4afd-aefb-c93a8cd31c28%7D/" }, "avatar": { "href": "https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/557058:3aae1e05-702a-41e5-81c8-f36f29afb6ca/613070db-28b0-421f-8dba-ae8a87e2a5c7/128" } }, "type": "user", "nickname": "brodie", "account_id": "557058:3aae1e05-702a-41e5-81c8-f36f29afb6ca" } }, "summary": { "raw": "Add a GEORDI_OUTPUT_DIR setting", "markup": "markdown", "html": "

Add a GEORDI_OUTPUT_DIR setting

", "type": "rendered" }, "participants": [], "parents": [ { "type": "commit", "hash": "f06941fec4ef6bcb0c2456927a0cf258fa4f899b", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/commit/f06941fec4ef6bcb0c2456927a0cf258fa4f899b" }, "html": { "href": "https://bitbucket.org/bitbucket/geordi/commits/f06941fec4ef6bcb0c2456927a0cf258fa4f899b" } } } ], "date": "2012-07-16T19:37:54+00:00", "message": "Add a GEORDI_OUTPUT_DIR setting", "type": "commit" } } } } } }, "404": { "description": "If the specified commit or repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/approve": { "delete": { "tags": [ "Commits" ], "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.", "summary": "Unapprove a commit", "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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket" ] } ] }, "post": { "tags": [ "Commits" ], "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.", "summary": "Approve a commit", "responses": { "200": { "description": "The `participant` object recording that the authenticated user approved the commit.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/participant" } } } }, "404": { "description": "If the specified commit, or the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket", "write:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/comments": { "get": { "tags": [ "Commits" ], "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.", "summary": "List a commit's comments", "responses": { "200": { "description": "A paginated list of commit comments.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_commit_comments" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "Query string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Field by which the results should be sorted as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Commits" ], "description": "Creates new comment on the specified commit.\n\nTo post a reply to an existing comment, include the `parent.id` field:\n\n```\n$ curl https://api.bitbucket.org/2.0/repositories/atlassian/prlinks/commit/db9ba1e031d07a02603eae0e559a7adc010257fc/comments/ \\\n -X POST -u evzijst \\\n -H 'Content-Type: application/json' \\\n -d '{\"content\": {\"raw\": \"One more thing!\"},\n \"parent\": {\"id\": 5728901}}'\n```", "summary": "Create comment for a commit", "responses": { "201": { "description": "The newly created comment.", "headers": { "Location": { "description": "The location of the newly created comment.", "schema": { "type": "string" } } } }, "400": { "description": "If the comment was detected as spam, or if the parent comment is not attached to the same node as the new comment" }, "404": { "description": "If a parent ID was passed in that cannot be found" } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commit_comment" } } }, "description": "The specified comment.", "required": true }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/comments/{comment_id}": { "delete": { "tags": [ "Commits" ], "description": "Deletes the specified commit comment.\n\nNote that deleting comments that have visible replies that point to\nthem will not really delete the resource. This is to retain the integrity\nof the original comment tree. Instead, the `deleted` element is set to\n`true` and the content is blanked out. The comment will continue to be\nreturned by the collections and self endpoints.", "summary": "Delete a commit comment", "responses": { "204": { "description": "Indicates the comment was deleted by this action or a previous delete." }, "404": { "description": "If the comment doesn't exist" } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "get": { "tags": [ "Commits" ], "description": "Returns the specified commit comment.", "summary": "Get a commit comment", "responses": { "200": { "description": "The commit comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commit_comment" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "put": { "tags": [ "Commits" ], "description": "Used to update the contents of a comment. Only the content of the comment can be updated.\n\n```\n$ curl https://api.bitbucket.org/2.0/repositories/atlassian/prlinks/commit/7f71b5/comments/5728901 \\\n -X PUT -u evzijst \\\n -H 'Content-Type: application/json' \\\n -d '{\"content\": {\"raw\": \"One more thing!\"}'\n```", "summary": "Update a commit comment", "responses": { "201": { "description": "The newly updated comment.", "headers": { "Location": { "description": "The location of the newly updated comment.", "schema": { "type": "string" } } } }, "400": { "description": "If the comment update was detected as spam" } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commit_comment" } } }, "description": "The updated comment.", "required": true }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "comment_id", "in": "path", "description": "The id of the comment.", "required": true, "schema": { "type": "integer" } }, { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/properties/{app_key}/{property_name}": { "put": { "responses": { "204": { "description": "An empty response." } }, "operationId": "updateCommitHostedPropertyValue", "summary": "Update a commit application property", "description": "Update an [application property](/cloud/bitbucket/application-properties/) value stored against a commit.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "commit", "description": "The commit.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/application_property" }, "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "delete": { "responses": { "204": { "description": "An empty response." } }, "operationId": "deleteCommitHostedPropertyValue", "summary": "Delete a commit application property", "description": "Delete an [application property](/cloud/bitbucket/application-properties/) value stored against a commit.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "commit", "description": "The commit.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "responses": { "200": { "description": "The value of the property.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/application_property" } } } } }, "operationId": "getCommitHostedPropertyValue", "summary": "Get a commit application property", "description": "Retrieve an [application property](/cloud/bitbucket/application-properties/) value stored against a commit.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "commit", "description": "The commit.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] } }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/pullrequests": { "get": { "tags": [ "Pullrequests" ], "summary": "List pull requests that contain a commit", "description": "Returns a paginated list of all pull requests as part of which this commit was reviewed. Pull Request Commit Links app must be installed first before using this API; installation automatically occurs when 'Go to pull request' is clicked from the web interface for a commit's details.", "operationId": "getPullrequestsForCommit", "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "The repository; either the UUID in curly braces, or the slug", "required": true, "schema": { "type": "string" } }, { "name": "commit", "in": "path", "description": "The SHA1 of the commit", "required": true, "schema": { "type": "string" } }, { "name": "page", "in": "query", "description": "Which page to retrieve", "required": false, "schema": { "type": "integer", "format": "int32", "default": 1 } }, { "name": "pagelen", "in": "query", "description": "How many pull requests to retrieve per page", "required": false, "schema": { "type": "integer", "format": "int32", "default": 30 } } ], "responses": { "200": { "description": "The paginated list of pull requests.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pullrequests" } } } }, "202": { "description": "The repository's pull requests are still being indexed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pullrequests" } } } }, "404": { "description": "Either the repository does not exist, or pull request commit links have not yet been indexed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/reports": { "get": { "tags": [ "Reports", "Commits" ], "description": "Returns a paginated list of Reports linked to this commit.", "summary": "List reports", "operationId": "getReportsForCommit", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit for which to retrieve reports.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_reports" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}": { "put": { "tags": [ "Reports", "Commits" ], "description": "Creates or updates a report for the specified commit.\nTo upload a report, make sure to generate an ID that is unique across all reports for that commit. If you want to use an existing id from your own system, we recommend prefixing it with your system's name to avoid collisions, for example, mySystem-001.\n\n### Sample cURL request:\n```\ncurl --request PUT 'https://api.bitbucket.org/2.0/repositories///commit//reports/mysystem-001' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Security scan report\",\n \"details\": \"This pull request introduces 10 new dependency vulnerabilities.\",\n \"report_type\": \"SECURITY\",\n \"reporter\": \"mySystem\",\n \"link\": \"http://www.mysystem.com/reports/001\",\n \"result\": \"FAILED\",\n \"data\": [\n {\n \"title\": \"Duration (seconds)\",\n \"type\": \"DURATION\",\n \"value\": 14\n },\n {\n \"title\": \"Safe to merge?\",\n \"type\": \"BOOLEAN\",\n \"value\": false\n }\n ]\n}'\n```\n\n### Possible field values:\nreport_type: SECURITY, COVERAGE, TEST, BUG\nresult: PASSED, FAILED, PENDING\ndata.type: BOOLEAN, DATE, DURATION, LINK, NUMBER, PERCENTAGE, TEXT\n\n#### Data field formats\n| Type Field | Value Field Type | Value Field Display |\n|:--------------|:------------------|:--------------------|\n| None/ Omitted | Number, String or Boolean (not an array or object) | Plain text |\n| BOOLEAN\t| Boolean | The value will be read as a JSON boolean and displayed as 'Yes' or 'No'. |\n| DATE | Number | The value will be read as a JSON number in the form of a Unix timestamp (milliseconds) and will be displayed as a relative date if the date is less than one week ago, otherwise it will be displayed as an absolute date. |\n| DURATION | Number | The value will be read as a JSON number in milliseconds and will be displayed in a human readable duration format. |\n| LINK | Object: `{\"text\": \"Link text here\", \"href\": \"https://link.to.annotation/in/external/tool\"}` | The value will be read as a JSON object containing the fields \"text\" and \"href\" and will be displayed as a clickable link on the report. |\n| NUMBER | Number | The value will be read as a JSON number and large numbers will be displayed in a human readable format (e.g. 14.3k). |\n| PERCENTAGE | Number (between 0 and 100) | The value will be read as a JSON number between 0 and 100 and will be displayed with a percentage sign. |\n| TEXT | String | The value will be read as a JSON string and will be displayed as-is |\n\nPlease refer to the [Code Insights documentation](https://confluence.atlassian.com/bitbucket/code-insights-994316785.html) for more information.\n", "operationId": "createOrUpdateReport", "summary": "Create or update a report", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit the report belongs to.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Either the uuid or external-id of the report.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/report" } } }, "description": "The report to create or update", "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/report" } } } }, "400": { "description": "The provided Report object is malformed or incomplete.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "get": { "tags": [ "Reports", "Commits" ], "description": "Returns a single Report matching the provided ID.", "summary": "Get a report", "operationId": "getReport", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit the report belongs to.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Either the uuid or external-id of the report.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/report" } } } }, "404": { "description": "The report with the given ID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "delete": { "tags": [ "Reports", "Commits" ], "description": "Deletes a single Report matching the provided ID.", "summary": "Delete a report", "operationId": "deleteReport", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit the report belongs to.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Either the uuid or external-id of the report.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "No content" } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}/annotations": { "get": { "tags": [ "Reports", "Commits" ], "description": "Returns a paginated list of Annotations for a specified report.", "summary": "List annotations", "operationId": "getAnnotationsForReport", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit for which to retrieve reports.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Uuid or external-if of the report for which to get annotations for.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_annotations" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Reports", "Commits" ], "description": "Bulk upload of annotations.\nAnnotations are individual findings that have been identified as part of a report, for example, a line of code that represents a vulnerability. These annotations can be attached to a specific file and even a specific line in that file, however, that is optional. Annotations are not mandatory and a report can contain up to 1000 annotations.\n\nAdd the annotations you want to upload as objects in a JSON array and make sure each annotation has the external_id field set to a unique value. If you want to use an existing id from your own system, we recommend prefixing it with your system's name to avoid collisions, for example, mySystem-annotation001. The external id can later be used to identify the report as an alternative to the generated [UUID](https://developer.atlassian.com/bitbucket/api/2/reference/meta/uri-uuid#uuid). You can upload up to 100 annotations per POST request.\n\n### Sample cURL request:\n```\ncurl --location 'https://api.bitbucket.org/2.0/repositories///commit//reports/mysystem-001/annotations' \\\n--header 'Content-Type: application/json' \\\n--data-raw '[\n {\n \"external_id\": \"mysystem-annotation001\",\n \"title\": \"Security scan report\",\n \"annotation_type\": \"VULNERABILITY\",\n \"summary\": \"This line represents a security threat.\",\n \"severity\": \"HIGH\",\n \"path\": \"my-service/src/main/java/com/myCompany/mysystem/logic/Main.java\",\n \"line\": 42\n },\n {\n \"external_id\": \"mySystem-annotation002\",\n \"title\": \"Bug report\",\n \"annotation_type\": \"BUG\",\n \"result\": \"FAILED\",\n \"summary\": \"This line might introduce a bug.\",\n \"severity\": \"MEDIUM\",\n \"path\": \"my-service/src/main/java/com/myCompany/mysystem/logic/Helper.java\",\n \"line\": 13\n }\n]'\n```\n\n### Possible field values:\nannotation_type: VULNERABILITY, CODE_SMELL, BUG\nresult: PASSED, FAILED, IGNORED, SKIPPED\nseverity: HIGH, MEDIUM, LOW, CRITICAL\n\nPlease refer to the [Code Insights documentation](https://confluence.atlassian.com/bitbucket/code-insights-994316785.html) for more information.\n", "operationId": "bulkCreateOrUpdateAnnotations", "summary": "Bulk create or update annotations", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit for which to retrieve reports.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Uuid or external-if of the report for which to get annotations for.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/report_annotation" }, "minItems": 1, "maxItems": 100 } } }, "description": "The annotations to create or update", "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/report_annotation" } } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}/annotations/{annotationId}": { "get": { "tags": [ "Reports", "Commits" ], "description": "Returns a single Annotation matching the provided ID.", "summary": "Get an annotation", "operationId": "getAnnotation", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit the report belongs to.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Either the uuid or external-id of the report.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "annotationId", "description": "Either the uuid or external-id of the annotation.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/report_annotation" } } } }, "404": { "description": "The annotation with the given ID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "put": { "tags": [ "Reports", "Commits" ], "description": "Creates or updates an individual annotation for the specified report.\nAnnotations are individual findings that have been identified as part of a report, for example, a line of code that represents a vulnerability. These annotations can be attached to a specific file and even a specific line in that file, however, that is optional. Annotations are not mandatory and a report can contain up to 1000 annotations.\n\nJust as reports, annotation needs to be uploaded with a unique ID that can later be used to identify the report as an alternative to the generated [UUID](https://developer.atlassian.com/bitbucket/api/2/reference/meta/uri-uuid#uuid). If you want to use an existing id from your own system, we recommend prefixing it with your system's name to avoid collisions, for example, mySystem-annotation001.\n\n### Sample cURL request:\n```\ncurl --request PUT 'https://api.bitbucket.org/2.0/repositories///commit//reports/mySystem-001/annotations/mysystem-annotation001' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Security scan report\",\n \"annotation_type\": \"VULNERABILITY\",\n \"summary\": \"This line represents a security thread.\",\n \"severity\": \"HIGH\",\n \"path\": \"my-service/src/main/java/com/myCompany/mysystem/logic/Main.java\",\n \"line\": 42\n}'\n```\n\n### Possible field values:\nannotation_type: VULNERABILITY, CODE_SMELL, BUG\nresult: PASSED, FAILED, IGNORED, SKIPPED\nseverity: HIGH, MEDIUM, LOW, CRITICAL\n\nPlease refer to the [Code Insights documentation](https://confluence.atlassian.com/bitbucket/code-insights-994316785.html) for more information.\n", "operationId": "createOrUpdateAnnotation", "summary": "Create or update an annotation", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit the report belongs to.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Either the uuid or external-id of the report.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "annotationId", "description": "Either the uuid or external-id of the annotation.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/report_annotation" } } }, "description": "The annotation to create or update", "required": true }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/report_annotation" } } } }, "400": { "description": "The provided Annotation object is malformed or incomplete.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "delete": { "tags": [ "Reports", "Commits" ], "description": "Deletes a single Annotation matching the provided ID.", "summary": "Delete an annotation", "operationId": "deleteAnnotation", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "commit", "description": "The commit the annotation belongs to.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "reportId", "description": "Either the uuid or external-id of the annotation.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "annotationId", "description": "Either the uuid or external-id of the annotation.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "No content" } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses": { "get": { "tags": [ "Commit statuses" ], "description": "Returns all statuses (e.g. build results) for a specific commit.", "summary": "List commit statuses for a commit", "responses": { "200": { "description": "A paginated list of all commit statuses for this commit.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "refname", "in": "query", "description": "If specified, only return commit status objects that were either\ncreated without a refname, or were created with the specified refname\n", "required": false, "schema": { "type": "string" } }, { "name": "q", "in": "query", "description": "Query string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Field by which the results should be sorted as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\nDefaults to `created_on`.\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses/build": { "post": { "tags": [ "Commit statuses" ], "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\nExample:\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/my-workspace/my-repo/commit/e10dae226959c2194f2b07b077c07762d93821cf/statuses/build/ -X POST -u jdoe -H 'Content-Type: application/json' -d '{\n \"key\": \"MY-BUILD\",\n \"state\": \"SUCCESSFUL\",\n \"description\": \"42 tests passed\",\n \"url\": \"https://www.example.org/my-build-result\"\n }'\n```\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`.\n\nTo associate a commit status to a pull request, the refname field must be set to the source branch\nof the pull request.\n\nExample:\n```\ncurl https://api.bitbucket.org/2.0/repositories/my-workspace/my-repo/commit/e10dae226959c2194f2b07b077c07762d93821cf/statuses/build/ -X POST -u jdoe -H 'Content-Type: application/json' -d '{\n \"key\": \"MY-BUILD\",\n \"state\": \"SUCCESSFUL\",\n \"description\": \"42 tests passed\",\n \"url\": \"https://www.example.org/my-build-result\",\n \"refname\": \"my-pr-branch\"\n }'\n```", "summary": "Create a build status for a commit", "responses": { "201": { "description": "The newly created build status object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commitstatus" } } }, "description": "The new commit status object." }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses/build/{key}": { "get": { "tags": [ "Commit statuses" ], "description": "Returns the specified build status for a commit.", "summary": "Get a build status for a commit", "responses": { "200": { "description": "The build status object with the specified key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "put": { "tags": [ "Commit statuses" ], "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.", "summary": "Update a build status for a commit", "responses": { "200": { "description": "The updated build status object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commitstatus" } } } }, "401": { "description": "If the repository is private and the request was not authenticated." }, "404": { "description": "If the repository or build does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commitstatus" } } }, "description": "The updated build status object" }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "key", "in": "path", "description": "The build status' unique key", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commits": { "get": { "tags": [ "Commits" ], "description": "These are the repository's commits. They are paginated and returned\nin reverse chronological order, similar to the output of `git log`.\nLike these tools, the DAG can be filtered.\n\n#### GET /repositories/{workspace}/{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`).\n\n#### GET /repositories/{workspace}/{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/{workspace}/{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\nAn optional `path` parameter can be specified that will limit the\nresults to commits that affect that path. `path` can either be a file\nor a directory. If a directory is specified, commits are returned that\nhave modified any file in the directory tree rooted by `path`. It is\nimportant to note that if the `path` parameter is specified, the commits\nreturned by this endpoint may no longer be a DAG, parent commits that\ndo not modify the path will be omitted from the response.\n\n#### GET /repositories/{workspace}/{repo_slug}/commits/?path=README.md&include=foo&include=bar&exclude=master\n\nReturns all commits that are on refs `foo` or `bar`, but not on `master`\nthat changed the file README.md.\n\n#### GET /repositories/{workspace}/{repo_slug}/commits/?path=src/&include=foo&include=bar&exclude=master\n\nReturns all commits that are on refs `foo` or `bar`, but not on `master`\nthat changed to a file in any file in the directory src or its children.\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.", "summary": "List commits", "responses": { "200": { "description": "A paginated list of commits", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_changeset" } } } }, "404": { "description": "If the specified repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Commits" ], "description": "Identical to `GET /repositories/{workspace}/{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.**", "summary": "List commits with include/exclude", "responses": { "200": { "description": "A paginated list of commits", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_changeset" } } } }, "404": { "description": "If the specified repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/commits/{revision}": { "get": { "tags": [ "Commits" ], "description": "These are the repository's commits. They are paginated and returned\nin reverse chronological order, similar to the output of `git log`.\nLike these tools, the DAG can be filtered.\n\n#### GET /repositories/{workspace}/{repo_slug}/commits/master\n\nReturns all commits on ref `master` (similar to `git log master`).\n\n#### GET /repositories/{workspace}/{repo_slug}/commits/dev?include=foo&exclude=master\n\nReturns all commits on ref `dev` or `foo`, except those that are reachable on\n`master` (similar to `git log dev foo ^master`).\n\nAn optional `path` parameter can be specified that will limit the\nresults to commits that affect that path. `path` can either be a file\nor a directory. If a directory is specified, commits are returned that\nhave modified any file in the directory tree rooted by `path`. It is\nimportant to note that if the `path` parameter is specified, the commits\nreturned by this endpoint may no longer be a DAG, parent commits that\ndo not modify the path will be omitted from the response.\n\n#### GET /repositories/{workspace}/{repo_slug}/commits/dev?path=README.md&include=foo&include=bar&exclude=master\n\nReturns all commits that are on refs `dev` or `foo` or `bar`, but not on `master`\nthat changed the file README.md.\n\n#### GET /repositories/{workspace}/{repo_slug}/commits/dev?path=src/&include=foo&exclude=master\n\nReturns all commits that are on refs `dev` or `foo`, but not on `master`\nthat changed to a file in any file in the directory src or its children.\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.", "summary": "List commits for revision", "responses": { "200": { "description": "A paginated list of commits", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_changeset" } } } }, "404": { "description": "If the specified revision does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Commits" ], "description": "Identical to `GET /repositories/{workspace}/{repo_slug}/commits/{revision}`,\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.**", "summary": "List commits for revision using include/exclude", "responses": { "200": { "description": "A paginated list of commits", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_changeset" } } } }, "404": { "description": "If the specified revision does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "revision", "in": "path", "description": "A commit SHA1 or ref name.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/components": { "get": { "tags": [ "Issue tracker" ], "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.", "summary": "List components", "responses": { "200": { "description": "The components that have been defined in the issue tracker.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_components" } } } }, "404": { "description": "The specified repository does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/components/{component_id}": { "get": { "tags": [ "Issue tracker" ], "description": "Returns the specified issue tracker component object.", "summary": "Get a component for issues", "responses": { "200": { "description": "The specified component object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/component" } } } }, "404": { "description": "The specified repository or component does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "component_id", "in": "path", "description": "The component's id", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/default-reviewers": { "get": { "tags": [ "Pullrequests" ], "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. To obtain the repository's default reviewers\nas well as the default reviewers inherited from the project, use the\n[effective-default-reveiwers](#api-repositories-workspace-repo-slug-effective-default-reviewers-get) endpoint.", "summary": "List default reviewers", "responses": { "200": { "description": "The paginated list of default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_accounts" } } } }, "403": { "description": "If the authenticated user does not have access to view the default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/default-reviewers/{target_username}": { "delete": { "tags": [ "Pullrequests" ], "description": "Removes a default reviewer from the repository.", "summary": "Remove a user from the default reviewers", "responses": { "204": { "description": "The specified user successfully removed from the default reviewers" }, "403": { "description": "If the authenticated user does not have access modify the default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "get": { "tags": [ "Pullrequests" ], "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.", "summary": "Get a default reviewer", "responses": { "200": { "description": "The specified user is a default reviewer", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/account" } } } }, "403": { "description": "If the authenticated user does not have access to check if the specified user is a default reviewer", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified user does not exist or is not a default reviewer", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "put": { "tags": [ "Pullrequests" ], "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.", "summary": "Add a user to the default reviewers", "responses": { "200": { "description": "The specified user was successfully added to the default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/account" } } } }, "400": { "description": "If the authenticated user tried to add a team, bot user, or user without access to the repository to the default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have permission to modify the default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "target_username", "in": "path", "description": "This can either be the username or the UUID of the default reviewer,\nsurrounded by curly-braces, for example: `{account UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/deploy-keys": { "get": { "tags": [ "Deployments" ], "description": "Returns all deploy-keys belonging to a repository.", "summary": "List repository deploy keys", "responses": { "200": { "description": "Deploy keys matching the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_deploy_keys" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "id": 123, "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", "label": "mykey", "type": "deploy_key", "created_on": "2018-08-15T23:50:59.993890+00:00", "repository": { "full_name": "mleu/test", "name": "test", "type": "repository", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123" } }, "last_used": null, "comment": "mleu@C02W454JHTD8" } ], "page": 1, "size": 1 } } } } } }, "403": { "description": "If the specified user or repository is not accessible to the current user" }, "404": { "description": "If the specified user or repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Deployments" ], "description": "Create a new deploy key in a repository. Note: If authenticating a deploy key\nwith an OAuth consumer, any changes to the OAuth consumer will subsequently\ninvalidate the deploy key.\n\n\nExample:\n```\n$ curl -X POST \\\n-H \"Authorization \" \\\n-H \"Content-type: application/json\" \\\nhttps://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys -d \\\n'{\n \"key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5 mleu@C02W454JHTD8\",\n \"label\": \"mydeploykey\"\n}'\n```", "summary": "Add a repository deploy key", "responses": { "200": { "description": "The deploy key that was created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deploy_key" }, "examples": { "response": { "value": { "id": 123, "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", "label": "mydeploykey", "type": "deploy_key", "created_on": "2018-08-15T23:50:59.993890+00:00", "repository": { "full_name": "mleu/test", "name": "test", "type": "repository", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123" } }, "last_used": null, "comment": "mleu@C02W454JHTD8" } } } } } }, "400": { "description": "Invalid deploy key inputs" }, "403": { "description": "If the specified user or repository is not accessible to the current user" }, "404": { "description": "If the specified user or repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/deploy-keys/{key_id}": { "delete": { "tags": [ "Deployments" ], "description": "This deletes a deploy key from a repository.", "summary": "Delete a repository deploy key", "responses": { "204": { "description": "The key has been deleted" }, "403": { "description": "If the current user does not have permission to delete a key for the specified user" }, "404": { "description": "If the specified user, repository, or deploy key does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Deployments" ], "description": "Returns the deploy key belonging to a specific key.", "summary": "Get a repository deploy key", "responses": { "200": { "description": "Deploy key matching the key ID", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deploy_key" }, "examples": { "response": { "value": { "comment": "mleu@C02W454JHTD8", "last_used": null, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-key/1234" } }, "repository": { "full_name": "mleu/test", "name": "test", "type": "repository", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "label": "mykey", "created_on": "2018-08-15T23:50:59.993890+00:00", "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", "id": 1234, "type": "deploy_key" } } } } } }, "403": { "description": "If the specified user or repository is not accessible to the current user" }, "404": { "description": "If the specified user or repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Deployments" ], "description": "Create a new deploy key in a repository.\n\nThe same key needs to be passed in but the comment and label can change.\n\nExample:\n```\n$ curl -X PUT \\\n-H \"Authorization \" \\\n-H \"Content-type: application/json\" \\\nhttps://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/1234 -d \\\n'{\n \"label\": \"newlabel\",\n \"key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5 newcomment\",\n}'\n```", "summary": "Update a repository deploy key", "responses": { "200": { "description": "The newly updated deploy key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deploy_key" }, "examples": { "response": { "value": { "comment": "newcomment", "last_used": null, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/1234" } }, "repository": { "full_name": "mleu/test", "name": "test", "type": "repository", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "label": "newlabel", "created_on": "2018-08-15T23:50:59.993890+00:00", "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", "id": 1234, "type": "deploy_key" } } } } } }, "400": { "description": "If the submitted key or related value is invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the current user does not have permission to add a key for the specified user" }, "404": { "description": "If the specified user, repository, or deploy key does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "key_id", "in": "path", "description": "The key ID matching the deploy key.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/deployments": { "get": { "tags": [ "Deployments" ], "description": "Find deployments", "summary": "List deployments", "operationId": "getDeploymentsForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The matching deployments.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_deployments" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/deployments/{deployment_uuid}": { "get": { "tags": [ "Deployments" ], "description": "Retrieve a deployment", "summary": "Get a deployment", "operationId": "getDeploymentForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "deployment_uuid", "description": "The deployment UUID.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The deployment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment" } } } }, "404": { "description": "No account, repository or deployment with the UUID provided exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/deployments_config/environments/{environment_uuid}/variables": { "get": { "tags": [ "Pipelines" ], "description": "Find deployment environment level variables.", "summary": "List variables for an environment", "operationId": "getDeploymentVariables", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "environment_uuid", "description": "The environment.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The retrieved deployment variables.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_deployment_variable" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "post": { "tags": [ "Pipelines" ], "description": "Create a deployment environment level variable.", "summary": "Create a variable for an environment", "operationId": "createDeploymentVariable", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "environment_uuid", "description": "The environment.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment_variable" } } }, "description": "The variable to create", "required": true }, "responses": { "201": { "description": "The variable was created.", "headers": { "Location": { "description": "The URL of the newly created variable.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment_variable" } } } }, "404": { "description": "The account, repository, environment or variable with the given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "A variable with the provided key already exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/deployments_config/environments/{environment_uuid}/variables/{variable_uuid}": { "put": { "tags": [ "Pipelines" ], "description": "Update a deployment environment level variable.", "summary": "Update a variable for an environment", "operationId": "updateDeploymentVariable", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "environment_uuid", "description": "The environment.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to update.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment_variable" } } }, "description": "The updated deployment variable.", "required": true }, "responses": { "200": { "description": "The deployment variable was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment_variable" } } } }, "404": { "description": "The account, repository, environment or variable with the given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Pipelines" ], "description": "Delete a deployment environment level variable.", "summary": "Delete a variable for an environment", "operationId": "deleteDeploymentVariable", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "environment_uuid", "description": "The environment.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to delete.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The variable was deleted." }, "404": { "description": "The account, repository, environment or variable with given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/diff/{spec}": { "get": { "tags": [ "Commits" ], "description": "Produces a raw git-style diff.\n\n#### Single commit spec\n\nIf the `spec` argument to this API is a single commit, the diff is\nproduced against the first parent of the specified commit.\n\n#### Two commit spec\n\nTwo commits separated by `..` may be provided as the `spec`, e.g.,\n`3a8b42..9ff173`. When two commits are provided and the `topic` query\nparameter is true, this API produces a 2-way three dot diff.\nThis is the diff between source commit and the merge base of the source\ncommit and the destination commit. When the `topic` query param is false,\na simple git-style diff is produced.\n\nThe two commits are interpreted as follows:\n\n* First commit: the commit containing the changes we wish to preview\n* Second commit: the commit representing the state to which we want to\n compare the first commit\n* **Note**: This is the opposite of the order used in `git diff`.\n\n#### Comparison to patches\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\n#### Response\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`.", "summary": "Compare two commits", "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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "context", "in": "query", "description": "Generate diffs with lines of context instead of the usual three.", "required": false, "schema": { "type": "integer" } }, { "name": "path", "in": "query", "description": "Limit the diff to a particular file (this parameter\ncan be repeated for multiple paths).", "required": false, "schema": { "type": "string" } }, { "name": "ignore_whitespace", "in": "query", "description": "Generate diffs that ignore whitespace.", "required": false, "schema": { "type": "boolean" } }, { "name": "binary", "in": "query", "description": "Generate diffs that include binary files, true if omitted.", "required": false, "schema": { "type": "boolean" } }, { "name": "renames", "in": "query", "description": "Whether to perform rename detection, true if omitted.", "required": false, "schema": { "type": "boolean" } }, { "name": "merge", "in": "query", "description": "This parameter is deprecated. The 'topic' parameter should be used\ninstead. The 'merge' and 'topic' parameters cannot be both used at\nthe same time.\n\nIf true, the source commit is merged into the\ndestination commit, and then a diff from the\ndestination to the merge result is returned. If false,\na simple 'two dot' diff between the source and\ndestination is returned. True if omitted.", "required": false, "schema": { "type": "boolean" } }, { "name": "topic", "in": "query", "description": "If true, returns 2-way 'three-dot' diff.\nThis is a diff between the source commit and the merge base\nof the source commit and the destination commit.\nIf false, a simple 'two dot' diff between the source and\ndestination is returned.", "required": false, "schema": { "type": "boolean" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "spec", "in": "path", "description": "A commit SHA (e.g. `3a8b42`) or a commit range using double dot\nnotation (e.g. `3a8b42..9ff173`).\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/diffstat/{spec}": { "get": { "tags": [ "Commits" ], "description": "Produces a response in JSON format with a record for every path\nmodified, including information on the type of the change and the\nnumber of lines added and removed.\n\n#### Single commit spec\n\nIf the `spec` argument to this API is a single commit, the diff is\nproduced against the first parent of the specified commit.\n\n#### Two commit spec\n\nTwo commits separated by `..` may be provided as the `spec`, e.g.,\n`3a8b42..9ff173`. When two commits are provided and the `topic` query\nparameter is true, this API produces a 2-way three dot diff.\nThis is the diff between source commit and the merge base of the source\ncommit and the destination commit. When the `topic` query param is false,\na simple git-style diff is produced.\n\nThe two commits are interpreted as follows:\n\n* First commit: the commit containing the changes we wish to preview\n* Second commit: the commit representing the state to which we want to\n compare the first commit\n* **Note**: This is the opposite of the order used in `git diff`.", "summary": "Compare two commit diff stats", "responses": { "200": { "description": "The diff stats", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_diffstats" }, "examples": { "response": { "value": { "pagelen": 500, "values": [ { "type": "diffstat", "status": "modified", "lines_removed": 1, "lines_added": 2, "old": { "path": "setup.py", "escaped_path": "setup.py", "type": "commit_file", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/src/e1749643d655d7c7014001a6c0f58abaf42ad850/setup.py" } } }, "new": { "path": "setup.py", "escaped_path": "setup.py", "type": "commit_file", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/bitbucket/geordi/src/d222fa235229c55dad20b190b0b571adf737d5a6/setup.py" } } } } ], "page": 1, "size": 1 } } } } } }, "555": { "description": "If generating the diffstat timed out.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "ignore_whitespace", "in": "query", "description": "Generate diffs that ignore whitespace", "required": false, "schema": { "type": "boolean" } }, { "name": "merge", "in": "query", "description": "This parameter is deprecated. The 'topic' parameter should be used\ninstead. The 'merge' and 'topic' parameters cannot be both used at\nthe same time.\n\nIf true, the source commit is merged into the\ndestination commit, and then a diffstat from the\ndestination to the merge result is returned. If false,\na simple 'two dot' diffstat between the source and\ndestination is returned. True if omitted.", "required": false, "schema": { "type": "boolean" } }, { "name": "path", "in": "query", "description": "Limit the diffstat to a particular file (this parameter\ncan be repeated for multiple paths).", "required": false, "schema": { "type": "string" } }, { "name": "renames", "in": "query", "description": "Whether to perform rename detection, true if omitted.", "required": false, "schema": { "type": "boolean" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "spec", "in": "path", "description": "A commit SHA (e.g. `3a8b42`) or a commit range using double dot\nnotation (e.g. `3a8b42..9ff173`).\n", "required": true, "schema": { "type": "string" } }, { "name": "topic", "in": "query", "description": "If true, returns 2-way 'three-dot' diff.\nThis is a diff between the source commit and the merge base\nof the source commit and the destination commit.\nIf false, a simple 'two dot' diff between the source and\ndestination is returned.", "required": false, "schema": { "type": "boolean" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/downloads": { "get": { "tags": [ "Downloads" ], "description": "Returns a list of download links associated with the repository.", "summary": "List download artifacts", "responses": { "200": { "description": "Returns a paginated list of the downloads associated with the repository." }, "403": { "description": "User is not authorized to read from the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Downloads" ], "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.", "summary": "Upload a download artifact", "responses": { "201": { "description": "The artifact was uploaded sucessfully." }, "400": { "description": "Bad Request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "User is not authorized to write to the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "406": { "description": "Unsupported Content-Type. Use multiplart/form-data.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/downloads/{filename}": { "delete": { "tags": [ "Downloads" ], "description": "Deletes the specified download artifact from the repository.", "summary": "Delete a download artifact", "responses": { "204": { "description": "The specified download artifact was deleted." }, "403": { "description": "User is not authorized to write to the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified download does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket" ] } ] }, "get": { "tags": [ "Downloads" ], "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", "summary": "Get a download artifact link", "responses": { "302": { "description": "Redirects to the url of the specified download artifact." }, "403": { "description": "User is not authorized to read from the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified download artifact does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "filename", "in": "path", "description": "Name of the file.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/effective-branching-model": { "get": { "tags": [ "Branching model" ], "description": "", "summary": "Get the effective, or currently applied, branching model for a repository", "responses": { "200": { "description": "The effective branching model object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/effective_repo_branching_model" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have read access to the repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/effective-default-reviewers": { "get": { "tags": [ "Pullrequests" ], "description": "Returns the repository's effective default reviewers. This includes both default\nreviewers defined at the repository level as well as those inherited from its project.\n\nThese are the users that are automatically added as reviewers on every\nnew pull request that is created.", "summary": "List effective default reviewers", "responses": { "200": { "description": "The paginated list of effective default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_default_reviewer_and_type" }, "examples": { "response": { "value": { "pagelen": 20, "values": [ { "user": { "display_name": "Patrick Wolf", "uuid": "{9565301a-a3cf-4b5d-88f4-dd6af8078d7e}" }, "reviewer_type": "project", "type": "default_reviewer" }, { "user": { "display_name": "Davis Lee", "uuid": "{f0e0e8e9-66c1-4b85-a784-44a9eb9ef1a6}" }, "reviewer_type": "repository", "type": "default_reviewer" } ], "page": 1, "size": 2 } } } } } }, "403": { "description": "If the authenticated user does not have access to view the default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/environments": { "get": { "tags": [ "Deployments" ], "description": "Find environments", "summary": "List environments", "operationId": "getEnvironmentsForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The matching environments.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_environments" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "post": { "tags": [ "Deployments" ], "description": "Create an environment.", "summary": "Create an environment", "operationId": "createEnvironment", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment_environment" } } }, "description": "The environment to create.", "required": true }, "responses": { "201": { "description": "The environment was created.", "headers": { "Location": { "description": "The URL of the newly created environment.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment_environment" } } } }, "404": { "description": "The account or repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "An environment host with the provided name already exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/environments/{environment_uuid}": { "get": { "tags": [ "Deployments" ], "summary": "Get an environment", "description": "Retrieve an environment", "operationId": "getEnvironmentForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "environment_uuid", "description": "The environment UUID.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The environment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/deployment_environment" } } } }, "404": { "description": "No account, repository or environment with the UUID provided exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Deployments" ], "description": "Delete an environment", "summary": "Delete an environment", "operationId": "deleteEnvironmentForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "environment_uuid", "description": "The environment UUID.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The environment was deleted." }, "404": { "description": "No account or repository with the UUID provided exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/environments/{environment_uuid}/changes": { "post": { "tags": [ "Deployments" ], "description": "Update an environment", "summary": "Update an environment", "operationId": "updateEnvironmentForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "environment_uuid", "description": "The environment UUID.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "202": { "description": "The environment update request was accepted." }, "404": { "description": "No account, repository or environment with the UUID provided exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/filehistory/{commit}/{path}": { "get": { "tags": [ "Source", "Repositories" ], "description": "Returns a paginated list of commits that modified the specified file.\n\nCommits are returned in reverse chronological order. This is roughly\nequivalent to the following commands:\n\n $ git log --follow --date-order \n\nBy default, Bitbucket will follow renames and the path name in the\nreturned entries reflects that. This can be turned off using the\n`?renames=false` query parameter.\n\nResults are returned in descending chronological order by default, and\nlike most endpoints you can\n[filter and sort](/cloud/bitbucket/rest/intro/#filtering) the response to\nonly provide exactly the data you want.\n\nThe example response returns commits made before 2011-05-18 against a file\nnamed `README.rst`. The results are filtered to only return the path and\ndate. This request can be made using:\n\n```\n$ curl 'https://api.bitbucket.org/2.0/repositories/evzijst/dogslow/filehistory/master/README.rst'\\\n '?fields=values.next,values.path,values.commit.date&q=commit.date<=2011-05-18'\n```\n\nIn the response you can see that the file was renamed to `README.rst`\nby the commit made on 2011-05-16, and was previously named `README.txt`.", "summary": "List commits that modified a file", "responses": { "200": { "description": "A paginated list of commits that modified the specified file", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_files" }, "examples": { "response": { "value": { "values": [ { "commit": { "date": "2011-05-17T07:32:09+00:00" }, "path": "README.rst" }, { "commit": { "date": "2011-05-16T06:33:28+00:00" }, "path": "README.txt" }, { "commit": { "date": "2011-05-16T06:15:39+00:00" }, "path": "README.txt" } ] } } } } } }, "404": { "description": "If the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "renames", "in": "query", "description": "\nWhen `true`, Bitbucket will follow the history of the file across\nrenames (this is the default behavior). This can be turned off by\nspecifying `false`.", "required": false, "schema": { "type": "string" } }, { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nName of a response property sort the result by as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#sorting-query-results).\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "path", "in": "path", "description": "Path to the file.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/forks": { "get": { "tags": [ "Repositories" ], "description": "Returns a paginated list of all the forks of the specified\nrepository.", "summary": "List repository forks", "responses": { "200": { "description": "All forks.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repositories" } } } } }, "parameters": [ { "name": "role", "in": "query", "description": "Filters 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", "required": false, "schema": { "type": "string", "enum": [ "admin", "contributor", "member", "owner" ] } }, { "name": "q", "in": "query", "description": "Query string to narrow down the response as per [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Field by which the results should be sorted as per [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Repositories" ], "description": "Creates a new fork of the specified repository.\n\n#### Forking a repository\n\nTo create a fork, specify the workspace explicitly as part of the\nrequest body:\n\n```\n$ curl -X POST -u jdoe https://api.bitbucket.org/2.0/repositories/atlassian/bbql/forks \\\n -H 'Content-Type: application/json' -d '{\n \"name\": \"bbql_fork\",\n \"workspace\": {\n \"slug\": \"atlassian\"\n }\n}'\n```\n\nTo fork a repository into the same workspace, also specify a new `name`.\n\nWhen you specify a value for `name`, it will also affect the `slug`.\nThe `slug` is reflected in the repository URL of the new fork. It is\nderived from `name` by substituting non-ASCII characters, removes\nwhitespace, and changes characters to lower case. For example,\n`My repo` would turn into `my_repo`.\n\nYou need contributor access to create new forks within a workspace.\n\n\n#### Change the properties of a new fork\n\nBy default the fork inherits most of its properties from the parent.\nHowever, since the optional POST body document follows the normal\n`repository` JSON schema and you can override the new fork's\nproperties.\n\nProperties that can be overridden include:\n\n* description\n* fork_policy\n* language\n* mainbranch\n* is_private (note that a private repo's fork_policy might prohibit\n the creation of public forks, in which `is_private=False` would fail)\n* has_issues (to initialize or disable the new repo's issue tracker --\n note that the actual contents of the parent repository's issue\n tracker are not copied during forking)\n* has_wiki (to initialize or disable the new repo's wiki --\n note that the actual contents of the parent repository's wiki are not\n copied during forking)\n* project (when forking into a private project, the fork's `is_private`\n must be `true`)\n\nProperties that cannot be modified include:\n\n* scm\n* parent\n* full_name", "summary": "Fork a repository", "responses": { "201": { "description": "The newly created fork.", "headers": { "Location": { "description": "The URL of the newly created fork", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository" } } }, "description": "A repository object. This can be left blank." }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket", "write:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/hooks": { "get": { "tags": [ "Repositories", "Webhooks" ], "description": "Returns a paginated list of webhooks installed on this repository.", "summary": "List webhooks for a repository", "responses": { "200": { "description": "The paginated list of installed webhooks.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_webhook_subscriptions" } } } }, "403": { "description": "If the authenticated user does not have permission to access the webhooks.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Repositories", "Webhooks" ], "description": "Creates a new webhook on the specified repository.\n\nExample:\n\n```\n$ curl -X POST -u credentials -H 'Content-Type: application/json'\n https://api.bitbucket.org/2.0/repositories/my-workspace/my-repo-slug/hooks\n -d '\n {\n \"description\": \"Webhook Description\",\n \"url\": \"https://example.com/\",\n \"active\": true,\n \"secret\": \"this is a really bad secret\",\n \"events\": [\n \"repo:push\",\n \"issue:created\",\n \"issue:updated\"\n ]\n }'\n```\n\nWhen the `secret` is provided it will be used as the key to generate a HMAC\ndigest value sent in the `X-Hub-Signature` header at delivery time. Passing\na `null` or empty `secret` or not passing a `secret` will leave the webhook's\nsecret unset. Bitbucket only generates the `X-Hub-Signature` when the webhook's\nsecret is set.\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.", "summary": "Create a webhook for a repository", "responses": { "201": { "description": "If the webhook was registered successfully.", "headers": { "Location": { "description": "The URL of new newly created webhook.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/webhook_subscription" } } } }, "403": { "description": "If the authenticated user does not have permission to install webhooks on the specified repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/hooks/{uid}": { "delete": { "tags": [ "Repositories", "Webhooks" ], "description": "Deletes the specified webhook subscription from the given\nrepository.", "summary": "Delete a webhook for a repository", "responses": { "204": { "description": "When the webhook was deleted successfully" }, "403": { "description": "If the authenticated user does not have permission to delete the webhook.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the webhook or repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Repositories", "Webhooks" ], "description": "Returns the webhook with the specified id installed on the specified\nrepository.", "summary": "Get a webhook for a repository", "responses": { "200": { "description": "The webhook subscription object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/webhook_subscription" } } } }, "404": { "description": "If the webhook or repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Repositories", "Webhooks" ], "description": "Updates the specified webhook subscription.\n\nThe following properties can be mutated:\n\n* `description`\n* `url`\n* `secret`\n* `active`\n* `events`\n\nThe hook's secret is used as a key to generate the HMAC hex digest sent in the\n`X-Hub-Signature` header at delivery time. This signature is only generated\nwhen the hook has a secret.\n\nSet the hook's secret by passing the new value in the `secret` field. Passing a\n`null` value in the `secret` field will remove the secret from the hook. The\nhook's secret can be left unchanged by not passing the `secret` field in the\nrequest.", "summary": "Update a webhook for a repository", "responses": { "200": { "description": "The webhook subscription object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/webhook_subscription" } } } }, "403": { "description": "If the authenticated user does not have permission to update the webhook.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the webhook or repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "uid", "in": "path", "description": "Installed webhook's ID", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues": { "get": { "tags": [ "Issue tracker" ], "description": "Returns the issues in the issue tracker.", "summary": "List issues", "responses": { "200": { "description": "A paginated list of the issues matching any filter criteria that were provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_issues" } } } }, "404": { "description": "The specified repository does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Issue tracker" ], "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 authorization.\n\nThe authenticated user is used for the issue's `reporter` field.", "summary": "Create an issue", "responses": { "201": { "description": "The newly created issue.", "headers": { "Location": { "description": "The (absolute) URL of the newly created issue.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "When the authenticated user isn't authorized to create the issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue" } } }, "description": "The new issue. The only required element is `title`. All other elements can be omitted from the body.", "required": true }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/export": { "post": { "tags": [ "Issue tracker" ], "description": "A POST request to this endpoint initiates a new background celery task that archives the repo's issues.\n\nWhen the job has been accepted, it will return a 202 (Accepted) along with a unique url to this job in the\n'Location' response header. This url is the endpoint for where the user can obtain their zip files.\"", "summary": "Export issues", "responses": { "202": { "description": "The export job has been accepted" }, "401": { "description": "The request wasn't authenticated properly", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "When the authenticated user does not have admin permission on the repo", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The repo does not exist or does not have an issue tracker", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/export_options" } } }, "description": "The options to apply to the export. Available options include `project_key` and `project_name` which, if specified, are used as the project key and name in the exported Jira json format. Option `send_email` specifies whether an email should be sent upon export result. Option `include_attachments` specifies whether attachments are included in the export." }, "security": [ { "oauth2": [ "issue", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/export/{repo_name}-issues-{task_id}.zip": { "get": { "tags": [ "Issue tracker" ], "description": "This endpoint is used to poll for the progress of an issue export\njob and return the zip file after the job is complete.\nAs long as the job is running, this will return a 202 response\nwith in the response body a description of the current status.\n\nAfter the job has been scheduled, but before it starts executing, the endpoint\nreturns a 202 response with status `ACCEPTED`.\n\nOnce it starts running, it is a 202 response with status `STARTED` and progress filled.\n\nAfter it is finished, it becomes a 200 response with status `SUCCESS` or `FAILURE`.", "summary": "Check issue export status", "responses": { "202": { "description": "Export job accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_job_status" }, "examples": { "response": { "value": { "type": "issue_job_status", "status": "ACCEPTED", "phase": "Initializing", "total": 0, "count": 0, "pct": 0 } } } } } }, "401": { "description": "The request wasn't authenticated properly", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "When the authenticated user does not have admin permission on the repo", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "No export job has begun", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_name", "in": "path", "description": "The name of the repo", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "task_id", "in": "path", "description": "The ID of the export task", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/import": { "get": { "tags": [ "Issue tracker" ], "description": "When using GET, this endpoint reports the status of the current import task.\n\nAfter the job has been scheduled, but before it starts executing, the endpoint\nreturns a 202 response with status `ACCEPTED`.\n\nOnce it starts running, it is a 202 response with status `STARTED` and progress filled.\n\nAfter it is finished, it becomes a 200 response with status `SUCCESS` or `FAILURE`.", "summary": "Check issue import status", "responses": { "200": { "description": "Import job complete with either FAILURE or SUCCESS status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_job_status" } } } }, "202": { "description": "Import job started", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_job_status" }, "examples": { "response": { "value": { "type": "issue_job_status", "status": "ACCEPTED", "phase": "Attachments", "total": 15, "count": 0, "percent": 0 } } } } } }, "401": { "description": "The request wasn't authenticated properly", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "When the authenticated user does not have admin permission on the repo", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "No export job has begun", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue:write", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Issue tracker" ], "description": "A POST request to this endpoint will import the zip file given by the archive parameter into the repository. All\nexisting issues will be deleted and replaced by the contents of the imported zip file.\n\nImports are done through a multipart/form-data POST. There is one valid and required form field, with the name\n\"archive,\" which needs to be a file field:\n\n```\n$ curl -u -X POST -F archive=@/path/to/file.zip https://api.bitbucket.org/2.0/repositories///issues/import\n```", "summary": "Import issues", "responses": { "202": { "description": "Import job accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_job_status" }, "examples": { "response": { "value": { "type": "issue_job_status", "status": "ACCEPTED", "phase": "Attachments", "total": 15, "count": 0, "percent": 0 } } } } } }, "401": { "description": "The request wasn't authenticated properly", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "When the authenticated user does not have admin permission on the repo", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "No export job has begun", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "Import already running", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue:write", "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}": { "delete": { "tags": [ "Issue tracker" ], "description": "Deletes the specified issue. This requires write access to the\nrepository.", "summary": "Delete an issue", "responses": { "204": { "description": "Indicates the issue was deleted successfully." }, "403": { "description": "When the authenticated user isn't authorized to delete the issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Issue tracker" ], "description": "Returns the specified issue.", "summary": "Get an issue", "responses": { "200": { "description": "The issue object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue" } } } }, "403": { "description": "When the authenticated user isn't authorized to access the issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "410": { "description": "The specified issue is unavailable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Issue tracker" ], "description": "Modifies the issue.\n\n```\n$ curl https://api.bitbucket.org/2.0/repostories/evzijst/dogslow/issues/123 \\\n -u evzijst -s -X PUT -H 'Content-Type: application/json' \\\n -d '{\n \"title\": \"Updated title\",\n \"assignee\": {\n \"account_id\": \"5d5355e8c6b9320d9ea5b28d\"\n },\n \"priority\": \"minor\",\n \"version\": {\n \"name\": \"1.0\"\n },\n \"component\": null\n}'\n```\n\nThis example changes the `title`, `assignee`, `priority` and the\n`version`. It also removes the value of the `component` from the issue\nby setting the field to `null`. Any field not present keeps its existing\nvalue.\n\nEach time an issue is edited in the UI or through the API, an immutable\nchange record is created under the `/issues/123/changes` endpoint. It\nalso has a comment associated with the change.", "summary": "Update an issue", "responses": { "200": { "description": "The updated issue object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue" } } } }, "403": { "description": "When the authenticated user isn't authorized to access the issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/attachments": { "get": { "tags": [ "Issue tracker" ], "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.", "summary": "List attachments for an issue", "responses": { "200": { "description": "A paginated list of all attachments for this issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_issue_attachments" } } } }, "401": { "description": "If the issue tracker is private and the request was not authenticated." }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Issue tracker" ], "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.", "summary": "Upload an attachment to an issue", "responses": { "201": { "description": "An empty response document.", "headers": { "Location": { "description": "The URL to the issue's collection of attachments.", "schema": { "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": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/attachments/{path}": { "delete": { "tags": [ "Issue tracker" ], "description": "Deletes an attachment.", "summary": "Delete an attachment for an issue", "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": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Issue tracker" ], "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.", "summary": "Get attachment for an issue", "responses": { "302": { "description": "A redirect to the file's contents", "headers": { "Location": { "schema": { "type": "string" } } } }, "401": { "description": "If the issue tracker is private and the request was not authenticated." }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "path", "in": "path", "description": "Path to the file.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/changes": { "get": { "tags": [ "Issue tracker" ], "description": "Returns the list of all changes that have been made to the specified\nissue. Changes are returned in chronological order with the oldest\nchange first.\n\nEach time an issue is edited in the UI or through the API, an immutable\nchange record is created under the `/issues/123/changes` endpoint. It\nalso has a comment associated with the change.\n\nNote that this operation is changing significantly, due to privacy changes.\nSee the [announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-changes-gdpr/#changes-to-the-issue-changes-api)\nfor details.\n\nChanges support [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) that\ncan be used to search for specific changes. For instance, to see\nwhen an issue transitioned to \"resolved\":\n\n```\n$ curl -s https://api.bitbucket.org/2.0/repositories/site/master/issues/1/changes \\\n -G --data-urlencode='q=changes.state.new = \"resolved\"'\n```\n\nThis resource is only available on repositories that have the issue\ntracker enabled.\n\nN.B.\n\nThe `changes.assignee` and `changes.assignee_account_id` fields are not\na `user` object. Instead, they contain the raw `username` and\n`account_id` of the user. This is to protect the integrity of the audit\nlog even after a user account gets deleted.\n\nThe `changes.assignee` field is deprecated will disappear in the\nfuture. Use `changes.assignee_account_id` instead.", "summary": "List changes on an issue", "responses": { "200": { "description": "Returns all the issue changes that were made on the specified issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_log_entries" }, "examples": { "response": { "value": { "pagelen": 20, "values": [ { "changes": { "priority": { "new": "trivial", "old": "major" }, "assignee": { "new": "", "old": "evzijst" }, "assignee_account_id": { "new": "", "old": "557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443" }, "kind": { "new": "enhancement", "old": "bug" } }, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/evzijst/dogslow/issues/1/changes/2" }, "html": { "href": "https://bitbucket.org/evzijst/dogslow/issues/1#comment-2" } }, "issue": { "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/evzijst/dogslow/issues/1" } }, "type": "issue", "id": 1, "repository": { "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/evzijst/dogslow" }, "html": { "href": "https://bitbucket.org/evzijst/dogslow" }, "avatar": { "href": "https://bitbucket.org/evzijst/dogslow/avatar/32/" } }, "type": "repository", "name": "dogslow", "full_name": "evzijst/dogslow", "uuid": "{988b17c6-1a47-4e70-84ee-854d5f012bf6}" }, "title": "Updated title" }, "created_on": "2018-03-03T00:35:28.353630+00:00", "user": { "username": "evzijst", "nickname": "evzijst", "display_name": "evzijst", "type": "user", "uuid": "{aaa7972b-38af-4fb1-802d-6e3854c95778}", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/evzijst" }, "html": { "href": "https://bitbucket.org/evzijst/" }, "avatar": { "href": "https://bitbucket.org/account/evzijst/avatar/32/" } } }, "message": { "raw": "Removed assignee, changed kind and priority.", "markup": "markdown", "html": "

Removed assignee, changed kind and priority.

", "type": "rendered" }, "type": "issue_change", "id": 2 } ], "page": 1 } } } } } }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for details.", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nName of a response property to sort results. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#sorting-query-results)\nfor details.\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Issue tracker" ], "description": "Makes a change to the specified issue.\n\nFor example, to change an issue's state and assignee, create a new\nchange object that modifies these fields:\n\n```\ncurl https://api.bitbucket.org/2.0/site/master/issues/1234/changes \\\n -s -u evzijst -X POST -H \"Content-Type: application/json\" \\\n -d '{\n \"changes\": {\n \"assignee_account_id\": {\n \"new\": \"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443\"\n },\n \"state\": {\n \"new\": 'resolved\"\n }\n }\n \"message\": {\n \"raw\": \"This is now resolved.\"\n }\n }'\n```\n\nThe above example also includes a custom comment to go alongside the\nchange. This comment will also be visible on the issue page in the UI.\n\nThe fields of the `changes` object are strings, not objects. This\nallows for immutable change log records, even after user accounts,\nmilestones, or other objects recorded in a change entry, get renamed or\ndeleted.\n\nThe `assignee_account_id` field stores the account id. When POSTing a\nnew change and changing the assignee, the client should therefore use\nthe user's account_id in the `changes.assignee_account_id.new` field.\n\nThis call requires authentication. Private repositories or private\nissue trackers require the caller to authenticate with an account that\nhas appropriate authorization.", "summary": "Modify the state of an issue", "responses": { "201": { "description": "The newly created issue change.", "headers": { "Location": { "description": "The (absolute) URL of the newly created issue change.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_change" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "When the authenticated user isn't authorized to modify the issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_change" } } }, "description": "The new issue state change. The only required elements are `changes.[].new`. All other elements can be omitted from the body.", "required": true }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/changes/{change_id}": { "get": { "tags": [ "Issue tracker" ], "description": "Returns the specified issue change object.\n\nThis resource is only available on repositories that have the issue\ntracker enabled.", "summary": "Get issue change object", "responses": { "200": { "description": "The specified issue change object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_change" } } } }, "404": { "description": "The specified repository or issue change does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "change_id", "in": "path", "description": "The issue change id", "required": true, "schema": { "type": "string" } }, { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/comments": { "get": { "tags": [ "Issue tracker" ], "description": "Returns a paginated list of all comments that were made on the\nspecified issue.\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](/cloud/bitbucket/rest/intro/#filtering) for more details.", "summary": "List comments on an issue", "responses": { "200": { "description": "A paginated list of issue comments.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_issue_comments" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Issue tracker" ], "description": "Creates a new issue comment.\n\n```\n$ curl https://api.bitbucket.org/2.0/repositories/atlassian/prlinks/issues/42/comments/ \\\n -X POST -u evzijst \\\n -H 'Content-Type: application/json' \\\n -d '{\"content\": {\"raw\": \"Lorem ipsum.\"}}'\n```", "summary": "Create a comment on an issue", "responses": { "201": { "description": "The newly created comment.", "headers": { "Location": { "description": "The location of the newly issue comment.", "schema": { "type": "string" } } } }, "400": { "description": "If the input was invalid, or if the comment being created is detected as spam ", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_comment" } } }, "description": "The new issue comment object.", "required": true }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/comments/{comment_id}": { "delete": { "tags": [ "Issue tracker" ], "description": "Deletes the specified comment.", "summary": "Delete a comment on an issue", "responses": { "204": { "description": "Indicates successful deletion." } }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Issue tracker" ], "description": "Returns the specified issue comment object.", "summary": "Get a comment on an issue", "responses": { "200": { "description": "The issue comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_comment" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Issue tracker" ], "description": "Updates the content of the specified issue comment. Note that only\nthe `content.raw` field can be modified.\n\n```\n$ curl https://api.bitbucket.org/2.0/repositories/atlassian/prlinks/issues/42/comments/5728901 \\\n -X PUT -u evzijst \\\n -H 'Content-Type: application/json' \\\n -d '{\"content\": {\"raw\": \"Lorem ipsum.\"}'\n```", "summary": "Update a comment on an issue", "responses": { "200": { "description": "The updated issue comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_comment" } } } }, "400": { "description": "If the input was invalid, or if the update to the comment is detected as spam ", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/issue_comment" } } }, "description": "The updated comment.", "required": true }, "security": [ { "oauth2": [ "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "comment_id", "in": "path", "description": "The id of the comment.", "required": true, "schema": { "type": "integer" } }, { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/vote": { "delete": { "tags": [ "Issue tracker" ], "description": "Retract your vote.", "summary": "Remove vote for an issue", "responses": { "default": { "description": "Unexpected error.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account:write", "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Issue tracker" ], "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.", "summary": "Check if current user voted for an issue", "responses": { "204": { "description": "If the authenticated user has not voted for this issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account", "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Issue tracker" ], "description": "Vote for this issue.\n\nTo cast your vote, do an empty PUT. The 204 status code indicates that\nthe operation was successful.", "summary": "Vote for an issue", "responses": { "204": { "description": "Indicating the authenticated user has cast their vote successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account:write", "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/issues/{issue_id}/watch": { "delete": { "tags": [ "Issue tracker" ], "description": "Stop watching this issue.", "summary": "Stop watching an issue", "responses": { "204": { "description": "Indicates that the authenticated user successfully stopped watching this issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or issue does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account:write", "issue:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Issue tracker" ], "description": "Indicated whether or not the authenticated user is watching this\nissue.", "summary": "Check if current user is watching a issue", "responses": { "204": { "description": "If the authenticated user is watching this issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account", "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Issue tracker" ], "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.", "summary": "Watch an issue", "responses": { "204": { "description": "Indicates that the authenticated user successfully started watching this issue.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account:write", "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "issue_id", "in": "path", "description": "The issue id", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/merge-base/{revspec}": { "get": { "tags": [ "Commits" ], "description": "Returns the best common ancestor between two commits, specified in a revspec\nof 2 commits (e.g. 3a8b42..9ff173).\n\nIf more than one best common ancestor exists, only one will be returned. It is\nunspecified which will be returned.", "summary": "Get the common ancestor between two commits", "responses": { "200": { "description": "The merge base of the provided spec.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/commit" } } } }, "401": { "description": "If the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have access to any of the repositories specified.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository or ref in the spec does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "revspec", "in": "path", "description": "A commit range using double dot notation (e.g. `3a8b42..9ff173`).\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/milestones": { "get": { "tags": [ "Issue tracker" ], "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.", "summary": "List milestones", "responses": { "200": { "description": "The milestones that have been defined in the issue tracker.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_milestones" } } } }, "404": { "description": "The specified repository does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/milestones/{milestone_id}": { "get": { "tags": [ "Issue tracker" ], "description": "Returns the specified issue tracker milestone object.", "summary": "Get a milestone", "responses": { "200": { "description": "The specified milestone object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/milestone" } } } }, "404": { "description": "The specified repository or milestone does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "milestone_id", "in": "path", "description": "The milestone's id", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/override-settings": { "get": { "tags": [ "Repositories" ], "description": "", "summary": "Retrieve the inheritance state for repository settings", "responses": { "200": { "description": "The repository setting inheritance state", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository_inheritance_state" } } } }, "404": { "description": "If no repository exists at this location", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "put": { "tags": [ "Repositories" ], "description": "", "summary": "Set the inheritance state for repository settings\n ", "responses": { "204": { "description": "The repository setting inheritance state was set and no content returned" }, "404": { "description": "If no repository exists at this location", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/patch/{spec}": { "get": { "tags": [ "Commits" ], "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).\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`.", "summary": "Get a patch for two commits", "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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "spec", "in": "path", "description": "A commit SHA (e.g. `3a8b42`) or a commit range using double dot\nnotation (e.g. `3a8b42..9ff173`).\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/permissions-config/groups": { "get": { "tags": [ "Repositories" ], "description": "Returns a paginated list of explicit group permissions for the given repository.\nThis endpoint does not support BBQL features.", "summary": "List explicit group permissions for a repository", "responses": { "200": { "description": "Paginated of explicit group permissions on the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repository_group_permissions" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "type": "repository_group_permission", "group": { "type": "group", "name": "Administrators", "slug": "administrators" }, "permission": "admin", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian_tutorial/geordi/permissions-config/groups/administrators" } } }, { "type": "repository_group_permission", "group": { "type": "group", "name": "Developers", "slug": "developers" }, "permission": "read", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian_tutorial/geordi/permissions-config/groups/developers" } } } ], "page": 1, "size": 2 } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or both of the workspace and repository doesn't exist for the given identifiers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/permissions-config/groups/{group_slug}": { "delete": { "tags": [ "Repositories" ], "description": "Deletes the repository group permission between the requested repository and group, if one exists.\n\nOnly users with admin permission for the repository may access this resource.\n\nThe only authentication method supported for this endpoint is via app passwords.", "summary": "Delete an explicit group permission for a repository", "responses": { "204": { "description": "Group permission deleted" }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The workspace does not exist, the repository does not exist, or the group does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Repositories" ], "description": "Returns the group permission for a given group slug and repository\n\nOnly users with admin permission for the repository may access this resource.\n\nPermissions can be:\n\n* `admin`\n* `write`\n* `read`\n* `none`", "summary": "Get an explicit group permission for a repository", "responses": { "200": { "description": "Group permission for group slug and repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository_group_permission" }, "examples": { "response": { "value": { "type": "repository_group_permission", "group": { "type": "group", "name": "Developers", "slug": "developers", "full_slug": "atlassian_tutorial:developers" }, "permission": "read", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian_tutorial/geordi/permissions-config/groups/developers" } } } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The given user, workspace, and/or repository could not be found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "put": { "tags": [ "Repositories" ], "description": "Updates the group permission, or grants a new permission if one does not already exist.\n\nOnly users with admin permission for the repository may access this resource.\n\nThe only authentication method supported for this endpoint is via app passwords.\n\nPermissions can be:\n\n* `admin`\n* `write`\n* `read`", "summary": "Update an explicit group permission for a repository", "responses": { "200": { "description": "Group permission updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository_group_permission" }, "examples": { "response": { "value": { "type": "repository_group_permission", "group": { "type": "group", "name": "Developers", "slug": "developers", "full_slug": "atlassian_tutorial:developers" }, "permission": "write", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian_tutorial/geordi/permissions-config/groups/developers" } } } } } } } }, "400": { "description": "No permission value was provided or the value is invalid(not one of read, write, or admin)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "402": { "description": "You have reached your plan's user limit and must upgrade before giving access to additional users.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The workspace does not exist, the repository does not exist, or the group does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/bitbucket.apps.permissions.serializers.RepoPermissionUpdateSchema" }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "group_slug", "in": "path", "description": "Slug of the requested group.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/permissions-config/users": { "get": { "tags": [ "Repositories" ], "description": "Returns a paginated list of explicit user permissions for the given repository.\nThis endpoint does not support BBQL features.", "summary": "List explicit user permissions for a repository", "responses": { "200": { "description": "Paginated of explicit user permissions on the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repository_user_permissions" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "type": "repository_user_permission", "user": { "type": "user", "display_name": "Colin Cameron", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" }, "permission": "admin", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian_tutorial/geordi/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" } } }, { "type": "repository_user_permission", "user": { "type": "user", "display_name": "Sean Conaty", "uuid": "{504c3b62-8120-4f0c-a7bc-87800b9d6f70}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324c" }, "permission": "write", "links": { "self": { "href": "https://api.bitbucket.org/2.0//repositories/atlassian_tutorial/geordi/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324c" } } } ], "page": 1, "size": 2 } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "No repository exists for the given repository slug and workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/permissions-config/users/{selected_user_id}": { "delete": { "tags": [ "Repositories" ], "description": "Deletes the repository user permission between the requested repository and user, if one exists.\n\nOnly users with admin permission for the repository may access this resource.\n\nThe only authentication method for this endpoint is via app passwords.", "summary": "Delete an explicit user permission for a repository", "responses": { "204": { "description": "The repository user permission was deleted and no content returned." }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, repository, and user doesn't exist for the given identifiers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Repositories" ], "description": "Returns the explicit user permission for a given user and repository.\n\nOnly users with admin permission for the repository may access this resource.\n\nPermissions can be:\n\n* `admin`\n* `write`\n* `read`\n* `none`", "summary": "Get an explicit user permission for a repository", "responses": { "200": { "description": "Explicit user permission for user and repository", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository_user_permission" }, "examples": { "response": { "value": { "type": "repository_user_permission", "user": { "type": "user", "display_name": "Colin Cameron", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a", "nickname": "Colin Cameron" }, "permission": "admin", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian_tutorial/geordi/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" } } } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or both of the workspace and repository doesn't exist for the given identifiers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "put": { "tags": [ "Repositories" ], "description": "Updates the explicit user permission for a given user and repository. The selected user must be a member of\nthe workspace, and cannot be the workspace owner.\nOnly users with admin permission for the repository may access this resource.\n\nThe only authentication method for this endpoint is via app passwords.\n\nPermissions can be:\n\n* `admin`\n* `write`\n* `read`", "summary": "Update an explicit user permission for a repository", "responses": { "200": { "description": "Explicit user permission updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/repository_user_permission" }, "examples": { "response": { "value": { "type": "repository_user_permission", "user": { "type": "user", "display_name": "Colin Cameron", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a", "nickname": "Colin Cameron" }, "permission": "write", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian_tutorial/geordi/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" } } } } } } } }, "400": { "description": "No permission value was provided or the value is invalid (not one of read, write, or admin), or the selected user is not a valid user to update.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "402": { "description": "You have reached your plan's user limit and must upgrade before giving access to additional users.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the repository, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, repository, and selected user doesn't exist for the given identifiers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/bitbucket.apps.permissions.serializers.RepoPermissionUpdateSchema" }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "selected_user_id", "in": "path", "description": "This can either be the UUID of the account, surrounded by curly-braces, for\nexample: `{account UUID}`, OR an Atlassian Account ID.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pipelines": { "get": { "tags": [ "Pipelines" ], "summary": "List pipelines", "description": "Find pipelines in a repository.\n\nNote that unlike other endpoints in the Bitbucket API, this endpoint utilizes query parameters to allow filtering\nand sorting of returned results. See [query parameters](#api-repositories-workspace-repo-slug-pipelines-get-request-Query%20parameters)\nfor specific details.\n", "operationId": "getPipelinesForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "creator.uuid", "description": "The UUID of the creator of the pipeline to filter by.", "required": false, "in": "query", "schema": { "type": "string", "format": "uuid" } }, { "name": "target.ref_type", "description": "The type of the reference to filter by.", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "BRANCH", "TAG", "ANNOTATED_TAG" ] } }, { "name": "target.ref_name", "description": "The reference name to filter by.", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "target.branch", "description": "The name of the branch to filter by.", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "target.commit.hash", "description": "The revision to filter by.", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "target.selector.pattern", "description": "The pipeline pattern to filter by.", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "target.selector.type", "description": "The type of pipeline to filter by.", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "BRANCH", "TAG", "CUSTOM", "PULLREQUESTS", "DEFAULT" ] } }, { "name": "created_on", "description": "The creation date to filter by.", "required": false, "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "trigger_type", "description": "The trigger type to filter by.", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "PUSH", "MANUAL", "SCHEDULED", "PARENT_STEP" ] } }, { "name": "status", "description": "The pipeline status to filter by.", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "PARSING", "PENDING", "PAUSED", "HALTED", "BUILDING", "ERROR", "PASSED", "FAILED", "STOPPED", "UNKNOWN" ] } }, { "name": "sort", "description": "The attribute name to sort on.", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "creator.uuid", "created_on", "run_creation_date" ] } }, { "name": "page", "description": "The page number of elements to retrieve.", "required": false, "in": "query", "schema": { "type": "integer", "format": "int32", "minimum": 1, "default": 1 } }, { "name": "pagelen", "description": "The maximum number of results to return.", "required": false, "in": "query", "schema": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 100, "default": 10 } } ], "responses": { "200": { "description": "The matching pipelines.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipelines" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "post": { "tags": [ "Pipelines" ], "summary": "Run a pipeline", "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\nOne way to trigger pipelines is by specifying the branch for which you want to trigger a pipeline.\nThe specified branch 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 branch.\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\n\n# Trigger a custom pipeline with variables\nIn addition to triggering a custom pipeline that is defined in your `bitbucket-pipelines.yml` file as shown in the examples above, you can specify variables that will be available for your build. In the request, provide a list of variables, specifying the following for each variable: key, value, and whether it should be secured or not (this field is optional and defaults to not secured).\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/{workspace}/{repo_slug}/pipelines/ \\\n -d '\n {\n \"target\": {\n \"type\": \"pipeline_ref_target\",\n \"ref_type\": \"branch\",\n \"ref_name\": \"master\",\n \"selector\": {\n \"type\": \"custom\",\n \"pattern\": \"Deploy to production\"\n }\n },\n \"variables\": [\n {\n \"key\": \"var1key\",\n \"value\": \"var1value\",\n \"secured\": true\n },\n {\n \"key\": \"var2key\",\n \"value\": \"var2value\"\n }\n ]\n }'\n```\n\n# Trigger a pull request pipeline\n\nYou can also initiate a pipeline for a specific pull request.\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/{workspace}/{repo_slug}/pipelines/ \\\n -d '\n {\n \"target\": {\n \"type\": \"pipeline_pullrequest_target\",\n \"source\": \"pull-request-branch\",\n \"destination\": \"master\",\n \"destination_commit\": {\n \"hash\": \"9f848b7\"\n },\n \"commit\": {\n \"hash\": \"1a372fc\"\n },\n \"pullrequest\": {\n \"id\": \"3\"\n },\n \"selector\": {\n \"type\": \"pull-requests\",\n \"pattern\": \"**\"\n }\n }\n }'\n```\n", "operationId": "createPipelineForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline" } } }, "description": "The pipeline to initiate.", "required": true }, "responses": { "201": { "description": "The initiated pipeline.", "headers": { "Location": { "description": "The URL of the newly created pipeline.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The account or repository was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket", "write:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines-config/caches": { "get": { "tags": [ "Pipelines" ], "summary": "List caches", "description": "Retrieve the repository pipelines caches.", "operationId": "getRepositoryPipelineCaches", "parameters": [ { "name": "workspace", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The list of caches for the given repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_caches" } } } }, "404": { "description": "The account or repository was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Pipelines" ], "summary": "Delete caches", "description": "Delete repository cache versions by name.", "operationId": "deleteRepositoryPipelineCaches", "parameters": [ { "name": "workspace", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "name", "description": "The cache name.", "required": true, "in": "query", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The caches were deleted." }, "404": { "description": "The workspace, repository or cache name was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines-config/caches/{cache_uuid}": { "delete": { "tags": [ "Pipelines" ], "summary": "Delete a cache", "description": "Delete a repository cache.", "operationId": "deleteRepositoryPipelineCache", "parameters": [ { "name": "workspace", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "cache_uuid", "description": "The UUID of the cache to delete.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The cache was deleted." }, "404": { "description": "The workspace, repository or cache_uuid with given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines-config/caches/{cache_uuid}/content-uri": { "get": { "tags": [ "Pipelines" ], "summary": "Get cache content URI", "description": "Retrieve the URI of the content of the specified cache.", "operationId": "getRepositoryPipelineCacheContentURI", "parameters": [ { "name": "workspace", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "cache_uuid", "description": "The UUID of the cache.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The cache content uri.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_cache_content_uri" } } } }, "404": { "description": "The workspace, repository or cache_uuid with given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}": { "get": { "tags": [ "Pipelines" ], "summary": "Get a pipeline", "description": "Retrieve a specified pipeline", "operationId": "getPipelineForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The pipeline UUID.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The pipeline.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline" } } } }, "404": { "description": "No account, repository or pipeline with the UUID provided exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps": { "get": { "tags": [ "Pipelines" ], "summary": "List steps for a pipeline", "description": "Find steps for the given pipeline.", "operationId": "getPipelineStepsForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The steps.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_steps" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}": { "get": { "tags": [ "Pipelines" ], "summary": "Get a step of a pipeline", "description": "Retrieve a given step of a pipeline.", "operationId": "getPipelineStepForRepository", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "step_uuid", "description": "The UUID of the step.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The step.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_step" } } } }, "404": { "description": "No account, repository, pipeline or step with the UUID provided exists for the pipeline with the UUID provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/log": { "get": { "tags": [ "Pipelines" ], "summary": "Get log file for a step", "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": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "step_uuid", "description": "The UUID of the step.", "required": true, "in": "path", "schema": { "type": "string" } } ], "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.", "content": { "application/octet-stream": { "schema": { "$ref": "#/components/schemas/error" } } } }, "307": { "description": "After the step is completed, the log is moved to long term storage and a redirection to the log file is returned." }, "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.", "content": { "application/octet-stream": { "schema": { "$ref": "#/components/schemas/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).", "content": { "application/octet-stream": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/logs/{log_uuid}": { "get": { "tags": [ "Pipelines" ], "summary": "Get the logs for the build container or a service container for a given step of a pipeline.", "description": "Retrieve the log file for a build container or service container.\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": "getPipelineContainerLog", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "step_uuid", "description": "The UUID of the step.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "log_uuid", "description": "For the main build container specify the step UUID; for a service container specify the service container UUID", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The raw log file for the build container or service container." }, "307": { "description": "After the step is completed, the log is moved to long term storage and a redirection to the log file is returned." }, "404": { "description": "No account, repository, pipeline, step or log exist for the provided path.", "content": { "application/octet-stream": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports": { "get": { "tags": [ "Pipelines" ], "summary": "Get a summary of test reports for a given step of a pipeline.", "operationId": "getPipelineTestReports", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "step_uuid", "description": "The UUID of the step.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "A summary of test reports for this pipeline step." }, "404": { "description": "No account, repository, pipeline, step or test reports exist for the provided path.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports/test_cases": { "get": { "tags": [ "Pipelines" ], "summary": "Get test cases for a given step of a pipeline.", "operationId": "getPipelineTestReportTestCases", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "step_uuid", "description": "The UUID of the step.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Test cases for this pipeline step." }, "404": { "description": "No account, repository, pipeline, step or test reports exist for the provided path.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports/test_cases/{test_case_uuid}/test_case_reasons": { "get": { "tags": [ "Pipelines" ], "summary": "Get test case reasons (output) for a given test case in a step of a pipeline.", "operationId": "getPipelineTestReportTestCaseReasons", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "step_uuid", "description": "The UUID of the step.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "test_case_uuid", "description": "The UUID of the test case.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Test case reasons (output)." }, "404": { "description": "No account, repository, pipeline, step or test case with the UUID provided exists for the pipeline with the UUID provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/stopPipeline": { "post": { "tags": [ "Pipelines" ], "summary": "Stop a pipeline", "description": "Signal the stop of a pipeline and all of its steps that not have completed yet.", "operationId": "stopPipeline", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "pipeline_uuid", "description": "The UUID of the pipeline.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The pipeline has been signaled to stop." }, "400": { "description": "The specified pipeline has already completed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Either the account, repository or pipeline with the given UUID does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config": { "get": { "tags": [ "Pipelines" ], "summary": "Get configuration", "description": "Retrieve the repository pipelines configuration.", "operationId": "getRepositoryPipelineConfig", "parameters": [ { "name": "workspace", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The repository pipelines configuration.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipelines_config" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] }, "put": { "tags": [ "Pipelines" ], "summary": "Update configuration", "description": "Update the pipelines configuration for a repository.", "operationId": "updateRepositoryPipelineConfig", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipelines_config" } } }, "description": "The updated repository pipelines configuration.", "required": true }, "responses": { "200": { "description": "The repository pipelines configuration was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipelines_config" } } } } }, "security": [ { "oauth2": [ "repository:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:repository:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/build_number": { "put": { "tags": [ "Pipelines" ], "summary": "Update the next build number", "description": "Update the next build number that should be assigned to a pipeline. The next build number that will be configured has to be strictly higher than the current latest build number for this repository.", "operationId": "updateRepositoryBuildNumber", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_build_number" } } }, "description": "The build number to update.", "required": true }, "responses": { "200": { "description": "The build number has been configured.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_build_number" } } } }, "400": { "description": "The update failed because the next number was invalid (it should be higher than the current number).", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The account or repository was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/schedules": { "post": { "tags": [ "Pipelines" ], "summary": "Create a schedule", "description": "Create a schedule for the given repository.", "operationId": "createRepositoryPipelineSchedule", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_schedule_post_request_body" } } }, "description": "The schedule to create.", "required": true }, "responses": { "201": { "description": "The created schedule.", "headers": { "Location": { "description": "The URL of the newly created schedule.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_schedule" } } } }, "400": { "description": "There were errors validating the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The maximum limit of schedules for this repository was reached.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The account or repository was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket", "write:pipeline:bitbucket" ] } ] }, "get": { "tags": [ "Pipelines" ], "summary": "List schedules", "description": "Retrieve the configured schedules for the given repository.", "operationId": "getRepositoryPipelineSchedules", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The list of schedules.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_schedules" } } } }, "404": { "description": "The account or repository was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/{schedule_uuid}": { "get": { "tags": [ "Pipelines" ], "summary": "Get a schedule", "description": "Retrieve a schedule by its UUID.", "operationId": "getRepositoryPipelineSchedule", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "schedule_uuid", "description": "The uuid of the schedule.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The requested schedule.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_schedule" } } } }, "404": { "description": "The account, repository or schedule was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "put": { "tags": [ "Pipelines" ], "summary": "Update a schedule", "description": "Update a schedule.", "operationId": "updateRepositoryPipelineSchedule", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "schedule_uuid", "description": "The uuid of the schedule.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_schedule_put_request_body" } } }, "description": "The schedule to update.", "required": true }, "responses": { "200": { "description": "The schedule is updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_schedule" } } } }, "404": { "description": "The account, repository or schedule was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket", "write:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Pipelines" ], "summary": "Delete a schedule", "description": "Delete a schedule.", "operationId": "deleteRepositoryPipelineSchedule", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "schedule_uuid", "description": "The uuid of the schedule.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The schedule was deleted." }, "404": { "description": "The account, repository or schedule was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/{schedule_uuid}/executions": { "get": { "tags": [ "Pipelines" ], "summary": "List executions of a schedule", "description": "Retrieve the executions of a given schedule.", "operationId": "getRepositoryPipelineScheduleExecutions", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "schedule_uuid", "description": "The uuid of the schedule.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The list of executions of a schedule.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_schedule_executions" } } } }, "404": { "description": "The account or repository was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/key_pair": { "get": { "tags": [ "Pipelines" ], "summary": "Get SSH key pair", "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": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The SSH key pair.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_ssh_key_pair" } } } }, "404": { "description": "The account, repository or SSH key pair was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "put": { "tags": [ "Pipelines" ], "summary": "Update SSH key pair", "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": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_ssh_key_pair" } } }, "description": "The created or updated SSH key pair.", "required": true }, "responses": { "200": { "description": "The SSH key pair was created or updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_ssh_key_pair" } } } }, "404": { "description": "The account, repository or SSH key pair was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Pipelines" ], "summary": "Delete SSH key pair", "description": "Delete the repository SSH key pair.", "operationId": "deleteRepositoryPipelineKeyPair", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The SSH key pair was deleted." }, "404": { "description": "The account, repository or SSH key pair was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/known_hosts": { "get": { "tags": [ "Pipelines" ], "summary": "List known hosts", "description": "Find repository level known hosts.", "operationId": "getRepositoryPipelineKnownHosts", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The retrieved known hosts.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_known_hosts" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "post": { "tags": [ "Pipelines" ], "summary": "Create a known host", "description": "Create a repository level known host.", "operationId": "createRepositoryPipelineKnownHost", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_known_host" } } }, "description": "The known host to create.", "required": true }, "responses": { "201": { "description": "The known host was created.", "headers": { "Location": { "description": "The URL of the newly created pipeline known host.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_known_host" } } } }, "404": { "description": "The account or repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "A known host with the provided hostname already exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/known_hosts/{known_host_uuid}": { "get": { "tags": [ "Pipelines" ], "summary": "Get a known host", "description": "Retrieve a repository level known host.", "operationId": "getRepositoryPipelineKnownHost", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "known_host_uuid", "description": "The UUID of the known host to retrieve.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The known host.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_known_host" } } } }, "404": { "description": "The account, repository or known host with the specified UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "put": { "tags": [ "Pipelines" ], "summary": "Update a known host", "description": "Update a repository level known host.", "operationId": "updateRepositoryPipelineKnownHost", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "known_host_uuid", "description": "The UUID of the known host to update.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_known_host" } } }, "description": "The updated known host.", "required": true }, "responses": { "200": { "description": "The known host was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_known_host" } } } }, "404": { "description": "The account, repository or known host with the given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Pipelines" ], "summary": "Delete a known host", "description": "Delete a repository level known host.", "operationId": "deleteRepositoryPipelineKnownHost", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "known_host_uuid", "description": "The UUID of the known host to delete.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The known host was deleted." }, "404": { "description": "The account, repository or known host with given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/variables": { "get": { "tags": [ "Pipelines" ], "summary": "List variables for a repository", "description": "Find repository level variables.", "operationId": "getRepositoryPipelineVariables", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The retrieved variables.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_variables" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "post": { "tags": [ "Pipelines" ], "summary": "Create a variable for a repository", "description": "Create a repository level variable.", "operationId": "createRepositoryPipelineVariable", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } }, "description": "The variable to create.", "required": true }, "responses": { "201": { "description": "The variable was created.", "headers": { "Location": { "description": "The URL of the newly created pipeline variable.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account or repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "A variable with the provided key already exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/pipelines_config/variables/{variable_uuid}": { "get": { "tags": [ "Pipelines" ], "summary": "Get a variable for a repository", "description": "Retrieve a repository level variable.", "operationId": "getRepositoryPipelineVariable", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to retrieve.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The variable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account, repository or variable with the specified UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "put": { "tags": [ "Pipelines" ], "summary": "Update a variable for a repository", "description": "Update a repository level variable.", "operationId": "updateRepositoryPipelineVariable", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to update.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } }, "description": "The updated variable", "required": true }, "responses": { "200": { "description": "The variable was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account, repository or variable with the given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Pipelines" ], "summary": "Delete a variable for a repository", "description": "Delete a repository level variable.", "operationId": "deleteRepositoryPipelineVariable", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "repo_slug", "description": "The repository.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to delete.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The variable was deleted." }, "404": { "description": "The account, repository or variable with given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/repositories/{workspace}/{repo_slug}/properties/{app_key}/{property_name}": { "put": { "responses": { "204": { "description": "An empty response." } }, "operationId": "updateRepositoryHostedPropertyValue", "summary": "Update a repository application property", "description": "Update an [application property](/cloud/bitbucket/application-properties/) value stored against a repository.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/application_property" }, "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "delete": { "responses": { "204": { "description": "An empty response." } }, "operationId": "deleteRepositoryHostedPropertyValue", "summary": "Delete a repository application property", "description": "Delete an [application property](/cloud/bitbucket/application-properties/) value stored against a repository.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "responses": { "200": { "description": "The value of the property.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/application_property" } } } } }, "operationId": "getRepositoryHostedPropertyValue", "summary": "Get a repository application property", "description": "Retrieve an [application property](/cloud/bitbucket/application-properties/) value stored against a repository.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] } }, "/repositories/{workspace}/{repo_slug}/pullrequests": { "get": { "tags": [ "Pullrequests" ], "description": "Returns all pull requests on the specified repository.\n\nBy default only open pull requests are returned. This can be controlled\nusing the `state` query parameter. To retrieve pull requests that are\nin one of multiple states, repeat the `state` parameter for each\nindividual state.\n\nThis endpoint also supports filtering and sorting of the results. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for more details.", "summary": "List pull requests", "responses": { "200": { "description": "All pull requests on the specified repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pullrequests" } } } }, "401": { "description": "If the repository is private and the request was not authenticated." }, "404": { "description": "If the specified repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "state", "in": "query", "description": "Only return pull requests that are in this state. This parameter can be repeated.", "schema": { "type": "string", "enum": [ "OPEN", "MERGED", "DECLINED", "SUPERSEDED" ] } } ], "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "post": { "tags": [ "Pullrequests" ], "description": "Creates a new pull request where the destination repository is\nthis repository and the author is the authenticated user.\n\nThe minimum required fields to create a pull request are `title` and\n`source`, specified by a branch name.\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/my-workspace/my-repository/pullrequests \\\n -u my-username:my-password \\\n --request POST \\\n --header 'Content-Type: application/json' \\\n --data '{\n \"title\": \"My Title\",\n \"source\": {\n \"branch\": {\n \"name\": \"staging\"\n }\n }\n }'\n```\n\nIf the pull request's `destination` is not specified, it will default\nto the `repository.mainbranch`. To open a pull request to a\ndifferent branch, say from a feature branch to a staging branch,\nspecify a `destination` (same format as the `source`):\n\n```\n{\n \"title\": \"My Title\",\n \"source\": {\n \"branch\": {\n \"name\": \"my-feature-branch\"\n }\n },\n \"destination\": {\n \"branch\": {\n \"name\": \"staging\"\n }\n }\n}\n```\n\nReviewers can be specified by adding an array of user objects as the\n`reviewers` property.\n\n```\n{\n \"title\": \"My Title\",\n \"source\": {\n \"branch\": {\n \"name\": \"my-feature-branch\"\n }\n },\n \"reviewers\": [\n {\n \"uuid\": \"{504c3b62-8120-4f0c-a7bc-87800b9d6f70}\"\n }\n ]\n}\n```\n\nOther fields:\n\n* `description` - a string\n* `close_source_branch` - boolean that specifies if the source branch should be closed upon merging", "summary": "Create a pull request", "responses": { "201": { "description": "The newly created pull request.", "headers": { "Location": { "description": "The URL of new newly created pull request.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest" } } } }, "400": { "description": "If the input document was invalid, or if the caller lacks the privilege to create repositories under the targeted account.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "If the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest" } } }, "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." }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket", "write:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/activity": { "get": { "tags": [ "Pullrequests" ], "description": "Returns a paginated list of the pull request's activity log.\n\nThis handler serves both a v20 and internal endpoint. The v20 endpoint\nreturns reviewer comments, updates, approvals and request changes. The internal\nendpoint includes those plus tasks and attachments.\n\nComments created on a file or a line of code have an inline property.\n\nComment example:\n```\n{\n \"pagelen\": 20,\n \"values\": [\n {\n \"comment\": {\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695/comments/118571088\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695/_/diff#comment-118571088\"\n }\n },\n \"deleted\": false,\n \"pullrequest\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n },\n \"content\": {\n \"raw\": \"inline with to a dn from lines\",\n \"markup\": \"markdown\",\n \"html\": \"

inline with to a dn from lines

\",\n \"type\": \"rendered\"\n },\n \"created_on\": \"2019-09-27T00:33:46.039178+00:00\",\n \"user\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n },\n \"created_on\": \"2019-09-27T00:33:46.039178+00:00\",\n \"user\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n },\n \"updated_on\": \"2019-09-27T00:33:46.055384+00:00\",\n \"inline\": {\n \"context_lines\": \"\",\n \"to\": null,\n \"path\": \"\",\n \"outdated\": false,\n \"from\": 211\n },\n \"type\": \"pullrequest_comment\",\n \"id\": 118571088\n },\n \"pull_request\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n }\n }\n ]\n}\n```\n\nUpdates include a state property of OPEN, MERGED, or DECLINED.\n\nUpdate example:\n```\n{\n \"pagelen\": 20,\n \"values\": [\n {\n \"update\": {\n \"description\": \"\",\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\",\n \"destination\": {\n \"commit\": {\n \"type\": \"commit\",\n \"hash\": \"6a2c16e4a152\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/commit/6a2c16e4a152\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/commits/6a2c16e4a152\"\n }\n }\n },\n \"branch\": {\n \"name\": \"master\"\n },\n \"repository\": {\n \"name\": \"Atlaskit-MK-2\",\n \"type\": \"repository\",\n \"full_name\": \"atlassian/atlaskit-mk-2\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2\"\n },\n \"avatar\": {\n \"href\": \"https://bytebucket.org/ravatar/%7B%7D?ts=js\"\n }\n },\n \"uuid\": \"{}\"\n }\n },\n \"reason\": \"\",\n \"source\": {\n \"commit\": {\n \"type\": \"commit\",\n \"hash\": \"728c8bad1813\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/commit/728c8bad1813\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/commits/728c8bad1813\"\n }\n }\n },\n \"branch\": {\n \"name\": \"username/NONE-add-onClick-prop-for-accessibility\"\n },\n \"repository\": {\n \"name\": \"Atlaskit-MK-2\",\n \"type\": \"repository\",\n \"full_name\": \"atlassian/atlaskit-mk-2\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2\"\n },\n \"avatar\": {\n \"href\": \"https://bytebucket.org/ravatar/%7B%7D?ts=js\"\n }\n },\n \"uuid\": \"{}\"\n }\n },\n \"state\": \"OPEN\",\n \"author\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n },\n \"date\": \"2019-05-10T06:48:25.305565+00:00\"\n },\n \"pull_request\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n }\n }\n ]\n}\n```\n\nApproval example:\n```\n{\n \"pagelen\": 20,\n \"values\": [\n {\n \"approval\": {\n \"date\": \"2019-09-27T00:37:19.849534+00:00\",\n \"pullrequest\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n },\n \"user\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n }\n },\n \"pull_request\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n }\n }\n ]\n}\n```", "summary": "List a pull request activity log", "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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}": { "get": { "tags": [ "Pullrequests" ], "description": "Returns the specified pull request.", "summary": "Get a pull request", "responses": { "200": { "description": "The pull request object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "put": { "tags": [ "Pullrequests" ], "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.", "summary": "Update a pull request", "responses": { "200": { "description": "The updated pull request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest" } } } }, "400": { "description": "If the input document was invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "If the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository or pull request id does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest" } } }, "description": "The pull request that is to be updated." }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket", "write:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/activity": { "get": { "tags": [ "Pullrequests" ], "description": "Returns a paginated list of the pull request's activity log.\n\nThis handler serves both a v20 and internal endpoint. The v20 endpoint\nreturns reviewer comments, updates, approvals and request changes. The internal\nendpoint includes those plus tasks and attachments.\n\nComments created on a file or a line of code have an inline property.\n\nComment example:\n```\n{\n \"pagelen\": 20,\n \"values\": [\n {\n \"comment\": {\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695/comments/118571088\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695/_/diff#comment-118571088\"\n }\n },\n \"deleted\": false,\n \"pullrequest\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n },\n \"content\": {\n \"raw\": \"inline with to a dn from lines\",\n \"markup\": \"markdown\",\n \"html\": \"

inline with to a dn from lines

\",\n \"type\": \"rendered\"\n },\n \"created_on\": \"2019-09-27T00:33:46.039178+00:00\",\n \"user\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n },\n \"created_on\": \"2019-09-27T00:33:46.039178+00:00\",\n \"user\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n },\n \"updated_on\": \"2019-09-27T00:33:46.055384+00:00\",\n \"inline\": {\n \"context_lines\": \"\",\n \"to\": null,\n \"path\": \"\",\n \"outdated\": false,\n \"from\": 211\n },\n \"type\": \"pullrequest_comment\",\n \"id\": 118571088\n },\n \"pull_request\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n }\n }\n ]\n}\n```\n\nUpdates include a state property of OPEN, MERGED, or DECLINED.\n\nUpdate example:\n```\n{\n \"pagelen\": 20,\n \"values\": [\n {\n \"update\": {\n \"description\": \"\",\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\",\n \"destination\": {\n \"commit\": {\n \"type\": \"commit\",\n \"hash\": \"6a2c16e4a152\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/commit/6a2c16e4a152\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/commits/6a2c16e4a152\"\n }\n }\n },\n \"branch\": {\n \"name\": \"master\"\n },\n \"repository\": {\n \"name\": \"Atlaskit-MK-2\",\n \"type\": \"repository\",\n \"full_name\": \"atlassian/atlaskit-mk-2\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2\"\n },\n \"avatar\": {\n \"href\": \"https://bytebucket.org/ravatar/%7B%7D?ts=js\"\n }\n },\n \"uuid\": \"{}\"\n }\n },\n \"reason\": \"\",\n \"source\": {\n \"commit\": {\n \"type\": \"commit\",\n \"hash\": \"728c8bad1813\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/commit/728c8bad1813\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/commits/728c8bad1813\"\n }\n }\n },\n \"branch\": {\n \"name\": \"username/NONE-add-onClick-prop-for-accessibility\"\n },\n \"repository\": {\n \"name\": \"Atlaskit-MK-2\",\n \"type\": \"repository\",\n \"full_name\": \"atlassian/atlaskit-mk-2\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2\"\n },\n \"avatar\": {\n \"href\": \"https://bytebucket.org/ravatar/%7B%7D?ts=js\"\n }\n },\n \"uuid\": \"{}\"\n }\n },\n \"state\": \"OPEN\",\n \"author\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n },\n \"date\": \"2019-05-10T06:48:25.305565+00:00\"\n },\n \"pull_request\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n }\n }\n ]\n}\n```\n\nApproval example:\n```\n{\n \"pagelen\": 20,\n \"values\": [\n {\n \"approval\": {\n \"date\": \"2019-09-27T00:37:19.849534+00:00\",\n \"pullrequest\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n },\n \"user\": {\n \"display_name\": \"Name Lastname\",\n \"uuid\": \"{}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/%7B%7D\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/%7B%7D/\"\n },\n \"avatar\": {\n \"href\": \"https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/:/128\"\n }\n },\n \"type\": \"user\",\n \"nickname\": \"Name\",\n \"account_id\": \"\"\n }\n },\n \"pull_request\": {\n \"type\": \"pullrequest\",\n \"id\": 5695,\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/atlaskit-mk-2/pullrequests/5695\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/atlaskit-mk-2/pull-requests/5695\"\n }\n },\n \"title\": \"username/NONE: small change from onFocus to onClick to handle tabbing through the page and not expand the editor unless a click event triggers it\"\n }\n }\n ]\n}\n```", "summary": "List a pull request activity log", "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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/approve": { "delete": { "tags": [ "Pullrequests" ], "description": "Redact the authenticated user's approval of the specified pull\nrequest.", "summary": "Unapprove a pull request", "responses": { "204": { "description": "An empty response indicating the authenticated user's approval has been withdrawn." }, "400": { "description": "Pull request cannot be unapproved because the pull request has already been merged.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified pull request or the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:pullrequest:bitbucket" ] } ] }, "post": { "tags": [ "Pullrequests" ], "description": "Approve the specified pull request as the authenticated user.", "summary": "Approve a pull request", "responses": { "200": { "description": "The `participant` object recording that the authenticated user approved the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/participant" } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified pull request or the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket", "write:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/comments": { "get": { "tags": [ "Pullrequests" ], "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](/cloud/bitbucket/rest/intro/#filtering) for more\ndetails.", "summary": "List comments on a pull request", "responses": { "200": { "description": "A paginated list of comments made on the given pull request, in chronological order.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pullrequest_comments" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the pull request does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "post": { "tags": [ "Pullrequests" ], "description": "Creates a new pull request comment.\n\nReturns the newly created pull request comment.", "summary": "Create a comment on a pull request", "responses": { "201": { "description": "The newly created comment.", "headers": { "Location": { "description": "The URL of the new comment", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the pull request does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment" } } }, "description": "The comment object.", "required": true }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/comments/{comment_id}": { "delete": { "tags": [ "Pullrequests" ], "description": "Deletes a specific pull request comment.", "summary": "Delete a comment on a pull request", "responses": { "204": { "description": "Successful deletion." }, "403": { "description": "If the authenticated user does not have access to delete the comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "get": { "tags": [ "Pullrequests" ], "description": "Returns a specific pull request comment.", "summary": "Get a comment on a pull request", "responses": { "200": { "description": "The comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "put": { "tags": [ "Pullrequests" ], "description": "Updates a specific pull request comment.", "summary": "Update a comment on a pull request", "responses": { "200": { "description": "The updated comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment" } } } }, "403": { "description": "If the authenticated user does not have access to the comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment" } } }, "description": "The contents of the updated comment.", "required": true }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "comment_id", "in": "path", "description": "The id of the comment.", "required": true, "schema": { "type": "integer" } }, { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/comments/{comment_id}/resolve": { "delete": { "tags": [ "Pullrequests" ], "description": "", "summary": "Reopen a comment thread", "responses": { "204": { "description": "The comment is reopened." }, "403": { "description": "If the authenticated user does not have access to the pull request,\nor if the provided comment is not a top-level comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment does not exist, or if the comment has not been resolved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "post": { "tags": [ "Pullrequests" ], "description": "", "summary": "Resolve a comment thread", "responses": { "200": { "description": "The comment resolution details.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/comment_resolution" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request,\nif the provided comment is not a top-level comment,\nor if the comment is not on the diff.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "If the comment has already been resolved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "comment_id", "in": "path", "description": "The id of the comment.", "required": true, "schema": { "type": "integer" } }, { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/commits": { "get": { "tags": [ "Pullrequests" ], "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.", "summary": "List commits on a pull request", "responses": { "200": { "description": "A paginated list of commits made on the given pull request, in chronological order. This list will be empty if the source branch no longer exists." }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the pull request does not exist or the source branch is from a forked repository which no longer exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/decline": { "post": { "tags": [ "Pullrequests" ], "description": "Declines the pull request.", "summary": "Decline a pull request", "responses": { "200": { "description": "The pull request was successfully declined.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest" } } } }, "555": { "description": "If the decline took too long and timed out.\nIn this case the caller should retry the request later.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket", "write:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/diff": { "get": { "tags": [ "Pullrequests" ], "description": "Redirects to the [repository diff](/cloud/bitbucket/rest/api-group-commits/#api-repositories-workspace-repo-slug-diff-spec-get)\nwith the revspec that corresponds to the pull request.", "summary": "List changes in a pull request", "responses": { "302": { "description": "Redirects to the [repository diff](/cloud/bitbucket/rest/api-group-commits/#api-repositories-workspace-repo-slug-diff-spec-get) with the\nrevspec that corresponds to the pull request.\n" } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/diffstat": { "get": { "tags": [ "Pullrequests" ], "description": "Redirects to the [repository diffstat](/cloud/bitbucket/rest/api-group-commits/#api-repositories-workspace-repo-slug-diffstat-spec-get)\nwith the revspec that corresponds to the pull request.", "summary": "Get the diff stat for a pull request", "responses": { "302": { "description": "Redirects to the [repository diffstat](/cloud/bitbucket/rest/api-group-commits/#api-repositories-workspace-repo-slug-diffstat-spec-get) with\nthe revspec that corresponds to pull request.\n" } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/merge": { "post": { "tags": [ "Pullrequests" ], "description": "Merges the pull request.", "summary": "Merge a pull request", "responses": { "200": { "description": "The pull request object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest" } } } }, "202": { "description": "In the Location header, the URL to poll for the pull request merge status" }, "409": { "description": "Unable to merge because one of the refs involved changed while attempting to merge" }, "555": { "description": "If the merge took too long and timed out.\nIn this case the caller should retry the request later", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "async", "in": "query", "description": "Default value is false.\n\n\nWhen set to true, runs merge asynchronously and\nimmediately returns a 202 with polling link to\nthe task-status API in the Location header.\n\n\nWhen set to false, runs merge and waits for it to\ncomplete, returning 200 when it succeeds. If the\nduration of the merge exceeds a timeout threshold,\nthe API returns a 202 with polling link to the\ntask-status API in the Location header.", "required": false, "schema": { "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_merge_parameters" } } } }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket", "write:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/merge/task-status/{task_id}": { "get": { "tags": [ "Pullrequests" ], "description": "When merging a pull request takes too long, the client receives a\ntask ID along with a 202 status code. The task ID can be used in a call\nto this endpoint to check the status of a merge task.\n\n```\ncurl -X GET https://api.bitbucket.org/2.0/repositories/atlassian/bitbucket/pullrequests/2286/merge/task-status/\n```\n\nIf the merge task is not yet finished, a PENDING status will be returned.\n\n```\nHTTP/2 200\n{\n \"task_status\": \"PENDING\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bitbucket/pullrequests/2286/merge/task-status/\"\n }\n }\n}\n```\n\nIf the merge was successful, a SUCCESS status will be returned.\n\n```\nHTTP/2 200\n{\n \"task_status\": \"SUCCESS\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bitbucket/pullrequests/2286/merge/task-status/\"\n }\n },\n \"merge_result\": \n}\n```\n\nIf the merge task failed, an error will be returned.\n\n```\n{\n \"type\": \"error\",\n \"error\": {\n \"message\": \"\"\n }\n}\n```", "summary": "Get the merge task status for a pull request", "responses": { "200": { "description": "Returns a task status if the merge is either pending or successful, and if it is successful, a pull request" }, "400": { "description": "If the provided task ID does not relate to this pull request, or if something went wrong during the merge operation" }, "403": { "description": "The user making the request does not have permission to the repo and is different from the user who queued the task" }, "409": { "description": "Unable to merge because one of the refs involved changed while attempting to merge" } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "task_id", "in": "path", "description": "ID of the merge task", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/patch": { "get": { "tags": [ "Pullrequests" ], "description": "Redirects to the [repository patch](/cloud/bitbucket/rest/api-group-commits/#api-repositories-workspace-repo-slug-patch-spec-get)\nwith the revspec that corresponds to pull request.", "summary": "Get the patch for a pull request", "responses": { "302": { "description": "Redirects to the [repository patch](/cloud/bitbucket/rest/api-group-commits/#api-repositories-workspace-repo-slug-patch-spec-get) with\nthe revspec that corresponds to pull request.\n" } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/request-changes": { "delete": { "tags": [ "Pullrequests" ], "description": "", "summary": "Remove change request for a pull request", "responses": { "204": { "description": "An empty response indicating the authenticated user's request for change has been withdrawn." }, "400": { "description": "Pull request requested changes cannot be removed because the pull request has already been merged.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified pull request or the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:pullrequest:bitbucket" ] } ] }, "post": { "tags": [ "Pullrequests" ], "description": "", "summary": "Request changes for a pull request", "responses": { "200": { "description": "The `participant` object recording that the authenticated user requested changes on the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/participant" } } } }, "400": { "description": "Pull request changes cannot be requested because the pull request has already been merged.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified pull request or the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket", "write:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/statuses": { "get": { "tags": [ "Pullrequests", "Commit statuses" ], "description": "Returns all statuses (e.g. build results) for the given pull\nrequest.", "summary": "List commit statuses for a pull request", "responses": { "200": { "description": "A paginated list of all commit statuses for this pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "Query string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\n", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Field by which the results should be sorted as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\nDefaults to `created_on`.\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/tasks": { "get": { "tags": [ "Pullrequests" ], "description": "Returns a paginated list of the pull request's tasks.\n\nThis endpoint supports filtering and sorting of the results by the 'task' field.\nSee [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for more details.", "summary": "List tasks on a pull request", "responses": { "200": { "description": "A paginated list of pull request tasks for the given pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_tasks" } } } }, "400": { "description": "If the user provides an invalid filter, sort, or fields query parameter.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the pull request does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for details.", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nField by which the results should be sorted as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).\nDefaults to `created_on`.\n", "required": false, "schema": { "type": "string" } }, { "name": "pagelen", "in": "query", "description": "\nCurrent number of objects on the existing page.\nThe default value is 10 with 100 being the maximum allowed value.\nIndividual APIs may enforce different values.\n", "required": false, "schema": { "type": "integer" } } ], "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "post": { "tags": [ "Pullrequests" ], "description": "Creates a new pull request task.\n\nReturns the newly created pull request task.\n\nTasks can optionally be created in relation to a comment specified by the comment's ID which\nwill cause the task to appear below the comment on a pull request when viewed in Bitbucket.", "summary": "Create a task on a pull request", "responses": { "201": { "description": "The newly created task.", "headers": { "Location": { "description": "The URL of the new task", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment_task" } } } }, "400": { "description": "There is a missing required field in the request or the task content is blank.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the pull request does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_task_create" } } }, "description": "The contents of the task", "required": true }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/tasks/{task_id}": { "delete": { "tags": [ "Pullrequests" ], "description": "Deletes a specific pull request task.", "summary": "Delete a task on a pull request", "responses": { "204": { "description": "Successful deletion." }, "403": { "description": "If the authenticated user does not have access to delete the task.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the task does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "get": { "tags": [ "Pullrequests" ], "description": "Returns a specific pull request task.", "summary": "Get a task on a pull request", "responses": { "200": { "description": "The task.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment_task" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the task does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "put": { "tags": [ "Pullrequests" ], "description": "Updates a specific pull request task.", "summary": "Update a task on a pull request", "responses": { "200": { "description": "The updated task.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_comment_task" } } } }, "400": { "description": "There is a missing required field in the request or the task content is blank.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have access to the pull request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the task does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pullrequest_task_update" } } }, "description": "The updated state and content of the task.", "required": true }, "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "pull_request_id", "in": "path", "description": "The id of the pull request.", "required": true, "schema": { "type": "integer" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "task_id", "in": "path", "description": "The ID of the task.", "required": true, "schema": { "type": "integer" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/pullrequests/{pullrequest_id}/properties/{app_key}/{property_name}": { "put": { "responses": { "204": { "description": "An empty response." } }, "operationId": "updatePullRequestHostedPropertyValue", "summary": "Update a pull request application property", "description": "Update an [application property](/cloud/bitbucket/application-properties/) value stored against a pull request.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "pullrequest_id", "description": "The pull request ID.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/application_property" }, "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "delete": { "responses": { "204": { "description": "An empty response." } }, "operationId": "deletePullRequestHostedPropertyValue", "summary": "Delete a pull request application property", "description": "Delete an [application property](/cloud/bitbucket/application-properties/) value stored against a pull request.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "pullrequest_id", "description": "The pull request ID.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "responses": { "200": { "description": "The value of the property.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/application_property" } } } } }, "operationId": "getPullRequestHostedPropertyValue", "summary": "Get a pull request application property", "description": "Retrieve an [application property](/cloud/bitbucket/application-properties/) value stored against a pull request.", "parameters": [ { "required": true, "in": "path", "name": "workspace", "description": "The repository container; either the workspace slug or the UUID in curly braces.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "repo_slug", "description": "The repository.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "pullrequest_id", "description": "The pull request ID.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] } }, "/repositories/{workspace}/{repo_slug}/refs": { "get": { "tags": [ "Refs" ], "description": "Returns the branches and tags in the repository.\n\nBy default, results will be in the order the underlying source control system returns them and identical to\nthe ordering one sees when running \"$ git show-ref\". Note that this follows simple\nlexical ordering of the ref names.\n\nThis can be undesirable as it does apply any natural sorting semantics, meaning for instance that refs are\nsorted [\"branch1\", \"branch10\", \"branch2\", \"v10\", \"v11\", \"v9\"] instead of [\"branch1\", \"branch2\",\n\"branch10\", \"v9\", \"v10\", \"v11\"].\n\nSorting can be changed using the ?sort= query parameter. When using ?sort=name to explicitly sort on ref name,\nBitbucket will apply natural sorting and interpret numerical values as numbers instead of strings.", "summary": "List branches and tags", "responses": { "200": { "description": "A paginated list of refs matching any filter criteria that were provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_refs" } } } }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nField by which the results should be sorted as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering). The `name`\nfield is handled specially for refs in that, if specified as the sort field, it\nuses a natural sort order instead of the default lexicographical sort order. For example,\nit will return ['1.1', '1.2', '1.10'] instead of ['1.1', '1.10', '1.2'].", "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/refs/branches": { "get": { "tags": [ "Refs" ], "description": "Returns a list of all open branches within the specified repository.\nResults will be in the order the source control manager returns them.\n\nBranches support [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering)\nthat can be used to search for specific branches. For instance, to find\nall branches that have \"stab\" in their name:\n\n```\ncurl -s https://api.bitbucket.org/2.0/repositories/atlassian/aui/refs/branches -G --data-urlencode 'q=name ~ \"stab\"'\n```\n\nBy default, results will be in the order the underlying source control system returns them and identical to\nthe ordering one sees when running \"$ git branch --list\". Note that this follows simple\nlexical ordering of the ref names.\n\nThis can be undesirable as it does apply any natural sorting semantics, meaning for instance that tags are\nsorted [\"v10\", \"v11\", \"v9\"] instead of [\"v9\", \"v10\", \"v11\"].\n\nSorting can be changed using the ?q= query parameter. When using ?q=name to explicitly sort on ref name,\nBitbucket will apply natural sorting and interpret numerical values as numbers instead of strings.", "summary": "List open branches", "responses": { "200": { "description": "A paginated list of branches matching any filter criteria that were provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_branches" }, "examples": { "response": { "value": { "pagelen": 1, "size": 187, "values": [ { "name": "issue-9.3/AUI-5343-assistive-class", "links": { "commits": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commits/issue-9.3/AUI-5343-assistive-class" }, "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/refs/branches/issue-9.3/AUI-5343-assistive-class" }, "html": { "href": "https://bitbucket.org/atlassian/aui/branch/issue-9.3/AUI-5343-assistive-class" } }, "default_merge_strategy": "squash", "merge_strategies": [ "merge_commit", "squash", "fast_forward", "squash_fast_forward", "rebase_fast_forward", "rebase_merge" ], "type": "branch", "target": { "hash": "e5d1cde9069fcb9f0af90403a4de2150c125a148", "repository": { "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui" }, "html": { "href": "https://bitbucket.org/atlassian/aui" }, "avatar": { "href": "https://bytebucket.org/ravatar/%7B585074de-7b60-4fd1-81ed-e0bc7fafbda5%7D?ts=86317" } }, "type": "repository", "name": "aui", "full_name": "atlassian/aui", "uuid": "{585074de-7b60-4fd1-81ed-e0bc7fafbda5}" }, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e5d1cde9069fcb9f0af90403a4de2150c125a148" }, "comments": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e5d1cde9069fcb9f0af90403a4de2150c125a148/comments" }, "patch": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/patch/e5d1cde9069fcb9f0af90403a4de2150c125a148" }, "html": { "href": "https://bitbucket.org/atlassian/aui/commits/e5d1cde9069fcb9f0af90403a4de2150c125a148" }, "diff": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/diff/e5d1cde9069fcb9f0af90403a4de2150c125a148" }, "approve": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e5d1cde9069fcb9f0af90403a4de2150c125a148/approve" }, "statuses": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e5d1cde9069fcb9f0af90403a4de2150c125a148/statuses" } }, "author": { "raw": "Marcin Konopka ", "type": "author", "user": { "display_name": "Marcin Konopka", "uuid": "{47cc24f4-2a05-4420-88fe-0417535a110a}", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/%7B47cc24f4-2a05-4420-88fe-0417535a110a%7D" }, "html": { "href": "https://bitbucket.org/%7B47cc24f4-2a05-4420-88fe-0417535a110a%7D/" }, "avatar": { "href": "https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/initials/MK-1.png" } }, "nickname": "Marcin Konopka", "type": "user", "account_id": "60113d2b47a9540069f4de03" } }, "parents": [ { "hash": "87f7fc92b00464ae47b13ef65c91884e4ac9be51", "type": "commit", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/87f7fc92b00464ae47b13ef65c91884e4ac9be51" }, "html": { "href": "https://bitbucket.org/atlassian/aui/commits/87f7fc92b00464ae47b13ef65c91884e4ac9be51" } } } ], "date": "2021-04-13T13:44:49+00:00", "message": "wip\n", "type": "commit" } } ], "page": 1, "next": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/refs/branches?pagelen=1&page=2" } } } } } }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nField by which the results should be sorted as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering). The `name`\nfield is handled specially for branches in that, if specified as the sort field, it\nuses a natural sort order instead of the default lexicographical sort order. For example,\nit will return ['branch1', 'branch2', 'branch10'] instead of ['branch1', 'branch10', 'branch2'].", "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Refs" ], "description": "Creates a new branch 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```\ncurl https://api.bitbucket.org/2.0/repositories/seanfarley/hg/refs/branches \\\n-s -u seanfarley -X POST -H \"Content-Type: application/json\" \\\n-d '{\n \"name\" : \"smf/create-feature\",\n \"target\" : {\n \"hash\" : \"default\",\n }\n}'\n```\n\nThis call requires authentication. Private repositories require the\ncaller to authenticate with an account that has appropriate\nauthorization.\n\nThe branch name should not include any prefixes (e.g.\nrefs/heads). This endpoint does support using short hash prefixes for\nthe commit hash, but it may return a 400 response if the provided\nprefix is ambiguous. Using a full commit hash is the preferred\napproach.", "summary": "Create a branch", "responses": { "201": { "description": "The newly created branch object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branch" } } } }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or branch does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket", "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/refs/branches/{name}": { "delete": { "tags": [ "Refs" ], "description": "Delete a branch in the specified repository.\n\nThe main branch is not allowed to be deleted and will return a 400\nresponse.\n\nThe branch name should not include any prefixes (e.g.\nrefs/heads).", "summary": "Delete a branch", "responses": { "204": { "description": "Indicates that the specified branch was successfully deleted." }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or branch does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket" ] } ] }, "get": { "tags": [ "Refs" ], "description": "Returns a branch object within the specified repository.\n\nThis call requires authentication. Private repositories require the\ncaller to authenticate with an account that has appropriate\nauthorization.\n\nFor Git, the branch name should not include any prefixes (e.g.\nrefs/heads).", "summary": "Get a branch", "responses": { "200": { "description": "The branch object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branch" }, "examples": { "response": { "value": { "name": "master", "links": { "commits": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commits/master" }, "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/refs/branches/master" }, "html": { "href": "https://bitbucket.org/atlassian/aui/branch/master" } }, "default_merge_strategy": "squash", "merge_strategies": [ "merge_commit", "squash", "fast_forward", "squash_fast_forward", "rebase_fast_forward", "rebase_merge" ], "type": "branch", "target": { "hash": "e7d158ff7ed5538c28f94cd97a9ad569680fc94e", "repository": { "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui" }, "html": { "href": "https://bitbucket.org/atlassian/aui" }, "avatar": { "href": "https://bytebucket.org/ravatar/%7B585074de-7b60-4fd1-81ed-e0bc7fafbda5%7D?ts=86317" } }, "type": "repository", "name": "aui", "full_name": "atlassian/aui", "uuid": "{585074de-7b60-4fd1-81ed-e0bc7fafbda5}" }, "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e7d158ff7ed5538c28f94cd97a9ad569680fc94e" }, "comments": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e7d158ff7ed5538c28f94cd97a9ad569680fc94e/comments" }, "patch": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/patch/e7d158ff7ed5538c28f94cd97a9ad569680fc94e" }, "html": { "href": "https://bitbucket.org/atlassian/aui/commits/e7d158ff7ed5538c28f94cd97a9ad569680fc94e" }, "diff": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/diff/e7d158ff7ed5538c28f94cd97a9ad569680fc94e" }, "approve": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e7d158ff7ed5538c28f94cd97a9ad569680fc94e/approve" }, "statuses": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/e7d158ff7ed5538c28f94cd97a9ad569680fc94e/statuses" } }, "author": { "raw": "psre-renovate-bot ", "type": "author", "user": { "display_name": "psre-renovate-bot", "uuid": "{250a442a-3ab3-4fcb-87c3-3c8f3df65ec7}", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/%7B250a442a-3ab3-4fcb-87c3-3c8f3df65ec7%7D" }, "html": { "href": "https://bitbucket.org/%7B250a442a-3ab3-4fcb-87c3-3c8f3df65ec7%7D/" }, "avatar": { "href": "https://secure.gravatar.com/avatar/6972ee037c9f36360170a86f544071a2?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FP-3.png" } }, "nickname": "Renovate Bot", "type": "user", "account_id": "5d5355e8c6b9320d9ea5b28d" } }, "parents": [ { "hash": "eab868a309e75733de80969a7bed1ec6d4651e06", "type": "commit", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/eab868a309e75733de80969a7bed1ec6d4651e06" }, "html": { "href": "https://bitbucket.org/atlassian/aui/commits/eab868a309e75733de80969a7bed1ec6d4651e06" } } } ], "date": "2021-04-12T06:44:38+00:00", "message": "Merged in issue/NONE-renovate-master-babel-monorepo (pull request #2883)\n\nchore(deps): update babel monorepo to v7.13.15 (master)\n\nApproved-by: Chris \"Daz\" Darroch\n", "type": "commit" } } } } } } }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or branch does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "name", "in": "path", "description": "The name of the branch.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/refs/tags": { "get": { "tags": [ "Refs" ], "description": "Returns the tags in the repository.\n\nBy default, results will be in the order the underlying source control system returns them and identical to\nthe ordering one sees when running \"$ git tag --list\". Note that this follows simple\nlexical ordering of the ref names.\n\nThis can be undesirable as it does apply any natural sorting semantics, meaning for instance that tags are\nsorted [\"v10\", \"v11\", \"v9\"] instead of [\"v9\", \"v10\", \"v11\"].\n\nSorting can be changed using the ?sort= query parameter. When using ?sort=name to explicitly sort on ref name,\nBitbucket will apply natural sorting and interpret numerical values as numbers instead of strings.", "summary": "List tags", "responses": { "200": { "description": "A paginated list of tags matching any filter criteria that were provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_tags" } } } }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nField by which the results should be sorted as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering). The `name`\nfield is handled specially for tags in that, if specified as the sort field, it\nuses a natural sort order instead of the default lexicographical sort order. For example,\nit will return ['1.1', '1.2', '1.10'] instead of ['1.1', '1.10', '1.2'].", "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Refs" ], "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```\ncurl https://api.bitbucket.org/2.0/repositories/jdoe/myrepo/refs/tags \\\n-s -u jdoe -X POST -H \"Content-Type: application/json\" \\\n-d '{\n \"name\" : \"new-tag-name\",\n \"target\" : {\n \"hash\" : \"a1b2c3d4e5f6\",\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.", "summary": "Create a tag", "responses": { "201": { "description": "The newly created tag.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tag" } } } }, "400": { "description": "If the target hash is missing, ambiguous, or invalid, or if the name is not provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tag" } } }, "required": true }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket", "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/refs/tags/{name}": { "delete": { "tags": [ "Refs" ], "description": "Delete a tag in the specified repository.\n\nThe tag name should not include any prefixes (e.g. refs/tags).", "summary": "Delete a tag", "responses": { "204": { "description": "Indicates the specified tag was successfully deleted." }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or tag does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket" ] } ] }, "get": { "tags": [ "Refs" ], "description": "Returns the specified tag.\n\n```\n$ curl -s https://api.bitbucket.org/2.0/repositories/seanfarley/hg/refs/tags/3.8 -G | jq .\n{\n \"name\": \"3.8\",\n \"links\": {\n \"commits\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/commits/3.8\"\n },\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/refs/tags/3.8\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/seanfarley/hg/commits/tag/3.8\"\n }\n },\n \"tagger\": {\n \"raw\": \"Matt Mackall \",\n \"type\": \"author\",\n \"user\": {\n \"username\": \"mpmselenic\",\n \"nickname\": \"mpmselenic\",\n \"display_name\": \"Matt Mackall\",\n \"type\": \"user\",\n \"uuid\": \"{a4934530-db4c-419c-a478-9ab4964c2ee7}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/mpmselenic\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/mpmselenic/\"\n },\n \"avatar\": {\n \"href\": \"https://bitbucket.org/account/mpmselenic/avatar/32/\"\n }\n }\n }\n },\n \"date\": \"2016-05-01T18:52:25+00:00\",\n \"message\": \"Added tag 3.8 for changeset f85de28eae32\",\n \"type\": \"tag\",\n \"target\": {\n \"hash\": \"f85de28eae32e7d3064b1a1321309071bbaaa069\",\n \"repository\": {\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/seanfarley/hg\"\n },\n \"avatar\": {\n \"href\": \"https://bitbucket.org/seanfarley/hg/avatar/32/\"\n }\n },\n \"type\": \"repository\",\n \"name\": \"hg\",\n \"full_name\": \"seanfarley/hg\",\n \"uuid\": \"{c75687fb-e99d-4579-9087-190dbd406d30}\"\n },\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/commit/f85de28eae32e7d3064b1a1321309071bbaaa069\"\n },\n \"comments\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/commit/f85de28eae32e7d3064b1a1321309071bbaaa069/comments\"\n },\n \"patch\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/patch/f85de28eae32e7d3064b1a1321309071bbaaa069\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/seanfarley/hg/commits/f85de28eae32e7d3064b1a1321309071bbaaa069\"\n },\n \"diff\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/diff/f85de28eae32e7d3064b1a1321309071bbaaa069\"\n },\n \"approve\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/commit/f85de28eae32e7d3064b1a1321309071bbaaa069/approve\"\n },\n \"statuses\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/commit/f85de28eae32e7d3064b1a1321309071bbaaa069/statuses\"\n }\n },\n \"author\": {\n \"raw\": \"Sean Farley \",\n \"type\": \"author\",\n \"user\": {\n \"username\": \"seanfarley\",\n \"nickname\": \"seanfarley\",\n \"display_name\": \"Sean Farley\",\n \"type\": \"user\",\n \"uuid\": \"{a295f8a8-5876-4d43-89b5-3ad8c6c3c51d}\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/users/seanfarley\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/seanfarley/\"\n },\n \"avatar\": {\n \"href\": \"https://bitbucket.org/account/seanfarley/avatar/32/\"\n }\n }\n }\n },\n \"parents\": [\n {\n \"hash\": \"9a98d0e5b07fc60887f9d3d34d9ac7d536f470d2\",\n \"type\": \"commit\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/seanfarley/hg/commit/9a98d0e5b07fc60887f9d3d34d9ac7d536f470d2\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/seanfarley/hg/commits/9a98d0e5b07fc60887f9d3d34d9ac7d536f470d2\"\n }\n }\n }\n ],\n \"date\": \"2016-05-01T04:21:17+00:00\",\n \"message\": \"debian: alphabetize build deps\",\n \"type\": \"commit\"\n }\n}\n```", "summary": "Get a tag", "responses": { "200": { "description": "The tag object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/tag" } } } }, "403": { "description": "If the repository is private and the authenticated user does not have\naccess to it.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "The specified repository or tag does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "name", "in": "path", "description": "The name of the tag.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/src": { "get": { "tags": [ "Source", "Repositories" ], "description": "This endpoint redirects the client to the directory listing of the\nroot directory on the main branch.\n\nThis is equivalent to directly hitting\n[/2.0/repositories/{username}/{repo_slug}/src/{commit}/{path}](src/%7Bcommit%7D/%7Bpath%7D)\nwithout having to know the name or SHA1 of the repo's main branch.\n\nTo create new commits, [POST to this endpoint](#post)", "summary": "Get the root directory of the main branch", "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", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_treeentries" } } } }, "404": { "description": "If the path or commit in the URL does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "format", "in": "query", "description": "Instead of returning the file's contents, return the (json) meta data for it.", "required": false, "schema": { "type": "string", "enum": [ "meta" ] } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "post": { "tags": [ "Source", "Repositories" ], "description": "This endpoint is used to create new commits in the repository by\nuploading files.\n\nTo add a new file to a repository:\n\n```\n$ curl https://api.bitbucket.org/2.0/repositories/username/slug/src \\\n -F /repo/path/to/image.png=@image.png\n```\n\nThis will create a new commit on top of the main branch, inheriting the\ncontents of the main branch, but adding (or overwriting) the\n`image.png` file to the repository in the `/repo/path/to` directory.\n\nTo create a commit that deletes files, use the `files` parameter:\n\n```\n$ curl https://api.bitbucket.org/2.0/repositories/username/slug/src \\\n -F files=/file/to/delete/1.txt \\\n -F files=/file/to/delete/2.txt\n```\n\nYou can add/modify/delete multiple files in a request. Rename/move a\nfile by deleting the old path and adding the content at the new path.\n\nThis endpoint accepts `multipart/form-data` (as in the examples above),\nas well as `application/x-www-form-urlencoded`.\n\nNote: `multipart/form-data` is currently not supported by Forge apps\nfor this API.\n\n#### multipart/form-data\n\nA `multipart/form-data` post contains a series of \"form fields\" that\nidentify both the individual files that are being uploaded, as well as\nadditional, optional meta data.\n\nFiles are uploaded in file form fields (those that have a\n`Content-Disposition` parameter) whose field names point to the remote\npath in the repository where the file should be stored. Path field\nnames are always interpreted to be absolute from the root of the\nrepository, regardless whether the client uses a leading slash (as the\nabove `curl` example did).\n\nFile contents are treated as bytes and are not decoded as text.\n\nThe commit message, as well as other non-file meta data for the\nrequest, is sent along as normal form field elements. Meta data fields\nshare the same namespace as the file objects. For `multipart/form-data`\nbodies that should not lead to any ambiguity, as the\n`Content-Disposition` header will contain the `filename` parameter to\ndistinguish between a file named \"message\" and the commit message field.\n\n#### application/x-www-form-urlencoded\n\nIt is also possible to upload new files using a simple\n`application/x-www-form-urlencoded` POST. This can be convenient when\nuploading pure text files:\n\n```\n$ curl https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src \\\n --data-urlencode \"/path/to/me.txt=Lorem ipsum.\" \\\n --data-urlencode \"message=Initial commit\" \\\n --data-urlencode \"author=Erik van Zijst \"\n```\n\nThere could be a field name clash if a client were to upload a file\nnamed \"message\", as this filename clashes with the meta data property\nfor the commit message. To avoid this and to upload files whose names\nclash with the meta data properties, use a leading slash for the files,\ne.g. `curl --data-urlencode \"/message=file contents\"`.\n\nWhen an explicit slash is omitted for a file whose path matches that of\na meta data parameter, then it is interpreted as meta data, not as a\nfile.\n\n#### Executables and links\n\nWhile this API aims to facilitate the most common use cases, it is\npossible to perform some more advanced operations like creating a new\nsymlink in the repository, or creating an executable file.\n\nFiles can be supplied with a `x-attributes` value in the\n`Content-Disposition` header. For example, to upload an executable\nfile, as well as create a symlink from `README.txt` to `README`:\n\n```\n--===============1438169132528273974==\nContent-Type: text/plain; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-ID: \"bin/shutdown.sh\"\nContent-Disposition: attachment; filename=\"shutdown.sh\"; x-attributes:\"executable\"\n\n#!/bin/sh\nhalt\n\n--===============1438169132528273974==\nContent-Type: text/plain; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-ID: \"/README.txt\"\nContent-Disposition: attachment; filename=\"README.txt\"; x-attributes:\"link\"\n\nREADME\n--===============1438169132528273974==--\n```\n\nLinks are files that contain the target path and have\n`x-attributes:\"link\"` set.\n\nWhen overwriting links with files, or vice versa, the newly uploaded\nfile determines both the new contents, as well as the attributes. That\nmeans uploading a file without specifying `x-attributes=\"link\"` will\ncreate a regular file, even if the parent commit hosted a symlink at\nthe same path.\n\nThe same applies to executables. When modifying an existing executable\nfile, the form-data file element must include\n`x-attributes=\"executable\"` in order to preserve the executable status\nof the file.\n\nNote that this API does not support the creation or manipulation of\nsubrepos / submodules.", "summary": "Create a commit by uploading a file", "responses": { "201": { "description": "\n" }, "403": { "description": "If the authenticated user does not have write or admin access", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the repository does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "message", "in": "query", "description": "The commit message. When omitted, Bitbucket uses a canned string.", "required": false, "schema": { "type": "string" } }, { "name": "author", "in": "query", "description": "\nThe raw string to be used as the new commit's author.\nThis string follows the format\n`Erik van Zijst `.\n\nWhen omitted, Bitbucket uses the authenticated user's\nfull/display name and primary email address. Commits cannot\nbe created anonymously.", "required": false, "schema": { "type": "string" } }, { "name": "parents", "in": "query", "description": "\nA comma-separated list of SHA1s of the commits that should\nbe the parents of the newly created commit.\n\nWhen omitted, the new commit will inherit from and become\na child of the main branch's tip/HEAD commit.\n\nWhen more than one SHA1 is provided, the first SHA1\nidentifies the commit from which the content will be\ninherited.\".", "required": false, "schema": { "type": "string" } }, { "name": "files", "in": "query", "description": "\nOptional field that declares the files that the request is\nmanipulating. When adding a new file to a repo, or when\noverwriting an existing file, the client can just upload\nthe full contents of the file in a normal form field and\nthe use of this `files` meta data field is redundant.\nHowever, when the `files` field contains a file path that\ndoes not have a corresponding, identically-named form\nfield, then Bitbucket interprets that as the client wanting\nto replace the named file with the null set and the file is\ndeleted instead.\n\nPaths in the repo that are referenced in neither files nor\nan individual file field, remain unchanged and carry over\nfrom the parent to the new commit.\n\nThis API does not support renaming as an explicit feature.\nTo rename a file, simply delete it and recreate it under\nthe new name in the same commit.\n", "required": false, "schema": { "type": "string" } }, { "name": "branch", "in": "query", "description": "\nThe name of the branch that the new commit should be\ncreated on. When omitted, the commit will be created on top\nof the main branch and will become the main branch's new\nhead.\n\nWhen a branch name is provided that already exists in the\nrepo, then the commit will be created on top of that\nbranch. In this case, *if* a parent SHA1 was also provided,\nthen it is asserted that the parent is the branch's\ntip/HEAD at the time the request is made. When this is not\nthe case, a 409 is returned.\n\nWhen a new branch name is specified (that does not already\nexist in the repo), and no parent SHA1s are provided, then\nthe new commit will inherit from the current main branch's\ntip/HEAD commit, but not advance the main branch. The new\ncommit will be the new branch. When the request *also*\nspecifies a parent SHA1, then the new commit and branch\nare created directly on top of the parent commit,\nregardless of the state of the main branch.\n\nWhen a branch name is not specified, but a parent SHA1 is\nprovided, then Bitbucket asserts that it represents the\nmain branch's current HEAD/tip, or a 409 is returned.\n\nWhen a branch name is not specified and the repo is empty,\nthe new commit will become the repo's root commit and will\nbe on the main branch.\n\nWhen a branch name is specified and the repo is empty, the\nnew commit will become the repo's root commit and also\ndefine the repo's main branch going forward.\n\nThis API cannot be used to create additional root commits\nin non-empty repos.\n\nThe branch field cannot be repeated.\n\nAs a side effect, this API can be used to create a new\nbranch without modifying any files, by specifying a new\nbranch name in this field, together with `parents`, but\nomitting the `files` fields, while not sending any files.\nThis will create a new commit and branch with the same\ncontents as the first parent. The diff of this commit\nagainst its first parent will be empty.\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository:write" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "write:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/src/{commit}/{path}": { "get": { "tags": [ "Source", "Repositories" ], "description": "This endpoints is used to retrieve the contents of a single file,\nor the contents of a directory at a specified revision.\n\n#### Raw file contents\n\nWhen `path` points to a file, this endpoint returns the raw contents.\nThe response's Content-Type is derived from the filename\nextension (not from the contents). The file contents are not processed\nand no character encoding/recoding is performed and as a result no\ncharacter encoding is included as part of the Content-Type.\n\nThe `Content-Disposition` header will be \"attachment\" to prevent\nbrowsers from running executable files.\n\nIf the file is managed by LFS, then a 301 redirect pointing to\nAtlassian's media services platform is returned.\n\nThe response includes an ETag that is based on the contents of the file\nand its attributes. This means that an empty `__init__.py` always\nreturns the same ETag, regardless on the directory it lives in, or the\ncommit it is on.\n\n#### File meta data\n\nWhen the request for a file path includes the query parameter\n`?format=meta`, instead of returning the file's raw contents, Bitbucket\ninstead returns the JSON object describing the file's properties:\n\n```javascript\n$ curl https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef/tests/__init__.py?format=meta\n{\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/__init__.py\"\n },\n \"meta\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/__init__.py?format=meta\"\n }\n },\n \"path\": \"tests/__init__.py\",\n \"commit\": {\n \"type\": \"commit\",\n \"hash\": \"eefd5ef5d3df01aed629f650959d6706d54cd335\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/commit/eefd5ef5d3df01aed629f650959d6706d54cd335\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/bbql/commits/eefd5ef5d3df01aed629f650959d6706d54cd335\"\n }\n }\n },\n \"attributes\": [],\n \"type\": \"commit_file\",\n \"size\": 0\n}\n```\n\nFile objects contain an `attributes` element that contains a list of\npossible modifiers. Currently defined values are:\n\n* `link` -- indicates that the entry is a symbolic link. The contents\n of the file represent the path the link points to.\n* `executable` -- indicates that the file has the executable bit set.\n* `subrepository` -- indicates that the entry points to a submodule or\n subrepo. The contents of the file is the SHA1 of the repository\n pointed to.\n* `binary` -- indicates whether Bitbucket thinks the file is binary.\n\nThis endpoint can provide an alternative to how a HEAD request can be\nused to check for the existence of a file, or a file's size without\nincurring the overhead of receiving its full contents.\n\n\n#### Directory listings\n\nWhen `path` points to a directory instead of a file, the response is a\npaginated list of directory and file objects in the same order as the\nunderlying SCM system would return them.\n\nFor example:\n\n```javascript\n$ curl https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef/tests\n{\n \"pagelen\": 10,\n \"values\": [\n {\n \"path\": \"tests/test_project\",\n \"type\": \"commit_directory\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/test_project/\"\n },\n \"meta\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/test_project/?format=meta\"\n }\n },\n \"commit\": {\n \"type\": \"commit\",\n \"hash\": \"eefd5ef5d3df01aed629f650959d6706d54cd335\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/commit/eefd5ef5d3df01aed629f650959d6706d54cd335\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/bbql/commits/eefd5ef5d3df01aed629f650959d6706d54cd335\"\n }\n }\n }\n },\n {\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/__init__.py\"\n },\n \"meta\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/__init__.py?format=meta\"\n }\n },\n \"path\": \"tests/__init__.py\",\n \"commit\": {\n \"type\": \"commit\",\n \"hash\": \"eefd5ef5d3df01aed629f650959d6706d54cd335\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/commit/eefd5ef5d3df01aed629f650959d6706d54cd335\"\n },\n \"html\": {\n \"href\": \"https://bitbucket.org/atlassian/bbql/commits/eefd5ef5d3df01aed629f650959d6706d54cd335\"\n }\n }\n },\n \"attributes\": [],\n \"type\": \"commit_file\",\n \"size\": 0\n }\n ],\n \"page\": 1,\n \"size\": 2\n}\n```\n\nWhen listing the contents of the repo's root directory, the use of a\ntrailing slash at the end of the URL is required.\n\nThe response by default is not recursive, meaning that only the direct contents of\na path are returned. The response does not recurse down into\nsubdirectories. In order to \"walk\" the entire directory tree, the\nclient can either parse each response and follow the `self` links of each\n`commit_directory` object, or can specify a `max_depth` to recurse to.\n\nThe max_depth parameter will do a breadth-first search to return the contents of the subdirectories\nup to the depth specified. Breadth-first search was chosen as it leads to the least amount of\nfile system operations for git. If the `max_depth` parameter is specified to be too\nlarge, the call will time out and return a 555.\n\nEach returned object is either a `commit_file`, or a `commit_directory`,\nboth of which contain a `path` element. This path is the absolute path\nfrom the root of the repository. Each object also contains a `commit`\nobject which embeds the commit the file is on. Note that this is merely\nthe commit that was used in the URL. It is *not* the commit that last\nmodified the file.\n\nDirectory objects have 2 representations. Their `self` link returns the\npaginated contents of the directory. The `meta` link on the other hand\nreturns the actual `directory` object itself, e.g.:\n\n```javascript\n{\n \"path\": \"tests/test_project\",\n \"type\": \"commit_directory\",\n \"links\": {\n \"self\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/test_project/\"\n },\n \"meta\": {\n \"href\": \"https://api.bitbucket.org/2.0/repositories/atlassian/bbql/src/eefd5ef5d3df01aed629f650959d6706d54cd335/tests/test_project/?format=meta\"\n }\n },\n \"commit\": { ... }\n}\n```\n\n#### Querying, filtering and sorting\n\nLike most API endpoints, this API supports the Bitbucket\nquerying/filtering syntax and so you could filter a directory listing\nto only include entries that match certain criteria. For instance, to\nlist all binary files over 1kb use the expression:\n\n`size > 1024 and attributes = \"binary\"`\n\nwhich after urlencoding yields the query string:\n\n`?q=size%3E1024+and+attributes%3D%22binary%22`\n\nTo change the ordering of the response, use the `?sort` parameter:\n\n`.../src/eefd5ef/?sort=-size`\n\nSee [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for more\ndetails.", "summary": "Get file or directory contents", "responses": { "200": { "description": "If the path matches a file, then the raw contents of the file are\nreturned. If the `format=meta` query parameter is provided,\na json document containing the file's meta data is\nreturned. If the `format=rendered` query parameter is provided,\nthe contents of the file in HTML-formated rendered markup is returned.\nIf 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", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_treeentries" } } } }, "404": { "description": "If the path or commit in the URL does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "555": { "description": "If the call times out, possibly because the specified recursion depth is too large.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "format", "in": "query", "description": "If 'meta' is provided, returns the (json) meta data for the contents of the file. If 'rendered' is provided, returns the contents of a non-binary file in HTML-formatted rendered markup. The 'rendered' option only supports these filetypes: `.md`, `.markdown`, `.mkd`, `.mkdn`, `.mdown`, `.text`, `.rst`, and `.textile`. Since Git does not generally track what text encoding scheme is used, this endpoint attempts to detect the most appropriate character encoding. While usually correct, determining the character encoding can be ambiguous which in exceptional cases can lead to misinterpretation of the characters. As such, the raw element in the response object should not be treated as equivalent to the file's actual contents.", "required": false, "schema": { "type": "string", "enum": [ "meta", "rendered" ] } }, { "name": "q", "in": "query", "description": "Optional filter expression as per [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "Optional sorting parameter as per [filtering and sorting](/cloud/bitbucket/rest/intro/#sorting-query-results).", "required": false, "schema": { "type": "string" } }, { "name": "max_depth", "in": "query", "description": "If provided, returns the contents of the repository and its subdirectories recursively until the specified max_depth of nested directories. When omitted, this defaults to 1.", "required": false, "schema": { "type": "integer" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "commit", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "path", "in": "path", "description": "Path to the file.", "required": true, "schema": { "type": "string" } }, { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/versions": { "get": { "tags": [ "Issue tracker" ], "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.", "summary": "List defined versions for issues", "responses": { "200": { "description": "The versions that have been defined in the issue tracker.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_versions" } } } }, "404": { "description": "The specified repository does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/versions/{version_id}": { "get": { "tags": [ "Issue tracker" ], "description": "Returns the specified issue tracker version object.", "summary": "Get a defined version for issues", "responses": { "200": { "description": "The specified version object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/version" } } } }, "404": { "description": "The specified repository or version does not exist or does not have the issue tracker enabled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "issue" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "version_id", "in": "path", "description": "The version's id", "required": true, "schema": { "type": "integer" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/repositories/{workspace}/{repo_slug}/watchers": { "get": { "tags": [ "Repositories" ], "description": "Returns a paginated list of all the watchers on the specified\nrepository.", "summary": "List repositories watchers", "responses": { "200": { "description": "A paginated list of all the watchers on the specified repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_accounts" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets": { "get": { "tags": [ "Snippets" ], "description": "Returns all snippets. Like pull requests, repositories and workspaces, the\nfull set of snippets is defined by what the current user has access to.\n\nThis includes all snippets owned by any of the workspaces the user is a member of,\nor snippets by other users that the current user is either watching or has collaborated\non (for instance 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`: created in a workspaces 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.", "summary": "List snippets", "responses": { "200": { "description": "A paginated list of snippets.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_snippets" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "role", "in": "query", "description": "Filter down the result based on the authenticated user's role (`owner`, `contributor`, or `member`).", "required": false, "schema": { "type": "string", "enum": [ "owner", "contributor", "member" ] } } ], "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Snippets" ], "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\": \"git\",\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 members of the workspace).\nThis is 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 workspace members can view the snippet\n\nTo create the snippet under a workspace, just append the workspace ID\nto the URL. See [`/2.0/snippets/{workspace}`](/cloud/bitbucket/rest/api-group-snippets/#api-snippets-workspace-post).", "summary": "Create a snippet", "responses": { "201": { "description": "The newly created snippet object.", "headers": { "Location": { "description": "The URL of the newly created snippet.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/snippet" }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/snippets/{workspace}": { "get": { "tags": [ "Snippets" ], "description": "Identical to [`/snippets`](/cloud/bitbucket/rest/api-group-snippets/#api-snippets-get), except that the result is further filtered\nby the snippet owner and only those that are owned by `{workspace}` are\nreturned.", "summary": "List snippets in a workspace", "responses": { "200": { "description": "A paginated list of snippets.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_snippets" } } } }, "404": { "description": "If the user does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "role", "in": "query", "description": "Filter down the result based on the authenticated user's role (`owner`, `contributor`, or `member`).", "required": false, "schema": { "type": "string", "enum": [ "owner", "contributor", "member" ] } } ], "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Snippets" ], "description": "Identical to [`/snippets`](/cloud/bitbucket/rest/api-group-snippets/#api-snippets-post), except that the new snippet will be\ncreated under the workspace specified in the path parameter\n`{workspace}`.", "summary": "Create a snippet for a workspace", "responses": { "201": { "description": "The newly created snippet object.", "headers": { "Location": { "description": "The URL of the newly created snippet.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have permission to create snippets in the specified workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/snippet" }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}": { "delete": { "tags": [ "Snippets" ], "description": "Deletes a snippet and returns an empty response.", "summary": "Delete a snippet", "responses": { "204": { "description": "If the snippet was deleted successfully." }, "401": { "description": "If the snippet is private and the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If authenticated user does not have permission to delete the private snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Snippets" ], "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 \"nickname\": \"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 \"nickname\": \"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--", "summary": "Get a snippet", "responses": { "200": { "description": "The snippet object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/snippet" } } } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If authenticated user does not have access to the private snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "410": { "description": "If the snippet marked as spam.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Snippets" ], "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.", "summary": "Update a snippet", "responses": { "200": { "description": "The updated snippet object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/snippet" } } } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If authenticated user does not have permission to update the private snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/comments": { "get": { "tags": [ "Snippets" ], "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.", "summary": "List comments on a snippet", "responses": { "200": { "description": "A paginated list of snippet comments, ordered by creation date.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_snippet_comments" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Snippets" ], "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`.", "summary": "Create a comment on a snippet", "responses": { "201": { "description": "The newly created comment.", "headers": { "Location": { "description": "The URL of the new comment", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet_comment" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet_comment" } } }, "description": "The contents of the new comment.", "required": true }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/comments/{comment_id}": { "delete": { "tags": [ "Snippets" ], "description": "Deletes a snippet comment.\n\nComments can only be removed by the comment author, snippet creator, or workspace admin.", "summary": "Delete a comment on a snippet", "responses": { "204": { "description": "Indicates the comment was deleted successfully." }, "403": { "description": "If the authenticated user is not the author of the comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment or the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Snippets" ], "description": "Returns the specific snippet comment.", "summary": "Get a comment on a snippet", "responses": { "200": { "description": "The specified comment.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet_comment" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment or snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Snippets" ], "description": "Updates a comment.\n\nThe only required field in the body is `content.raw`.\n\nComments can only be updated by their author.", "summary": "Update a comment on a snippet", "responses": { "200": { "description": "The updated comment object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet_comment" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the comment or snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet_comment" } } }, "description": "The contents to update the comment to.", "required": true }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "comment_id", "in": "path", "description": "The id of the comment.", "required": true, "schema": { "type": "integer" } }, { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/commits": { "get": { "tags": [ "Snippets" ], "description": "Returns the changes (commits) made on this snippet.", "summary": "List snippet changes", "responses": { "200": { "description": "The paginated list of snippet commits.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_snippet_commit" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/commits/{revision}": { "get": { "tags": [ "Snippets" ], "description": "Returns the changes made on this snippet in this commit.", "summary": "Get a previous snippet change", "responses": { "200": { "description": "The specified snippet commit.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet_commit" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the commit or the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "revision", "in": "path", "description": "The commit's SHA1.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/files/{path}": { "get": { "tags": [ "Snippets" ], "description": "Convenience resource for getting to a snippet's raw files without the\nneed for first having to retrieve the snippet itself and having to pull\nout the versioned file links.", "summary": "Get a snippet's raw file at HEAD", "responses": { "302": { "description": "A redirect to the most recent revision of the specified file.", "headers": { "Location": { "description": "The URL of the most recent file revision.", "schema": { "type": "string" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "path", "in": "path", "description": "Path to the file.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/watch": { "delete": { "tags": [ "Snippets" ], "description": "Used to stop watching a specific snippet. Returns 204 (No Content)\nto indicate success.", "summary": "Stop watching a snippet", "responses": { "204": { "description": "Indicates the user stopped watching the snippet successfully." }, "401": { "description": "If the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Snippets" ], "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.", "summary": "Check if the current user is watching a snippet", "responses": { "204": { "description": "If the authenticated user is watching the snippet." }, "404": { "description": "If the snippet does not exist, or if the authenticated user is not watching the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Snippets" ], "description": "Used to start watching a specific snippet. Returns 204 (No Content).", "summary": "Watch a snippet", "responses": { "204": { "description": "Indicates the authenticated user is now watching the snippet." }, "401": { "description": "If the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/watchers": { "get": { "tags": [ "Snippets" ], "description": "Returns a paginated list of all users watching a specific snippet.", "summary": "List users watching a snippet", "responses": { "200": { "description": "The paginated list of users watching this snippet", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_accounts" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ], "deprecated": true }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/{node_id}": { "delete": { "tags": [ "Snippets" ], "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.", "summary": "Delete a previous revision of a snippet", "responses": { "204": { "description": "If the snippet was deleted successfully." }, "401": { "description": "If the snippet is private and the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If authenticated user does not have permission to delete the private snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "405": { "description": "If `{node_id}` is not the latest revision.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Snippets" ], "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.", "summary": "Get a previous revision of a snippet", "responses": { "200": { "description": "The snippet object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/snippet" } } } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If authenticated user does not have access to the private snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet, or the revision does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Snippets" ], "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.", "summary": "Update a previous revision of a snippet", "responses": { "200": { "description": "The updated snippet object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/snippet" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/snippet" } } } }, "401": { "description": "If the snippet is private and the request was not authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If authenticated user does not have permission to update the private snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet or the revision does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } }, "405": { "description": "If `{node_id}` is not the latest revision.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/related": { "schema": { "$ref": "#/components/schemas/error" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "node_id", "in": "path", "description": "A commit revision (SHA1).", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/{node_id}/files/{path}": { "get": { "tags": [ "Snippets" ], "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.", "summary": "Get a snippet's raw file", "responses": { "200": { "description": "Returns the contents of the specified file.", "headers": { "Content-Type": { "description": "The mime type as derived from the filename", "schema": { "type": "string" } }, "Content-Disposition": { "description": "attachment", "schema": { "type": "string" } } } }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the file or snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "node_id", "in": "path", "description": "A commit revision (SHA1).", "required": true, "schema": { "type": "string" } }, { "name": "path", "in": "path", "description": "Path to the file.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/{revision}/diff": { "get": { "tags": [ "Snippets" ], "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 does not track this, making it hard for\nBitbucket to reliably determine this.", "summary": "Get snippet changes between versions", "responses": { "200": { "description": "The raw diff contents." }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "path", "in": "query", "description": "When used, only one the diff of the specified file will be returned.", "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "revision", "in": "path", "description": "A revspec expression. This can simply be a commit SHA1, a ref name, or a compare expression like `staging..production`.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/snippets/{workspace}/{encoded_id}/{revision}/patch": { "get": { "tags": [ "Snippets" ], "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 does not track this, making it hard for\nBitbucket to reliably determine this.", "summary": "Get snippet patch between versions", "responses": { "200": { "description": "The raw patch contents." }, "403": { "description": "If the authenticated user does not have access to the snippet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the snippet does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "snippet" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "encoded_id", "in": "path", "description": "The snippet id.", "required": true, "schema": { "type": "string" } }, { "name": "revision", "in": "path", "description": "A revspec expression. This can simply be a commit SHA1, a ref name, or a compare expression like `staging..production`.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/teams/{username}/pipelines_config/variables": { "get": { "tags": [ "Pipelines" ], "summary": "List variables for an account", "deprecated": true, "description": "Find account level variables.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "getPipelineVariablesForTeam", "parameters": [ { "name": "username", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The found account level variables.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_variables" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Create a variable for a user", "description": "Create an account level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "createPipelineVariableForTeam", "parameters": [ { "name": "username", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/pipeline_variable2" }, "responses": { "201": { "description": "The created variable.", "headers": { "Location": { "description": "The URL of the newly created pipeline variable.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "A variable with the provided key already exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ] } }, "/teams/{username}/pipelines_config/variables/{variable_uuid}": { "get": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Get a variable for a team", "description": "Retrieve a team level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "getPipelineVariableForTeam", "parameters": [ { "name": "username", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to retrieve.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The variable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account or variable with the given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Update a variable for a team", "description": "Update a team level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "updatePipelineVariableForTeam", "parameters": [ { "name": "username", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/pipeline_variable" }, "responses": { "200": { "description": "The variable was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account or the variable was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ] }, "delete": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Delete a variable for a team", "description": "Delete a team level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "deletePipelineVariableForTeam", "parameters": [ { "name": "username", "description": "The account.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to delete.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The variable was deleted" }, "404": { "description": "The account or the variable with the provided UUID does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ] } }, "/teams/{username}/search/code": { "get": { "tags": [ "Search" ], "summary": "Search for code in a team's repositories", "description": "Search for code in the repositories of the specified team.\n\nNote that searches can match in the file's text (`content_matches`),\nthe path (`path_matches`), or both.\n\nYou can use the same syntax for the search query as in the UI.\nE.g. to search for \"foo\" only within the repository \"demo\",\nuse the query parameter `search_query=foo+repo:demo`.\n\nSimilar to other APIs, you can request more fields using a\n`fields` query parameter. E.g. to get some more information about\nthe repository of matched files, use the query parameter\n`search_query=foo&fields=%2Bvalues.file.commit.repository`\n(the `%2B` is a URL-encoded `+`).\n\nTry `fields=%2Bvalues.*.*.*.*` to get an idea what's possible.\n", "operationId": "searchTeam", "parameters": [ { "name": "username", "in": "path", "description": "The account to search in; either the username or the UUID in curly braces", "required": true, "schema": { "type": "string" } }, { "name": "search_query", "in": "query", "description": "The search query", "required": true, "schema": { "type": "string" } }, { "name": "page", "in": "query", "description": "Which page of the search results to retrieve", "required": false, "schema": { "type": "integer", "format": "int32", "default": 1 } }, { "name": "pagelen", "in": "query", "description": "How many search results to retrieve per page", "required": false, "schema": { "type": "integer", "format": "int32", "default": 10 } } ], "responses": { "200": { "description": "Successful search", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/search_result_page" }, "examples": { "response": { "value": { "size": 1, "page": 1, "pagelen": 10, "query_substituted": false, "values": [ { "type": "code_search_result", "content_match_count": 2, "content_matches": [ { "lines": [ { "line": 2, "segments": [] }, { "line": 3, "segments": [ { "text": "def " }, { "text": "foo", "match": true }, { "text": "():" } ] }, { "line": 4, "segments": [ { "text": " print(\"snek\")" } ] }, { "line": 5, "segments": [] } ] } ], "path_matches": [ { "text": "src/" }, { "text": "foo", "match": true }, { "text": ".py" } ], "file": { "path": "src/foo.py", "type": "commit_file", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/my-workspace/demo/src/ad6964b5fe2880dbd9ddcad1c89000f1dbcbc24b/src/foo.py" } } } } ] } } } } } }, "400": { "description": "If the search request was invalid due to one of the\nfollowing reasons:\n\n* the specified type of target account doesn''t match the actual\naccount type;\n\n* malformed pagination properties;\n\n* missing or malformed search query, in the latter case an error\nkey will be returned in `error.data.key` property.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Search is not enabled for the requested team, navigate to [https://bitbucket.org/search](https://bitbucket.org/search) to turn it on", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "429": { "description": "Too many requests, try again later", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ] } }, "/user": { "get": { "tags": [ "Users" ], "description": "Returns the currently logged in user.", "summary": "Get current user", "responses": { "200": { "description": "The current user.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/account" } } } }, "401": { "description": "When the request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/user/emails": { "get": { "tags": [ "Users" ], "description": "Returns all the authenticated user's email addresses. Both\nconfirmed and unconfirmed.", "summary": "List email addresses for current user", "responses": { "default": { "description": "Unexpected error.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "email" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/user/emails/{email}": { "get": { "tags": [ "Users" ], "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.", "summary": "Get an email address for current user", "responses": { "default": { "description": "Unexpected error.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "email" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "email", "in": "path", "description": "Email address of the user.", "required": true, "schema": { "type": "string" } } ] }, "/user/permissions/repositories": { "get": { "tags": [ "Repositories" ], "description": "Returns an object for each repository the caller has explicit access\nto and their effective permission — the highest level of permission the\ncaller has. This does not return public repositories that the user was\nnot granted any specific permission in, and does not distinguish between\nexplicit and implicit privileges.\n\nPermissions can be:\n\n* `admin`\n* `write`\n* `read`\n\nResults may be further [filtered or sorted](/cloud/bitbucket/rest/intro/#filtering) by\nrepository or permission by adding the following query string\nparameters:\n\n* `q=repository.name=\"geordi\"` or `q=permission>\"read\"`\n* `sort=repository.name`\n\nNote that the query parameter values need to be URL escaped so that `=`\nwould become `%3D`.", "summary": "List repository permissions for a user", "responses": { "200": { "description": "Repository permissions for the repositories a caller has explicit access to.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repository_permissions" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "type": "repository_permission", "user": { "type": "user", "nickname": "evzijst", "display_name": "Erik van Zijst", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}" }, "repository": { "type": "repository", "name": "geordi", "full_name": "bitbucket/geordi", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "permission": "admin" } ], "page": 1, "size": 1 } } } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nName of a response property sort the result by as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "account", "repository" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/user/permissions/workspaces": { "get": { "tags": [ "Workspaces" ], "description": "Returns an object for each workspace the caller is a member of, and\ntheir effective role - the highest level of privilege the caller has.\nIf a user is a member of multiple groups with distinct roles, only the\nhighest level is returned.\n\nPermissions can be:\n\n* `owner`\n* `collaborator`\n* `member`\n\n**The `collaborator` role is being removed from the Bitbucket Cloud API. For more information,\nsee the [deprecation announcement](/cloud/bitbucket/deprecation-notice-collaborator-role/).**\n\n**When you move your administration from Bitbucket Cloud to admin.atlassian.com, the following fields on\n`workspace_membership` will no longer be present: `last_accessed` and `added_on`. See the\n[deprecation announcement](/cloud/bitbucket/announcement-breaking-change-workspace-membership/).**\n\nResults may be further [filtered or sorted](/cloud/bitbucket/rest/intro/#filtering) by\nworkspace or permission by adding the following query string parameters:\n\n* `q=workspace.slug=\"bbworkspace1\"` or `q=permission=\"owner\"`\n* `sort=workspace.slug`\n\nNote that the query parameter values need to be URL escaped so that `=`\nwould become `%3D`.", "summary": "List workspaces for the current user", "responses": { "200": { "description": "All of the workspace memberships for the authenticated user.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_workspace_memberships" }, "examples": { "response": { "value": { "pagelen": 10, "page": 1, "size": 1, "values": [ { "type": "workspace_membership", "permission": "owner", "last_accessed": "2019-03-07T12:35:02.900024+00:00", "added_on": "2018-10-11T17:42:02.961424+00:00", "user": { "type": "user", "uuid": "{470c176d-3574-44ea-bb41-89e8638bcca4}", "nickname": "evzijst", "display_name": "Erik van Zijst" }, "workspace": { "type": "workspace", "uuid": "{a15fb181-db1f-48f7-b41f-e1eff06929d6}", "slug": "bbworkspace1", "name": "Atlassian Bitbucket" } } ] } } } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for details.", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nName of a response property to sort results. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#sorting-query-results)\nfor details.\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/users/{selected_user}": { "get": { "tags": [ "Users" ], "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.\n\nNote that the user object returned by this operation is changing significantly, due to privacy changes.\nSee the [announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-changes-gdpr/#changes-to-bitbucket-user-objects) for details.", "summary": "Get a user", "responses": { "200": { "description": "The user object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/account" } } } }, "404": { "description": "If no user exists for the specified UUID, or if the specified account is a team account, not a personal account.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "selected_user", "in": "path", "description": "This can either be an Atlassian Account ID OR the UUID of the account,\nsurrounded by curly-braces, for example: `{account UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/users/{selected_user}/gpg-keys": { "get": { "tags": [ "GPG" ], "description": "Returns a paginated list of the user's GPG public keys.\nThe `key` and `subkeys` fields can also be requested from the endpoint.\nSee [Partial Responses](/cloud/bitbucket/rest/intro/#partial-response) for more details.", "summary": "List GPG keys", "responses": { "200": { "description": "A list of the GPG keys associated with the account.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_gpg_user_keys" }, "examples": { "response": { "value": { "page": 1, "pagelen": 10, "size": 1, "values": [ { "added_on": "2024-09-24T12:09:33.154081+00:00", "created_on": "2018-03-20T13:09:04.207005+00:00", "expires_on": null, "fingerprint": "h4m26ppxrol7blr7spbc7lhyymokdbnkxd06kzrt", "key_id": "ymokdbnkxd06kzrt", "last_used": "2024-09-25T15:18:05.196003+00:00", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys/H4M26PPXROL7BLR7SPBC7LHYYMOKDBNKXD06KZRT" } }, "name": "Alice's OpenPGP key", "owner": { "display_name": "Mark Adams", "links": { "avatar": { "href": "https://bitbucket.org/account/markadams-atl/avatar/32/" }, "html": { "href": "https://bitbucket.org/markadams-atl/" }, "self": { "href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" } }, "type": "user", "username": "markadams-atl", "nickname": "markadams-atl", "uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" }, "parent_fingerprint": null, "type": "gpg_key" } ] } } } } } }, "403": { "description": "If the specified user's keys are not accessible to the current user" }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "GPG" ], "description": "Adds a new GPG public key to the specified user account and returns the resulting key.\n\nExample:\n\n```\n$ curl -X POST -H \"Content-Type: application/json\" -d\n'{\"key\": \"\"}'\nhttps://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys\n```", "summary": "Add a new GPG key", "responses": { "201": { "description": "The newly created GPG key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GPG_account_key" }, "examples": { "response": { "value": { "added_on": "2024-09-24T12:09:33.154081+00:00", "created_on": "2018-03-20T13:09:04.207005+00:00", "expires_on": null, "fingerprint": "h4m26ppxrol7blr7spbc7lhyymokdbnkxd06kzrt", "key_id": "ymokdbnkxd06kzrt", "last_used": "2024-09-25T15:18:05.196003+00:00", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys/H4M26PPXROL7BLR7SPBC7LHYYMOKDBNKXD06KZRT" } }, "name": "Alice's OpenPGP key", "owner": { "display_name": "Mark Adams", "links": { "avatar": { "href": "https://bitbucket.org/account/markadams-atl/avatar/32/" }, "html": { "href": "https://bitbucket.org/markadams-atl/" }, "self": { "href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" } }, "type": "user", "username": "markadams-atl", "nickname": "markadams-atl", "uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" }, "parent_fingerprint": null, "type": "gpg_key" } } } } } }, "400": { "description": "If the submitted key or related value is invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the current user does not have permission to add a key for the specified user" }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GPG_account_key" } } }, "description": "The new GPG key object." }, "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "selected_user", "in": "path", "description": "This can either be an Atlassian Account ID OR the UUID of the account,\nsurrounded by curly-braces, for example: `{account UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/users/{selected_user}/gpg-keys/{fingerprint}": { "delete": { "tags": [ "GPG" ], "description": "Deletes a specific GPG public key from a user's account.", "summary": "Delete a GPG key", "responses": { "204": { "description": "The key has been deleted" }, "400": { "description": "If the submitted key or related value is invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the current user does not have permission to delete a key for the specified user, or the submitted key is a subkey" }, "404": { "description": "If the specified key does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "GPG" ], "description": "Returns a specific GPG public key belonging to a user.\nThe `key` and `subkeys` fields can also be requested from the endpoint.\nSee [Partial Responses](/cloud/bitbucket/rest/intro/#partial-response) for more details.", "summary": "Get a GPG key", "responses": { "200": { "description": "The specific GPG key matching the user and fingerprint.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GPG_account_key" }, "examples": { "response": { "value": { "added_on": "2024-09-24T12:09:33.154081+00:00", "created_on": "2018-03-20T13:09:04.207005+00:00", "expires_on": null, "fingerprint": "h4m26ppxrol7blr7spbc7lhyymokdbnkxd06kzrt", "key_id": "ymokdbnkxd06kzrt", "last_used": "2024-09-25T15:18:05.196003+00:00", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys/H4M26PPXROL7BLR7SPBC7LHYYMOKDBNKXD06KZRT" } }, "name": "Alice's OpenPGP key", "owner": { "display_name": "Mark Adams", "links": { "avatar": { "href": "https://bitbucket.org/account/markadams-atl/avatar/32/" }, "html": { "href": "https://bitbucket.org/markadams-atl/" }, "self": { "href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" } }, "type": "user", "username": "markadams-atl", "nickname": "markadams-atl", "uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" }, "parent_fingerprint": null, "type": "gpg_key" } } } } } }, "403": { "description": "If the specified user's keys are not accessible to the current user" }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "fingerprint", "in": "path", "description": "A GPG key fingerprint.\n", "required": true, "schema": { "type": "string" } }, { "name": "selected_user", "in": "path", "description": "This can either be an Atlassian Account ID OR the UUID of the account,\nsurrounded by curly-braces, for example: `{account UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/users/{selected_user}/pipelines_config/variables": { "get": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "List variables for a user", "description": "Find user level variables.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "getPipelineVariablesForUser", "parameters": [ { "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The found user level variables.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_variables" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Create a variable for a user", "description": "Create a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "createPipelineVariableForUser", "parameters": [ { "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/pipeline_variable2" }, "responses": { "201": { "description": "The created variable.", "headers": { "Location": { "description": "The URL of the newly created pipeline variable.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "A variable with the provided key already exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ] } }, "/users/{selected_user}/pipelines_config/variables/{variable_uuid}": { "get": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Get a variable for a user", "description": "Retrieve a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "getPipelineVariableForUser", "parameters": [ { "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to retrieve.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The variable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account or variable with the given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Update a variable for a user", "description": "Update a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "updatePipelineVariableForUser", "parameters": [ { "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/pipeline_variable" }, "responses": { "200": { "description": "The variable was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The account or the variable was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ] }, "delete": { "tags": [ "Pipelines" ], "deprecated": true, "summary": "Delete a variable for a user", "description": "Delete an account level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).", "operationId": "deletePipelineVariableForUser", "parameters": [ { "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to delete.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The variable was deleted" }, "404": { "description": "The account or the variable with the provided UUID does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ] } }, "/users/{selected_user}/properties/{app_key}/{property_name}": { "put": { "responses": { "204": { "description": "An empty response." } }, "operationId": "updateUserHostedPropertyValue", "summary": "Update a user application property", "description": "Update an [application property](/cloud/bitbucket/application-properties/) value stored against a user.", "parameters": [ { "required": true, "in": "path", "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/application_property" }, "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "delete": { "responses": { "204": { "description": "An empty response." } }, "operationId": "deleteUserHostedPropertyValue", "summary": "Delete a user application property", "description": "Delete an [application property](/cloud/bitbucket/application-properties/) value stored against a user.", "parameters": [ { "required": true, "in": "path", "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "responses": { "200": { "description": "The value of the property.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/application_property" } } } } }, "operationId": "retrieveUserHostedPropertyValue", "summary": "Get a user application property", "description": "Retrieve an [application property](/cloud/bitbucket/application-properties/) value stored against a user.", "parameters": [ { "required": true, "in": "path", "name": "selected_user", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "app_key", "description": "The key of the Connect app.", "schema": { "type": "string" } }, { "required": true, "in": "path", "name": "property_name", "description": "The name of the property.", "schema": { "type": "string" } } ], "tags": [ "properties" ], "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] } }, "/users/{selected_user}/search/code": { "get": { "tags": [ "Search" ], "summary": "Search for code in a user's repositories", "description": "Search for code in the repositories of the specified user.\n\nNote that searches can match in the file's text (`content_matches`),\nthe path (`path_matches`), or both.\n\nYou can use the same syntax for the search query as in the UI.\nE.g. to search for \"foo\" only within the repository \"demo\",\nuse the query parameter `search_query=foo+repo:demo`.\n\nSimilar to other APIs, you can request more fields using a\n`fields` query parameter. E.g. to get some more information about\nthe repository of matched files, use the query parameter\n`search_query=foo&fields=%2Bvalues.file.commit.repository`\n(the `%2B` is a URL-encoded `+`).\n", "operationId": "searchAccount", "parameters": [ { "name": "selected_user", "in": "path", "description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.", "required": true, "schema": { "type": "string" } }, { "name": "search_query", "in": "query", "description": "The search query", "required": true, "schema": { "type": "string" } }, { "name": "page", "in": "query", "description": "Which page of the search results to retrieve", "required": false, "schema": { "type": "integer", "format": "int32", "default": 1 } }, { "name": "pagelen", "in": "query", "description": "How many search results to retrieve per page", "required": false, "schema": { "type": "integer", "format": "int32", "default": 10 } } ], "responses": { "200": { "description": "Successful search", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/search_result_page" }, "examples": { "response": { "value": { "size": 1, "page": 1, "pagelen": 10, "query_substituted": false, "values": [ { "type": "code_search_result", "content_match_count": 2, "content_matches": [ { "lines": [ { "line": 2, "segments": [] }, { "line": 3, "segments": [ { "text": "def " }, { "text": "foo", "match": true }, { "text": "():" } ] }, { "line": 4, "segments": [ { "text": " print(\"snek\")" } ] }, { "line": 5, "segments": [] } ] } ], "path_matches": [ { "text": "src/" }, { "text": "foo", "match": true }, { "text": ".py" } ], "file": { "path": "src/foo.py", "type": "commit_file", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/my-workspace/demo/src/ad6964b5fe2880dbd9ddcad1c89000f1dbcbc24b/src/foo.py" } } } } ] } } } } } }, "400": { "description": "If the search request was invalid due to one of the\nfollowing reasons:\n\n* the specified type of target account doesn''t match the actual\naccount type;\n\n* malformed pagination properties;\n\n* missing or malformed search query, in the latter case an error\nkey will be returned in `error.data.key` property.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Search is not enabled for the requested user, navigate to [https://bitbucket.org/search](https://bitbucket.org/search) to turn it on", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "429": { "description": "Too many requests, try again later", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ] } }, "/users/{selected_user}/ssh-keys": { "get": { "tags": [ "SSH" ], "description": "Returns a paginated list of the user's SSH public keys.", "summary": "List SSH keys", "responses": { "200": { "description": "A list of the SSH keys associated with the account.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_ssh_user_keys" }, "examples": { "response": { "value": { "page": 1, "pagelen": 10, "size": 1, "values": [ { "comment": "user@myhost", "created_on": "2018-03-14T13:17:05.196003+00:00", "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqP3Cr632C2dNhhgKVcon4ldUSAeKiku2yP9O9/bDtY", "label": "", "last_used": "2018-03-20T13:18:05.196003+00:00", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys/b15b6026-9c02-4626-b4ad-b905f99f763a" } }, "owner": { "display_name": "Mark Adams", "links": { "avatar": { "href": "https://bitbucket.org/account/markadams-atl/avatar/32/" }, "html": { "href": "https://bitbucket.org/markadams-atl/" }, "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}" } }, "type": "user", "username": "markadams-atl", "nickname": "markadams-atl", "uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" }, "type": "ssh_key", "uuid": "{b15b6026-9c02-4626-b4ad-b905f99f763a}" } ] } } } } } }, "403": { "description": "If the specified user's keys are not accessible to the current user" }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "SSH" ], "description": "Adds a new SSH public key to the specified user account and returns the resulting key.\n\nExample:\n\n```\n$ curl -X POST -H \"Content-Type: application/json\" -d '{\"key\": \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqP3Cr632C2dNhhgKVcon4ldUSAeKiku2yP9O9/bDtY user@myhost\"}' https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys\n```", "summary": "Add a new SSH key", "responses": { "201": { "description": "The newly created SSH key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ssh_account_key" }, "examples": { "response": { "value": { "comment": "user@myhost", "created_on": "2018-03-14T13:17:05.196003+00:00", "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqP3Cr632C2dNhhgKVcon4ldUSAeKiku2yP9O9/bDtY", "label": "", "last_used": "2018-03-20T13:18:05.196003+00:00", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys/b15b6026-9c02-4626-b4ad-b905f99f763a" } }, "owner": { "display_name": "Mark Adams", "links": { "avatar": { "href": "https://bitbucket.org/account/markadams-atl/avatar/32/" }, "html": { "href": "https://bitbucket.org/markadams-atl/" }, "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}" } }, "type": "user", "username": "markadams-atl", "nickname": "markadams-atl", "uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" }, "type": "ssh_key", "uuid": "{b15b6026-9c02-4626-b4ad-b905f99f763a}" } } } } } }, "400": { "description": "If the submitted key or related value is invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the current user does not have permission to add a key for the specified user" }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ssh_account_key" } } }, "description": "The new SSH key object. Note that the username property has been deprecated due to [privacy changes](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-changes-gdpr/#removal-of-usernames-from-user-referencing-apis)." }, "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "selected_user", "in": "path", "description": "This can either be an Atlassian Account ID OR the UUID of the account,\nsurrounded by curly-braces, for example: `{account UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/users/{selected_user}/ssh-keys/{key_id}": { "delete": { "tags": [ "SSH" ], "description": "Deletes a specific SSH public key from a user's account.", "summary": "Delete a SSH key", "responses": { "204": { "description": "The key has been deleted" }, "400": { "description": "If the submitted key or related value is invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the current user does not have permission to add a key for the specified user" }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "SSH" ], "description": "Returns a specific SSH public key belonging to a user.", "summary": "Get a SSH key", "responses": { "200": { "description": "The specific SSH key matching the user and UUID", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ssh_account_key" }, "examples": { "response": { "value": { "comment": "user@myhost", "created_on": "2018-03-14T13:17:05.196003+00:00", "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqP3Cr632C2dNhhgKVcon4ldUSAeKiku2yP9O9/bDtY", "label": "", "last_used": "2018-03-20T13:18:05.196003+00:00", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys/b15b6026-9c02-4626-b4ad-b905f99f763a" } }, "owner": { "display_name": "Mark Adams", "links": { "avatar": { "href": "https://bitbucket.org/account/markadams-atl/avatar/32/" }, "html": { "href": "https://bitbucket.org/markadams-atl/" }, "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}" } }, "type": "user", "username": "markadams-atl", "nickname": "markadams-atl", "uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" }, "type": "ssh_key", "uuid": "{b15b6026-9c02-4626-b4ad-b905f99f763a}" } } } } } }, "403": { "description": "If the specified user or key is not accessible to the current user" }, "404": { "description": "If the specified user or key does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "SSH" ], "description": "Updates a specific SSH public key on a user's account\n\nNote: Only the 'comment' field can be updated using this API. To modify the key or comment values, you must delete and add the key again.\n\nExample:\n\n```\n$ curl -X PUT -H \"Content-Type: application/json\" -d '{\"label\": \"Work key\"}' https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys/{b15b6026-9c02-4626-b4ad-b905f99f763a}\n```", "summary": "Update a SSH key", "responses": { "200": { "description": "The newly updated SSH key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ssh_account_key" }, "examples": { "response": { "value": { "comment": "", "created_on": "2018-03-14T13:17:05.196003+00:00", "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqP3Cr632C2dNhhgKVcon4ldUSAeKiku2yP9O9/bDtY", "label": "Work key", "last_used": "2018-03-20T13:18:05.196003+00:00", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys/b15b6026-9c02-4626-b4ad-b905f99f763a" } }, "owner": { "display_name": "Mark Adams", "links": { "avatar": { "href": "https://bitbucket.org/account/markadams-atl/avatar/32/" }, "html": { "href": "https://bitbucket.org/markadams-atl/" }, "self": { "href": "https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}" } }, "type": "user", "username": "markadams-atl", "nickname": "markadams-atl", "uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}" }, "type": "ssh_key", "uuid": "{b15b6026-9c02-4626-b4ad-b905f99f763a}" } } } } } }, "400": { "description": "If the submitted key or related value is invalid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the current user does not have permission to add a key for the specified user" }, "404": { "description": "If the specified user does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ssh_account_key" } } }, "description": "The updated SSH key object" }, "security": [ { "oauth2": [ "account:write" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "key_id", "in": "path", "description": "The SSH key's UUID value.", "required": true, "schema": { "type": "string" } }, { "name": "selected_user", "in": "path", "description": "This can either be an Atlassian Account ID OR the UUID of the account,\nsurrounded by curly-braces, for example: `{account UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces": { "get": { "tags": [ "Workspaces" ], "description": "Returns a list of workspaces accessible by the authenticated user.\n\nResults may be further [filtered or sorted](/cloud/bitbucket/rest/intro/#filtering) by\nworkspace or permission by adding the following query string parameters:\n\n* `q=slug=\"bbworkspace1\"` or `q=is_private=true`\n* `sort=created_on`\n\nNote that the query parameter values need to be URL escaped so that `=`\nwould become `%3D`.\n\n**The `collaborator` role is being removed from the Bitbucket Cloud API. For more information,\nsee the [deprecation announcement](/cloud/bitbucket/deprecation-notice-collaborator-role/).**", "summary": "List workspaces for user", "responses": { "200": { "description": "The list of workspaces accessible by the authenticated user.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_workspaces" }, "examples": { "response": { "value": { "pagelen": 10, "page": 1, "size": 1, "values": [ { "uuid": "{a15fb181-db1f-48f7-b41f-e1eff06929d6}", "links": { "owners": { "href": "https://api.bitbucket.org/2.0/workspaces/bbworkspace1/members?q=permission%3D%22owner%22" }, "self": { "href": "https://api.bitbucket.org/2.0/workspaces/bbworkspace1" }, "repositories": { "href": "https://api.bitbucket.org/2.0/repositories/bbworkspace1" }, "snippets": { "href": "https://api.bitbucket.org/2.0/snippets/bbworkspace1" }, "html": { "href": "https://bitbucket.org/bbworkspace1/" }, "avatar": { "href": "https://bitbucket.org/workspaces/bbworkspace1/avatar/?ts=1543465801" }, "members": { "href": "https://api.bitbucket.org/2.0/workspaces/bbworkspace1/members" }, "projects": { "href": "https://api.bitbucket.org/2.0/workspaces/bbworkspace1/projects" } }, "created_on": "2018-11-14T19:15:05.058566+00:00", "type": "workspace", "slug": "bbworkspace1", "is_private": true, "name": "Atlassian Bitbucket" } ] } } } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "role", "in": "query", "description": "\n Filters the workspaces based on the authenticated user's role on each workspace.\n\n * **member**: returns a list of all the workspaces which the caller is a member of\n at least one workspace group or repository\n * **collaborator**: returns a list of workspaces which the caller has write access\n to at least one repository in the workspace\n * **owner**: returns a list of workspaces which the caller has administrator access\n ", "required": false, "schema": { "type": "string", "enum": [ "owner", "collaborator", "member" ] } }, { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for details.", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nName of a response property to sort results. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#sorting-query-results)\nfor details.\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [] }, "/workspaces/{workspace}": { "get": { "tags": [ "Workspaces" ], "description": "Returns the requested workspace.", "summary": "Get a workspace", "responses": { "200": { "description": "The workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/workspace" } } } }, "404": { "description": "If no workspace exists for the specified name or UUID.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/hooks": { "get": { "tags": [ "Workspaces", "Webhooks" ], "description": "Returns a paginated list of webhooks installed on this workspace.", "summary": "List webhooks for a workspace", "responses": { "200": { "description": "The paginated list of installed webhooks.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_webhook_subscriptions" } } } }, "403": { "description": "If the authenticated user is not an owner on the specified workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified workspace does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Workspaces", "Webhooks" ], "description": "Creates a new webhook on the specified workspace.\n\nWorkspace webhooks are fired for events from all repositories contained\nby that workspace.\n\nExample:\n\n```\n$ curl -X POST -u credentials -H 'Content-Type: application/json'\n https://api.bitbucket.org/2.0/workspaces/my-workspace/hooks\n -d '\n {\n \"description\": \"Webhook Description\",\n \"url\": \"https://example.com/\",\n \"active\": true,\n \"secret\": \"this is a really bad secret\",\n \"events\": [\n \"repo:push\",\n \"issue:created\",\n \"issue:updated\"\n ]\n }'\n```\n\nWhen the `secret` is provided it will be used as the key to generate a HMAC\ndigest value sent in the `X-Hub-Signature` header at delivery time. Passing\na `null` or empty `secret` or not passing a `secret` will leave the webhook's\nsecret unset. Bitbucket only generates the `X-Hub-Signature` when the webhook's\nsecret is set.\n\nThis 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\nThe `url` must properly resolve and cannot be an internal, non-routed address.\n\nOnly workspace owners can install webhooks on workspaces.", "summary": "Create a webhook for a workspace", "responses": { "201": { "description": "If the webhook was registered successfully.", "headers": { "Location": { "description": "The URL of new newly created webhook.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/webhook_subscription" } } } }, "403": { "description": "If the authenticated user does not have permission to install webhooks on the specified workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified workspace does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/hooks/{uid}": { "delete": { "tags": [ "Workspaces", "Webhooks" ], "description": "Deletes the specified webhook subscription from the given workspace.", "summary": "Delete a webhook for a workspace", "responses": { "204": { "description": "When the webhook was deleted successfully" }, "403": { "description": "If the authenticated user does not have permission to delete the webhook.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the webhook or workspace does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Workspaces", "Webhooks" ], "description": "Returns the webhook with the specified id installed on the given\nworkspace.", "summary": "Get a webhook for a workspace", "responses": { "200": { "description": "The webhook subscription object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/webhook_subscription" } } } }, "404": { "description": "If the webhook or workspace does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "put": { "tags": [ "Workspaces", "Webhooks" ], "description": "Updates the specified webhook subscription.\n\nThe following properties can be mutated:\n\n* `description`\n* `url`\n* `secret`\n* `active`\n* `events`\n\nThe hook's secret is used as a key to generate the HMAC hex digest sent in the\n`X-Hub-Signature` header at delivery time. This signature is only generated\nwhen the hook has a secret.\n\nSet the hook's secret by passing the new value in the `secret` field. Passing a\n`null` value in the `secret` field will remove the secret from the hook. The\nhook's secret can be left unchanged by not passing the `secret` field in the\nrequest.", "summary": "Update a webhook for a workspace", "responses": { "200": { "description": "The webhook subscription object.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/webhook_subscription" } } } }, "403": { "description": "If the authenticated user does not have permission to update the webhook.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the webhook or workspace does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "webhook" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "uid", "in": "path", "description": "Installed webhook's ID", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/members": { "get": { "tags": [ "Workspaces" ], "description": "Returns all members of the requested workspace.\n\nThis endpoint additionally supports [filtering](/cloud/bitbucket/rest/intro/#filtering) by\nemail address, if called by a workspace administrator, integration or workspace access\ntoken. This is done by adding the following query string parameter:\n\n* `q=user.email IN (\"user1@org.com\",\"user2@org.com\")`\n\nWhen filtering by email, you can query up to 90 addresses at a time.\nNote that the query parameter values need to be URL escaped, so the final query string\nshould be:\n\n* `q=user.email%20IN%20(%22user1@org.com%22,%22user2@org.com%22)`\n\nEmail addresses that you filter by (and only these email addresses) can be included in the\nresponse using the `fields` query parameter:\n\n* `&fields=+values.user.email` - add the `email` field to the default `user` response object\n* `&fields=values.user.email,values.user.account_id` - only return user email addresses and\naccount IDs\n\nOnce again, all query parameter values must be URL escaped.", "summary": "List users in a workspace", "responses": { "200": { "description": "The list of users that are part of a workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_workspace_memberships" } } } }, "400": { "description": "When more than 90 emails were provided when querying by email.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:workspace:bitbucket" ] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/members/{member}": { "get": { "tags": [ "Workspaces" ], "description": "Returns the workspace membership, which includes\na `User` object for the member and a `Workspace` object\nfor the requested workspace.", "summary": "Get user membership for a workspace", "responses": { "200": { "description": "The user that is part of a workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/workspace_membership" } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "A workspace cannot be found, or a user cannot be found, or the user is not a a member of the workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:workspace:bitbucket" ] } ] }, "parameters": [ { "name": "member", "in": "path", "description": "Member's UUID or Atlassian ID.", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/permissions": { "get": { "tags": [ "Workspaces" ], "description": "Returns the list of members in a workspace\nand their permission levels.\nPermission can be:\n* `owner`\n* `collaborator`\n* `member`\n\n**The `collaborator` role is being removed from the Bitbucket Cloud API. For more information,\nsee the [deprecation announcement](/cloud/bitbucket/deprecation-notice-collaborator-role/).**\n\n**When you move your administration from Bitbucket Cloud to admin.atlassian.com, the following fields on\n`workspace_membership` will no longer be present: `last_accessed` and `added_on`. See the\n[deprecation announcement](/cloud/bitbucket/announcement-breaking-change-workspace-membership/).**\n\nResults may be further [filtered](/cloud/bitbucket/rest/intro/#filtering) by\npermission by adding the following query string parameters:\n\n* `q=permission=\"owner\"`", "summary": "List user permissions in a workspace", "responses": { "200": { "description": "The list of users that are part of a workspace, along with their permission.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_workspace_memberships" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "permission": "owner", "type": "workspace_membership", "user": { "type": "user", "uuid": "{470c176d-3574-44ea-bb41-89e8638bcca4}", "display_name": "Erik van Zijst" }, "workspace": { "type": "workspace", "uuid": "{a15fb181-db1f-48f7-b41f-e1eff06929d6}", "slug": "bbworkspace1", "name": "Atlassian Bitbucket" } }, { "permission": "member", "type": "workspace_membership", "user": { "type": "user", "nickname": "seanaty", "display_name": "Sean Conaty", "uuid": "{504c3b62-8120-4f0c-a7bc-87800b9d6f70}" }, "workspace": { "type": "workspace", "uuid": "{a15fb181-db1f-48f7-b41f-e1eff06929d6}", "slug": "bbworkspace1", "name": "Atlassian Bitbucket" } } ], "page": 1, "size": 2 } } } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:workspace:bitbucket" ] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/permissions/repositories": { "get": { "tags": [ "Workspaces" ], "description": "Returns an object for each repository permission for all of a\nworkspace's repositories.\n\nPermissions returned are effective permissions: the highest level of\npermission the user has. This does not distinguish between direct and\nindirect (group) privileges.\n\nOnly users with admin permission for the team may access this resource.\n\nPermissions can be:\n\n* `admin`\n* `write`\n* `read`\n\nResults may be further [filtered or sorted](/cloud/bitbucket/rest/intro/#filtering)\nby repository, user, or permission by adding the following query string\nparameters:\n\n* `q=repository.name=\"geordi\"` or `q=permission>\"read\"`\n* `sort=user.display_name`\n\nNote that the query parameter values need to be URL escaped so that `=`\nwould become `%3D`.", "summary": "List all repository permissions for a workspace", "responses": { "200": { "description": "List of workspace's repository permissions.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repository_permissions" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "type": "repository_permission", "user": { "type": "user", "display_name": "Erik van Zijst", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}" }, "repository": { "type": "repository", "name": "geordi", "full_name": "atlassian_tutorial/geordi", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "permission": "admin" }, { "type": "repository_permission", "user": { "type": "user", "display_name": "Sean Conaty", "uuid": "{504c3b62-8120-4f0c-a7bc-87800b9d6f70}" }, "repository": { "type": "repository", "name": "geordi", "full_name": "atlassian_tutorial/geordi", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "permission": "write" }, { "type": "repository_permission", "user": { "type": "user", "display_name": "Jeff Zeng", "uuid": "{47f92a9a-c3a3-4d0b-bc4e-782a969c5c72}" }, "repository": { "type": "repository", "name": "whee", "full_name": "atlassian_tutorial/whee", "uuid": "{30ba25e9-51ff-4555-8dd0-fc7ee2fa0895}" }, "permission": "admin" } ], "page": 1, "size": 3 } } } } } }, "403": { "description": "The requesting user isn't an admin of the workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nName of a response property sort the result by as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#sorting-query-results).\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "account" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/permissions/repositories/{repo_slug}": { "get": { "tags": [ "Workspaces" ], "description": "Returns an object for the repository permission of each user in the\nrequested repository.\n\nPermissions returned are effective permissions: the highest level of\npermission the user has. This does not distinguish between direct and\nindirect (group) privileges.\n\nOnly users with admin permission for the repository may access this resource.\n\nPermissions can be:\n\n* `admin`\n* `write`\n* `read`\n\nResults may be further [filtered or sorted](/cloud/bitbucket/rest/intro/#filtering)\nby user, or permission by adding the following query string parameters:\n\n* `q=permission>\"read\"`\n* `sort=user.display_name`\n\nNote that the query parameter values need to be URL escaped so that `=`\nwould become `%3D`.", "summary": "List a repository permissions for a workspace", "responses": { "200": { "description": "The repository permission for all users in this repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_repository_permissions" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "type": "repository_permission", "user": { "type": "user", "display_name": "Erik van Zijst", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}" }, "repository": { "type": "repository", "name": "geordi", "full_name": "atlassian_tutorial/geordi", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "permission": "admin" }, { "type": "repository_permission", "user": { "type": "user", "display_name": "Sean Conaty", "uuid": "{504c3b62-8120-4f0c-a7bc-87800b9d6f70}" }, "repository": { "type": "repository", "name": "geordi", "full_name": "atlassian_tutorial/geordi", "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}" }, "permission": "write" } ], "page": 1, "size": 2 } } } } } }, "403": { "description": "The requesting user isn't an admin of the repository.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "q", "in": "query", "description": "\nQuery string to narrow down the response as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering).", "required": false, "schema": { "type": "string" } }, { "name": "sort", "in": "query", "description": "\nName of a response property sort the result by as per\n[filtering and sorting](/cloud/bitbucket/rest/intro/#sorting-query-results).\n", "required": false, "schema": { "type": "string" } } ], "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "repo_slug", "in": "path", "description": "This can either be the repository slug or the UUID of the repository,\nsurrounded by curly-braces, for example: `{repository UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/pipelines-config/identity/oidc/.well-known/openid-configuration": { "get": { "tags": [ "Pipelines" ], "summary": "Get OpenID configuration for OIDC in Pipelines", "description": "This is part of OpenID Connect for Pipelines, see https://support.atlassian.com/bitbucket-cloud/docs/integrate-pipelines-with-resource-servers-using-oidc/", "operationId": "getOIDCConfiguration", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The OpenID configuration" }, "404": { "description": "The workspace was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] } }, "/workspaces/{workspace}/pipelines-config/identity/oidc/keys.json": { "get": { "tags": [ "Pipelines" ], "summary": "Get keys for OIDC in Pipelines", "description": "This is part of OpenID Connect for Pipelines, see https://support.atlassian.com/bitbucket-cloud/docs/integrate-pipelines-with-resource-servers-using-oidc/", "operationId": "getOIDCKeys", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The keys in JSON web key format" }, "404": { "description": "The workspace was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [] }, { "basic": [] }, { "api_key": [] } ] } }, "/workspaces/{workspace}/pipelines-config/variables": { "get": { "tags": [ "Pipelines" ], "summary": "List variables for a workspace", "description": "Find workspace level variables.", "operationId": "getPipelineVariablesForWorkspace", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The found workspace level variables.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pipeline_variables" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "post": { "tags": [ "Pipelines" ], "summary": "Create a variable for a workspace", "description": "Create a workspace level variable.", "operationId": "createPipelineVariableForWorkspace", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/pipeline_variable2" }, "responses": { "201": { "description": "The created variable.", "headers": { "Location": { "description": "The URL of the newly created pipeline variable.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The workspace does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "409": { "description": "A variable with the provided key already exists.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/workspaces/{workspace}/pipelines-config/variables/{variable_uuid}": { "get": { "tags": [ "Pipelines" ], "summary": "Get variable for a workspace", "description": "Retrieve a workspace level variable.", "operationId": "getPipelineVariableForWorkspace", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to retrieve.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The variable.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The workspace or variable with the given UUID was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pipeline:bitbucket" ] } ] }, "put": { "tags": [ "Pipelines" ], "summary": "Update variable for a workspace", "description": "Update a workspace level variable.", "operationId": "updatePipelineVariableForWorkspace", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable.", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "$ref": "#/components/requestBodies/pipeline_variable" }, "responses": { "200": { "description": "The variable was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } } }, "404": { "description": "The workspace or the variable was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] }, "delete": { "tags": [ "Pipelines" ], "summary": "Delete a variable for a workspace", "description": "Delete a workspace level variable.", "operationId": "deletePipelineVariableForWorkspace", "parameters": [ { "name": "workspace", "description": "This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example `{workspace UUID}`.", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "variable_uuid", "description": "The UUID of the variable to delete.", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "The variable was deleted" }, "404": { "description": "The workspace or the variable with the provided UUID does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "pipeline:variable" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:pipeline:bitbucket" ] } ] } }, "/workspaces/{workspace}/projects": { "get": { "tags": [ "Workspaces" ], "description": "Returns the list of projects in this workspace.", "summary": "List projects in a workspace", "responses": { "200": { "description": "The list of projects in this workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_projects" } } } }, "404": { "description": "A workspace doesn't exist at this location.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:project:bitbucket" ] } ] }, "post": { "tags": [ "Projects" ], "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/workspaces/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/workspaces/teams-in-space/projects/ | jq .\n{\n // Serialized project document\n}\n```", "summary": "Create a project in a workspace", "responses": { "201": { "description": "A new project has been created.", "headers": { "Location": { "description": "The location of the newly created project", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project" } } } }, "403": { "description": "The user requesting to create a project does not have the necessary permissions.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "A workspace doesn't exist at this location.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/project" }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:project:bitbucket" ] } ] }, "parameters": [ { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}": { "delete": { "tags": [ "Projects" ], "description": "Deletes this project. This is an irreversible operation.\n\nYou cannot delete a project that still contains repositories.\nTo delete the project, [delete](/cloud/bitbucket/rest/api-group-repositories/#api-repositories-workspace-repo-slug-delete)\nor transfer the repositories first.\n\nExample:\n```\n$ curl -X DELETE https://api.bitbucket.org/2.0/workspaces/bbworkspace1/projects/PROJ\n```", "summary": "Delete a project for a workspace", "responses": { "204": { "description": "Successful deletion." }, "403": { "description": "The requesting user isn't authorized to delete the project or the project isn't empty.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "A project isn't hosted at this location.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:project:bitbucket" ] } ] }, "get": { "tags": [ "Projects", "Workspaces" ], "description": "Returns the requested project.", "summary": "Get a project for a workspace", "responses": { "200": { "description": "The project that is part of a workspace.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project" } } } }, "401": { "description": "The request wasn't authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't authorized to access the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "A project isn't hosted at this location.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:project:bitbucket" ] } ] }, "put": { "tags": [ "Projects" ], "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.", "summary": "Update a project for a workspace", "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.", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project" } } } }, "201": { "description": "A new project has been created.", "headers": { "Location": { "description": "The location of the newly created project", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project" } } } }, "403": { "description": "The requesting user isn't authorized to update or create the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "A workspace 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.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/project" }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:project:bitbucket" ] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual `key` assigned\nto the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/branching-model": { "get": { "tags": [ "Branching model" ], "description": "Return the branching model set at the project level. This view is\nread-only. The branching model settings can be changed using the\n[settings](#api-workspaces-workspace-projects-project-key-branching-model-settings-get)\nAPI.\n\nThe returned object:\n\n1. Always has a `development` property. `development.name` is\n the user-specified branch that can be inherited by an individual repository's\n branching model.\n2. Might have a `production` property. `production` will not\n be present when `production` is disabled.\n `production.name` is the user-specified branch that can be\n inherited by an individual repository's branching model.\n3. Always has a `branch_types` array which contains all enabled branch\n types.", "summary": "Get the branching model for a project", "responses": { "200": { "description": "The branching model object", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project_branching_model" }, "examples": { "response": { "value": { "development": { "name": "master", "use_mainbranch": true }, "production": { "name": "production", "use_mainbranch": false }, "branch_types": [ { "kind": "release", "prefix": "release/" }, { "kind": "hotfix", "prefix": "hotfix/" }, { "kind": "feature", "prefix": "feature/" }, { "kind": "bugfix", "prefix": "bugfix/" } ], "type": "project_branching_model", "links": { "self": { "href": "https://api.bitbucket.org/.../branching-model" } } } } } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have read access to the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the project does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual `key` assigned\nto the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/branching-model/settings": { "get": { "tags": [ "Branching model" ], "description": "Return the branching model configuration for a project. The returned\nobject:\n\n1. Always has a `development` property for the development branch.\n2. Always a `production` property for the production branch. The\n production branch can be disabled.\n3. The `branch_types` contains all the branch types.\n\n\nThis is the raw configuration for the branching model. A client\nwishing to see the branching model with its actual current branches may find the\n[active model API](#api-workspaces-workspace-projects-project-key-branching-model-get)\nmore useful.", "summary": "Get the branching model config for a project", "responses": { "200": { "description": "The branching model configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branching_model_settings" }, "examples": { "response": { "value": { "development": { "name": "null", "use_mainbranch": true }, "production": { "name": "production", "use_mainbranch": false, "enabled": false }, "branch_types": [ { "kind": "release", "enabled": true, "prefix": "release/" }, { "kind": "hotfix", "enabled": true, "prefix": "hotfix/" }, { "kind": "feature", "enabled": true, "prefix": "feature/" }, { "kind": "bugfix", "enabled": false, "prefix": "bugfix/" } ], "type": "branching_model_settings", "links": { "self": { "href": "https://api.bitbucket.org/.../branching-model/settings" } } } } } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the project does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:project:bitbucket" ] } ] }, "put": { "tags": [ "Branching model" ], "description": "Update the branching model configuration for a project.\n\nThe `development` branch can be configured to a specific branch or to\ntrack the main branch. Any branch name can be supplied, but will only\nsuccessfully be applied to a repository via inheritance if that branch\nexists for that repository. Only the passed properties will be updated. The\nproperties not passed will be left unchanged. A request without a\n`development` property will leave the development branch unchanged.\n\nThe `production` branch can be a specific branch, the main\nbranch or disabled. Any branch name can be supplied, but will only\nsuccessfully be applied to a repository via inheritance if that branch\nexists for that repository. The `enabled` property can be used to enable (`true`)\nor disable (`false`) it. Only the passed properties will be updated. The\nproperties not passed will be left unchanged. A request without a\n`production` property will leave the production branch unchanged.\n\nThe `branch_types` property contains the branch types to be updated.\nOnly the branch types passed will be updated. All updates will be\nrejected if it would leave the branching model in an invalid state.\nFor branch types this means that:\n\n1. The prefixes for all enabled branch types are valid. For example,\n it is not possible to use '*' inside a Git prefix.\n2. A prefix of an enabled branch type must not be a prefix of another\n enabled branch type. This is to ensure that a branch can be easily\n classified by its prefix unambiguously.\n\nIt is possible to store an invalid prefix if that branch type would be\nleft disabled. Only the passed properties will be updated. The\nproperties not passed will be left unchanged. Each branch type must\nhave a `kind` property to identify it.", "summary": "Update the branching model config for a project", "responses": { "200": { "description": "The updated branching model configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/branching_model_settings" }, "examples": { "response": { "value": { "development": { "use_mainbranch": true }, "production": { "enabled": true, "use_mainbranch": false, "name": "production" }, "branch_types": [ { "kind": "bugfix", "enabled": true, "prefix": "bugfix/" }, { "kind": "feature", "enabled": true, "prefix": "feature/" }, { "kind": "hotfix", "prefix": "hotfix/" }, { "kind": "release", "enabled": false } ] } } } } } }, "400": { "description": "If the request contains an invalid branching model configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "If the request was not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the project does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:project:bitbucket" ] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual `key` assigned\nto the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/default-reviewers": { "get": { "tags": [ "Projects" ], "description": "Return a list of all default reviewers for a project. This is a list of users that will be added as default\nreviewers to pull requests for any repository within the project.", "summary": "List the default reviewers in a project", "responses": { "200": { "description": "The list of project default reviewers", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_default_reviewer_and_type" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "user": { "display_name": "Davis Lee", "uuid": "{f0e0e8e9-66c1-4b85-a784-44a9eb9ef1a6}" }, "reviewer_type": "project", "type": "default_reviewer" }, { "user": { "display_name": "Jorge Rodriguez", "uuid": "{1aa43376-260d-4a0b-9660-f62672b9655d}" }, "reviewer_type": "project", "type": "default_reviewer" } ], "page": 1, "size": 2 } } } } } }, "403": { "description": "If the authenticated user does not have admin access to the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the workspace or project does not exist at this location", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual `key` assigned\nto the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/default-reviewers/{selected_user}": { "delete": { "tags": [ "Projects" ], "description": "Removes a default reviewer from the project.\n\nExample:\n```\n$ curl https://api.bitbucket.org/2.0/.../default-reviewers/%7Bf0e0e8e9-66c1-4b85-a784-44a9eb9ef1a6%7D\n\nHTTP/1.1 204\n```", "summary": "Remove the specific user from the project's default reviewers", "responses": { "204": { "description": "The specified user was removed from the list of project default reviewers" }, "400": { "description": "If the specified user is not a default reviewer for the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified user, project, or workspace does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:project:bitbucket" ] } ] }, "get": { "tags": [ "Projects" ], "description": "Returns the specified default reviewer.", "summary": "Get a default reviewer", "responses": { "200": { "description": "The specified user that is a default reviewer", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/user" }, "examples": { "response": { "value": { "display_name": "Davis Lee", "type": "user", "uuid": "{f0e0e8e9-66c1-4b85-a784-44a9eb9ef1a6}" } } } } } }, "400": { "description": "If the specified user is not a default reviewer for the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified user, project, or workspace does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:pullrequest:bitbucket" ] } ] }, "put": { "tags": [ "Projects" ], "description": "Adds the specified user to the project's list of default reviewers. The method is\nidempotent. Accepts an optional body containing the `uuid` of the user to be added.", "summary": "Add the specific user as a default reviewer for the project", "responses": { "200": { "description": "The specified user was added as a project default reviewer", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/user" }, "examples": { "response": { "value": { "display_name": "Yaniv Sagy", "links": { "self": { "href": "https://api.bitbucket.org/2.0/users/%7Bdd5db7f2-6389-458d-a62a-716773910b7a%7D" }, "avatar": { "href": "https://secure.gravatar.com/avatar/YS-2.png" }, "html": { "href": "https://api.bitbucket.org/%7Bdd5db7f2-6389-458d-a62a-716773910b7a%7D/" } }, "type": "user", "uuid": "{dd5db7f2-6389-458d-a62a-716773910b7a}", "account_id": "712020:4efe52fa-b4b4-475b-9eb0-c0a23b7eb194", "nickname": "Yaniv Sagy" } } } } } }, "400": { "description": "If the specified user cannot be added as a default reviewer for the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the authenticated user does not have admin access to the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified user, project, or workspace does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "admin:project:bitbucket" ] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This can either be the actual `key` assigned\nto the project or the `UUID` (surrounded by curly-braces (`{}`)).\n", "required": true, "schema": { "type": "string" } }, { "name": "selected_user", "in": "path", "description": "This can either be the username or the UUID of the default reviewer,\nsurrounded by curly-braces, for example: `{account UUID}`.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/deploy-keys": { "get": { "tags": [ "Deployments" ], "description": "Returns all deploy keys belonging to a project.", "summary": "List project deploy keys", "responses": { "200": { "description": "Deploy keys matching the project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_project_deploy_keys" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "comment": "thakseth@C02W454JHTD8", "last_used": null, "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/standard/projects/TEST_PROJECT/deploy-keys/1234" } }, "label": "test", "project": { "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/standard/projects/TEST_PROJECT" } }, "type": "project", "name": "cooperative standard", "key": "TEST_PROJECT", "uuid": "{3b3e510b-7f2b-414d-a2b7-76c4e405c1c0}" }, "created_on": "2021-07-28T21:20:19.491721+00:00", "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDX5yfMOEw6HG9jKTYTisbmDTJ4MCUTSVGr5e4OWvY3UuI2A6F8SdzQqa2f5BABA/4g5Sk5awJrYHlNu3EzV1V2I44tR3A4fnZAG71ZKyDPi1wvdO7UYmFgxV/Vd18H9QZFFjICGDM7W0PT2mI0kON/jN3qNWi+GiB/xgaeQKSqynysdysDp8lnnI/8Sh3ikURP9UP83ShRCpAXszOUNaa+UUlcYQYBDLIGowsg51c4PCkC3DNhAMxppkNRKoSOWwyl+oRVXHSDylkiJSBHW3HH4Q6WHieD54kGrjbhWBKdnnxKX7QAAZBDseY+t01N36m6/ljvXSUEcBWtHxBYye0r", "type": "project_deploy_key", "id": 1234 } ], "page": 1, "size": 1 } } } } } }, "403": { "description": "If the specified workspace or project is not accessible to the current user", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified workspace or project does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project", "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "post": { "tags": [ "Deployments" ], "description": "Create a new deploy key in a project.\n\nExample:\n```\n$ curl -X POST \\\n-H \"Authorization \" \\\n-H \"Content-type: application/json\" \\\nhttps://api.bitbucket.org/2.0/workspaces/standard/projects/TEST_PROJECT/deploy-keys/ -d \\\n'{\n \"key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5 mleu@C02W454JHTD8\",\n \"label\": \"mydeploykey\"\n}'\n```", "summary": "Create a project deploy key", "responses": { "200": { "description": "The project deploy key that was created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project_deploy_key" }, "examples": { "response": { "value": { "comment": "mleu@C02W454JHTD8", "last_used": null, "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/standard/projects/TEST_PROJECT/deploy-keys/5/" } }, "label": "myprojectkey", "project": { "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/standard/projects/TEST_PROJECT" } }, "type": "project", "name": "cooperative standard", "key": "TEST_PROJECT", "uuid": "{3b3e510b-7f2b-414d-a2b7-76c4e405c1c0}" }, "created_on": "2021-08-10T05:28:00.570859+00:00", "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAK/b1cHHDr/TEV1JGQl+WjCwStKG6Bhrv0rFpEsYlyTBm1fzN0VOJJYn4ZOPCPJwqse6fGbXntEs+BbXiptR+++HycVgl65TMR0b5ul5AgwrVdZdT7qjCOCgaSV74/9xlHDK8oqgGnfA7ZoBBU+qpVyaloSjBdJfLtPY/xqj4yHnXKYzrtn/uFc4Kp9Tb7PUg9Io3qohSTGJGVHnsVblq/rToJG7L5xIo0OxK0SJSQ5vuId93ZuFZrCNMXj8JDHZeSEtjJzpRCBEXHxpOPhAcbm4MzULgkFHhAVgp4JbkrT99/wpvZ7r9AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5", "type": "project_deploy_key", "id": 5 } } } } } }, "400": { "description": "Invalid deploy key inputs", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "If the specified workspace or project is not accessible to the current user", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified workspace or project does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project", "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual `key` assigned\nto the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/deploy-keys/{key_id}": { "delete": { "tags": [ "Deployments" ], "description": "This deletes a deploy key from a project.", "summary": "Delete a deploy key from a project", "responses": { "204": { "description": "The project deploy key has been deleted" }, "403": { "description": "If the current user does not have permission to delete a key for the specified project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified workspace, project, or project deploy key does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project", "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Deployments" ], "description": "Returns the deploy key belonging to a specific key ID.", "summary": "Get a project deploy key", "responses": { "200": { "description": "Project deploy key matching the key ID", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project_deploy_key" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "comment": "thakseth@C02W454JHTD8", "last_used": null, "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/standard/projects/TEST_PROJECT/deploy-keys/1234" } }, "label": "test", "project": { "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/standard/projects/TEST_PROJECT" } }, "type": "project", "name": "cooperative standard", "key": "TEST_PROJECT", "uuid": "{3b3e510b-7f2b-414d-a2b7-76c4e405c1c0}" }, "created_on": "2021-07-28T21:20:19.491721+00:00", "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDX5yfMOEw6HG9jKTYTisbmDTJ4MCUTSVGr5e4OWvY3UuI2A6F8SdzQqa2f5BABA/4g5Sk5awJrYHlNu3EzV1V2I44tR3A4fnZAG71ZKyDPi1wvdO7UYmFgxV/Vd18H9QZFFjICGDM7W0PT2mI0kON/jN3qNWi+GiB/xgaeQKSqynysdysDp8lnnI/8Sh3ikURP9UP83ShRCpAXszOUNaa+UUlcYQYBDLIGowsg51c4PCkC3DNhAMxppkNRKoSOWwyl+oRVXHSDylkiJSBHW3HH4Q6WHieD54kGrjbhWBKdnnxKX7QAAZBDseY+t01N36m6/ljvXSUEcBWtHxBYye0r", "type": "project_deploy_key", "id": 1234 } ] } } } } } }, "403": { "description": "If the specified workspace or project is not accessible to the current user", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "If the specified workspace or project does not exist", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project", "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "key_id", "in": "path", "description": "The key ID matching the project deploy key.", "required": true, "schema": { "type": "string" } }, { "name": "project_key", "in": "path", "description": "The project in question. This is the actual `key` assigned\nto the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/permissions-config/groups": { "get": { "tags": [ "Projects" ], "description": "Returns a paginated list of explicit group permissions for the given project.\nThis endpoint does not support BBQL features.", "summary": "List explicit group permissions for a project", "responses": { "200": { "description": "Paginated list of project group permissions", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_project_group_permissions" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "type": "project_group_permission", "group": { "type": "group", "name": "Administrators", "slug": "administrators" }, "permission": "admin", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/groups/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" } } }, { "type": "project_group_permission", "group": { "type": "group", "name": "Developers", "slug": "developers" }, "permission": "write", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/groups/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324c" } } } ], "page": 1, "size": 2 } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The user doesn't have admin access to the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or both of the workspace and project don't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:project:bitbucket" ] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual key assigned to the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/permissions-config/groups/{group_slug}": { "delete": { "tags": [ "Projects" ], "description": "Deletes the project group permission between the requested project and group, if one exists.\n\nOnly users with admin permission for the project may access this resource.", "summary": "Delete an explicit group permission for a project", "responses": { "204": { "description": "The project group permission was deleted and no content returned." }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the project, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, project, and group doesn't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Projects" ], "description": "Returns the group permission for a given group and project.\n\nOnly users with admin permission for the project may access this resource.\n\nPermissions can be:\n\n* `admin`\n* `create-repo`\n* `write`\n* `read`\n* `none`", "summary": "Get an explicit group permission for a project", "responses": { "200": { "description": "Project group permission", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project_group_permission" }, "examples": { "response": { "value": { "type": "project_group_permission", "group": { "type": "group", "name": "Administrators", "slug": "administrators" }, "permission": "admin", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/groups/administrators" } } } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The user doesn't have admin access to the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, project, and group doesn't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:project:bitbucket" ] } ] }, "put": { "tags": [ "Projects" ], "description": "Updates the group permission, or grants a new permission if one does not already exist.\n\nOnly users with admin permission for the project may access this resource.\n\nDue to security concerns, the JWT and OAuth authentication methods are unsupported.\nThis is to ensure integrations and add-ons are not allowed to change permissions.\n\nPermissions can be:\n\n* `admin`\n* `create-repo`\n* `write`\n* `read`", "summary": "Update an explicit group permission for a project", "responses": { "200": { "description": "Project group permission updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project_group_permission" }, "examples": { "response": { "value": { "type": "project_group_permission", "group": { "type": "group", "name": "Administrators", "slug": "administrators" }, "permission": "write", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/groups/administrators" } } } } } } } }, "400": { "description": "No permission value was provided or the value is invalid(not one of read, write, create-repo, or admin).", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "402": { "description": "You have reached your plan's user limit and must upgrade before giving access to additional users.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the project, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, project, and group doesn't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/bitbucket.apps.permissions.serializers.ProjectPermissionUpdateSchema" }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "group_slug", "in": "path", "description": "Slug of the requested group.", "required": true, "schema": { "type": "string" } }, { "name": "project_key", "in": "path", "description": "The project in question. This is the actual key assigned to the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/permissions-config/users": { "get": { "tags": [ "Projects" ], "description": "Returns a paginated list of explicit user permissions for the given project.\nThis endpoint does not support BBQL features.", "summary": "List explicit user permissions for a project", "responses": { "200": { "description": "Paginated list of explicit user permissions.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_project_user_permissions" }, "examples": { "response": { "value": { "pagelen": 10, "values": [ { "type": "project_user_permission", "user": { "type": "user", "display_name": "Colin Cameron", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" }, "permission": "admin", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" } } }, { "type": "project_user_permission", "user": { "type": "user", "display_name": "Sean Conaty", "uuid": "{504c3b62-8120-4f0c-a7bc-87800b9d6f70}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324c" }, "permission": "write", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324c" } } } ], "page": 1, "size": 2 } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The user doesn't have admin access to the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or both of the workspace and project don't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:project:bitbucket" ] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual key assigned to the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/projects/{project_key}/permissions-config/users/{selected_user_id}": { "delete": { "tags": [ "Projects" ], "description": "Deletes the project user permission between the requested project and user, if one exists.\n\nOnly users with admin permission for the project may access this resource.\n\nDue to security concerns, the JWT and OAuth authentication methods are unsupported.\nThis is to ensure integrations and add-ons are not allowed to change permissions.", "summary": "Delete an explicit user permission for a project", "responses": { "204": { "description": "The project user permission was deleted and no content returned." }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the project, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, project, and selected user doesn't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "get": { "tags": [ "Projects" ], "description": "Returns the explicit user permission for a given user and project.\n\nOnly users with admin permission for the project may access this resource.\n\nPermissions can be:\n\n* `admin`\n* `create-repo`\n* `write`\n* `read`\n* `none`", "summary": "Get an explicit user permission for a project", "responses": { "200": { "description": "Explicit user permission for user and project", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project_user_permission" }, "examples": { "response": { "value": { "type": "project_user_permission", "user": { "type": "user", "display_name": "Colin Cameron", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" }, "permission": "admin", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" } } } } } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, project, and selected user doesn't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:project:bitbucket" ] } ] }, "put": { "tags": [ "Projects" ], "description": "Updates the explicit user permission for a given user and project. The selected\nuser must be a member of the workspace, and cannot be the workspace owner.\n\nOnly users with admin permission for the project may access this resource.\n\nDue to security concerns, the JWT and OAuth authentication methods are unsupported.\nThis is to ensure integrations and add-ons are not allowed to change permissions.\n\nPermissions can be:\n\n* `admin`\n* `create-repo`\n* `write`\n* `read`", "summary": "Update an explicit user permission for a project", "responses": { "200": { "description": "Explicit user permission updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project_user_permission" }, "examples": { "response": { "value": { "type": "project_user_permission", "user": { "type": "user", "display_name": "Colin Cameron", "uuid": "{d301aafa-d676-4ee0-88be-962be7417567}", "account_id": "557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" }, "permission": "write", "links": { "self": { "href": "https://api.bitbucket.org/2.0/workspaces/atlassian_tutorial/projects/PRJ/permissions-config/users/557058:ba8948b2-49da-43a9-9e8b-e7249b8e324a" } } } } } } } }, "400": { "description": "No permission value was provided or the value is invalid (not one of read, write, create-repo, or admin)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "401": { "description": "The user couldn't be authenticated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "402": { "description": "You have reached your plan's user limit and must upgrade before giving access to additional users.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "403": { "description": "The requesting user isn't an admin of the project, or the authentication method was not via app password.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "One or more of the workspace, project, and selected user doesn't exist for the given identifiers or the requesting user is not authenticated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "requestBody": { "$ref": "#/components/requestBodies/bitbucket.apps.permissions.serializers.ProjectPermissionUpdateSchema" }, "security": [ { "oauth2": [ "project:admin" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "project_key", "in": "path", "description": "The project in question. This is the actual key assigned to the project.\n", "required": true, "schema": { "type": "string" } }, { "name": "selected_user_id", "in": "path", "description": "This can either be the username, the user's UUID surrounded by curly-braces,\nfor example: {account UUID}, or the user's Atlassian ID.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/pullrequests/{selected_user}": { "get": { "tags": [ "Workspaces", "Pullrequests" ], "description": "Returns all workspace pull requests authored by the specified user.\n\nBy default only open pull requests are returned. This can be controlled\nusing the `state` query parameter. To retrieve pull requests that are\nin one of multiple states, repeat the `state` parameter for each\nindividual state.\n\nThis endpoint also supports filtering and sorting of the results. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for more details.", "summary": "List workspace pull requests for a user", "responses": { "200": { "description": "All pull requests authored by the specified user.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/paginated_pullrequests" } } } }, "404": { "description": "If the specified user does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "parameters": [ { "name": "state", "in": "query", "description": "Only return pull requests that are in this state. This parameter can be repeated.", "schema": { "type": "string", "enum": [ "OPEN", "MERGED", "DECLINED", "SUPERSEDED" ] } } ], "security": [ { "oauth2": [ "pullrequest" ] }, { "basic": [] }, { "api_key": [] } ] }, "parameters": [ { "name": "selected_user", "in": "path", "description": "This can either be the username of the pull request author, the author's UUID\nsurrounded by curly-braces, for example: `{account UUID}`, or the author's Atlassian ID.\n", "required": true, "schema": { "type": "string" } }, { "name": "workspace", "in": "path", "description": "This can either be the workspace ID (slug) or the workspace UUID\nsurrounded by curly-braces, for example: `{workspace UUID}`.\n", "required": true, "schema": { "type": "string" } } ] }, "/workspaces/{workspace}/search/code": { "get": { "tags": [ "Search" ], "summary": "Search for code in a workspace", "description": "Search for code in the repositories of the specified workspace.\n\nNote that searches can match in the file's text (`content_matches`),\nthe path (`path_matches`), or both.\n\nYou can use the same syntax for the search query as in the UI.\nE.g. to search for \"foo\" only within the repository \"demo\",\nuse the query parameter `search_query=foo+repo:demo`.\n\nSimilar to other APIs, you can request more fields using a\n`fields` query parameter. E.g. to get some more information about\nthe repository of matched files, use the query parameter\n`search_query=foo&fields=%2Bvalues.file.commit.repository`\n(the `%2B` is a URL-encoded `+`).\n\nTry `fields=%2Bvalues.*.*.*.*` to get an idea what's possible.\n", "operationId": "searchWorkspace", "parameters": [ { "name": "workspace", "in": "path", "description": "The workspace to search in; either the slug or the UUID in curly braces", "required": true, "schema": { "type": "string" } }, { "name": "search_query", "in": "query", "description": "The search query", "required": true, "schema": { "type": "string" } }, { "name": "page", "in": "query", "description": "Which page of the search results to retrieve", "required": false, "schema": { "type": "integer", "format": "int32", "default": 1 } }, { "name": "pagelen", "in": "query", "description": "How many search results to retrieve per page", "required": false, "schema": { "type": "integer", "format": "int32", "default": 10 } } ], "responses": { "200": { "description": "Successful search", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/search_result_page" }, "examples": { "response": { "value": { "size": 1, "page": 1, "pagelen": 10, "query_substituted": false, "values": [ { "type": "code_search_result", "content_match_count": 2, "content_matches": [ { "lines": [ { "line": 2, "segments": [] }, { "line": 3, "segments": [ { "text": "def " }, { "text": "foo", "match": true }, { "text": "():" } ] }, { "line": 4, "segments": [ { "text": " print(\"snek\")" } ] }, { "line": 5, "segments": [] } ] } ], "path_matches": [ { "text": "src/" }, { "text": "foo", "match": true }, { "text": ".py" } ], "file": { "path": "src/foo.py", "type": "commit_file", "links": { "self": { "href": "https://api.bitbucket.org/2.0/repositories/my-workspace/demo/src/ad6964b5fe2880dbd9ddcad1c89000f1dbcbc24b/src/foo.py" } } } } ] } } } } } }, "400": { "description": "If the search request was invalid due to one of the\nfollowing reasons:\n\n* the specified type of target account doesn''t match the actual\naccount type;\n\n* malformed pagination properties;\n\n* missing or malformed search query, in the latter case an error\nkey will be returned in `error.data.key` property.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Search is not enabled for the requested workspace, navigate to [https://bitbucket.org/search](https://bitbucket.org/search) to turn it on", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "429": { "description": "Too many requests, try again later", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } }, "security": [ { "oauth2": [ "repository" ] }, { "basic": [] }, { "api_key": [] } ], "x-atlassian-oauth2-scopes": [ { "state": "Current", "scheme": "oauth2", "scopes": [ "read:repository:bitbucket" ] } ] } } }, "tags": [ { "name": "Addon", "description": "The addon resource is intended to use used by Bitbucket Cloud Connect\nApps, and only supports JWT authentication.\n" }, { "name": "Branch restrictions", "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 deletion\n* Prevent history re-writes (Git only)\n" }, { "name": "Branching model", "description": "The branching model resource is used to modify the branching model\nfor a repository.\n\nYou can use the branching model to define a branch based workflow\nfor your repositories. When you map your workflow to branch types,\nyou can ensure that branches are named consistently by configuring\nwhich branch types to make available.\n" }, { "name": "Commit statuses", "description": "Commit statuses provide a way to tag commits with meta data,\nlike automated build results.\n" }, { "name": "Commits", "description": "These are the repository's commits. They are paginated and returned in\nreverse chronological order, similar to the output of git log.\n" }, { "name": "Deployments", "description": "Teams are deploying code faster than ever, thanks to continuous\ndelivery practices and tools like Bitbucket Pipelines. Bitbucket\nDeployments gives teams visibility into their deployment\nenvironments and helps teams to track how far changes have\nprogressed in their deployment pipeline.\n" }, { "name": "Downloads", "description": "Access the list of download links associated with the repository." }, { "name": "GPG", "description": "The GPG resource allows you to manage GPG keys.\n" }, { "name": "Issue tracker", "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. Issue Tracker features are not supported for repositories in workspaces administered through admin.atlassian.com.\n" }, { "name": "Pipelines", "description": "Bitbucket Pipelines brings continuous delivery to Bitbucket\nCloud, empowering teams with full branching to deployment\nvisibility and faster feedback loops.\n" }, { "name": "Projects", "description": "Bitbucket Cloud projects make it easier for teams to focus on\na goal, product, or process by organizing their repositories.\n" }, { "name": "Pullrequests", "description": "Pull requests are a feature that makes it easier for developers\nto collaborate using Bitbucket. They provide a user-friendly web\ninterface for discussing proposed changes before integrating them\ninto the official project.\n" }, { "name": "Refs", "description": "The refs resource allows you access branches and tags in a repository.\nBy default, results will be in the order the underlying source control\nsystem returns them and identical to the ordering one sees when running\n\"$ git show-ref\". Note that this follows simple lexical ordering of the\n ref names.\n" }, { "name": "Reports", "description": "Code insights provides reports, annotations, and metrics to help you\nand your team improve code quality in pull requests throughout the code\nreview process. Some of the available code insights are static analysis\nreports, security scan results, artifact links, unit tests, and build\nstatus.\n" }, { "name": "Repositories", "description": "A Git repository is a virtual storage of your project. It\nallows you to save versions of your code, which you can access\nwhen needed. The repo resource allows you to access public repos,\nor repos that belong to a specific workspace.\n" }, { "name": "SSH", "description": "The SSH resource allows you to manage SSH keys.\n" }, { "name": "Snippets", "description": "Snippets allow you share code segments or files with yourself, members of\nyour workspace, or the world.\n\nLike pull requests, repositories and workspaces, the full set of snippets\nis defined by what the current user has access to. This includes all\nsnippets owned by any of the workspaces the user is a member of, or\nsnippets by other users that the current user is either watching or has\n collaborated on (for instance by commenting on it).\n" }, { "name": "Source", "description": "Browse the source code in the repository and\n create new commits by uploading." }, { "name": "Teams", "description": "The teams resource has been deprecated, and the workspaces\nendpoint should be used instead.\n\nThe teams resource returns all the teams that the authenticated\nuser is associated with.\n" }, { "name": "Users", "description": "The users resource allows you to access public information\nassociated with a user account. Most resources in the users\nendpoint have been deprecated in favor of workspaces.\n" }, { "name": "Webhooks", "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\nis 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\nselect multiple events that can trigger the webhook.\n* A URL -- The endpoint where you want Bitbucket to send the event payloads\nwhen 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\nyour CI server to start a build.\n* Every time a user pushes commits or creates a pull request, you may want to\ndisplay a notification in your application.\n" }, { "name": "Wiki", "description": "The wiki is a simple place to keep documents. Some people use it\nas their project home page. The wiki is a Git repository, so you\ncan clone it and edit it like any other source files.\n" }, { "name": "Workspaces", "description": "A workspace is where you create repositories, collaborate on\nyour code, and organize different streams of work in your Bitbucket\nCloud account. Workspaces replace the use of teams and users in API\ncalls.\n" } ], "x-revision": "541f4db5487d", "x-atlassian-narrative": { "documents": [ { "anchor": "authentication", "title": "Authentication methods", "description": "How to authenticate API actions", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTcuNjQ3MyAxODYuODEzOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlOwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICNkZTM1MGI7CiAgICAgIH0KCiAgICAgIC5jbHMtMyB7CiAgICAgICAgZmlsbDogI2ZmNTYzMDsKICAgICAgfQoKICAgICAgLmNscy00IHsKICAgICAgICBmaWxsOiAjZGZlMWU1OwogICAgICAgIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTsKICAgICAgfQoKICAgICAgLmNscy01IHsKICAgICAgICBmaWxsOiAjZmFmYmZjOwogICAgICB9CgogICAgICAuY2xzLTYgewogICAgICAgIGZpbGw6ICNlYmVjZjA7CiAgICAgIH0KCiAgICAgIC5jbHMtNyB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6ICMwMDY1ZmY7CiAgICAgICAgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOwogICAgICAgIHN0cm9rZS13aWR0aDogMnB4OwogICAgICB9CgogICAgICAuY2xzLTggewogICAgICAgIGZpbGw6ICM1ZTZjODQ7CiAgICAgIH0KCiAgICAgIC5jbHMtOSB7CiAgICAgICAgZmlsbDogIzI1Mzg1ODsKICAgICAgfQoKICAgICAgLmNscy0xMCB7CiAgICAgICAgZmlsbDogIzI2ODRmZjsKICAgICAgfQoKICAgICAgLmNscy0xMSB7CiAgICAgICAgZmlsbDogIzAwNjVmZjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPHRpdGxlPlNlY3VyaXR5IHdpdGggS2V5PC90aXRsZT4KICA8ZyBjbGFzcz0iY2xzLTEiPgogICAgPGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+CiAgICAgIDxnIGlkPSJPYmplY3RzIj4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Mi4wNjcyLDBoLjYxMTRhOCw4LDAsMCwxLDgsOFYyMy4yMzM4YTAsMCwwLDAsMSwwLDBIMzQuMDY3MmEwLDAsMCwwLDEsMCwwVjhBOCw4LDAsMCwxLDQyLjA2NzIsMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMDguMjIsMGguNjExNGE4LDgsMCwwLDEsOCw4VjIzLjIzMzhhMCwwLDAsMCwxLDAsMEgxMDAuMjJhMCwwLDAsMCwxLDAsMFY4QTgsOCwwLDAsMSwxMDguMjIsMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNzQuMzcyMiwwaC42MTE0YTgsOCwwLDAsMSw4LDhWMjMuMjMzOGEwLDAsMCwwLDEsMCwwSDE2Ni4zNzIyYTAsMCwwLDAsMSwwLDBWOEE4LDgsMCwwLDEsMTc0LjM3MjIsMFoiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjM0LjA2NzIiIHk9IjIzLjIzMzgiIHdpZHRoPSIxNjMuNTgiIGhlaWdodD0iMTYzLjU4Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDIuMDY3MiwwSDU5LjI5YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDM0LjA2NzJhMCwwLDAsMCwxLDAsMFY4YTgsOCwwLDAsMSw4LThaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTA3LjI0NTgsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDk5LjI0NThhMCwwLDAsMCwxLDAsMFY4YTgsOCwwLDAsMSw4LThaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTcyLjQyNDQsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDE2NC40MjQ0YTAsMCwwLDAsMSwwLDBWOGE4LDgsMCwwLDEsOC04WiIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTcuNDU1OCIgeT0iMjMuMjMzOCIgd2lkdGg9IjE2My41OCIgaGVpZ2h0PSIxNjMuNTgiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNS40NTU4LDBINDIuNjc4NmE4LDgsMCwwLDEsOCw4VjIzLjIyMjhhMCwwLDAsMCwxLDAsMEgxNy40NTU4YTAsMCwwLDAsMSwwLDBWOEE4LDgsMCwwLDEsMjUuNDU1OCwwWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTkwLjYzNDQsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDgyLjYzNDRhMCwwLDAsMCwxLDAsMFY4QTgsOCwwLDAsMSw5MC42MzQ0LDBaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTU1LjgxMywwaDE3LjIyMjhhOCw4LDAsMCwxLDgsOFYyMy4yMjI4YTAsMCwwLDAsMSwwLDBIMTQ3LjgxM2EwLDAsMCwwLDEsMCwwVjhBOCw4LDAsMCwxLDE1NS44MTMsMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNS40NTU4LDBINDIuNjc4NmE4LDgsMCwwLDEsOCw4VjIzLjIyMjhhMCwwLDAsMCwxLDAsMEgxNy40NTU4YTAsMCwwLDAsMSwwLDBWOEE4LDgsMCwwLDEsMjUuNDU1OCwwWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTkwLjYzNDQsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDgyLjYzNDRhMCwwLDAsMCwxLDAsMFY4QTgsOCwwLDAsMSw5MC42MzQ0LDBaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTU1LjgxMywwaDE3LjIyMjhhOCw4LDAsMCwxLDgsOFYyMy4yMjI4YTAsMCwwLDAsMSwwLDBIMTQ3LjgxM2EwLDAsMCwwLDEsMCwwVjhBOCw4LDAsMCwxLDE1NS44MTMsMFoiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjM1Ljc1OTYiIHk9IjU2LjgwNjUiIHdpZHRoPSIzMy4yMjI4IiBoZWlnaHQ9IjE1LjYwMzgiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjEzMS4yMDE2IiB5PSIxMzYuOTYxNSIgd2lkdGg9IjMzLjIyMjgiIGhlaWdodD0iMTUuNjAzOCIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTU3LjM3MDksNzEuNjAzNmg3MC43NWE5LDksMCwwLDEsOSw5djM1LjM3NDlhNDQuMzc0OCw0NC4zNzQ4LDAsMCwxLTQ0LjM3NDgsNDQuMzc0OGgwYTQ0LjM3NDgsNDQuMzc0OCwwLDAsMS00NC4zNzQ4LTQ0LjM3NDhWODAuNjAzNkE5LDksMCwwLDEsNTcuMzcwOSw3MS42MDM2WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTY2LjM3MSw2Ni42NjE3aDcwLjc1YTksOSwwLDAsMSw5LDl2MzUuMzc0OWE0NC4zNzQ4LDQ0LjM3NDgsMCwwLDEtNDQuMzc0OCw0NC4zNzQ4aDBBNDQuMzc0OCw0NC4zNzQ4LDAsMCwxLDU3LjM3MSwxMTEuMDM2NlY3NS42NjE3YTksOSwwLDAsMSw5LTlaIi8+CiAgICAgICAgPHBhdGggaWQ9Il9SZWN0YW5nbGVfIiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTYiIGQ9Ik02MS4zNzEsNjYuNjYxN2g3MC43NWE5LDksMCwwLDEsOSw5djM1LjM3NDlhNDQuMzc0OCw0NC4zNzQ4LDAsMCwxLTQ0LjM3NDgsNDQuMzc0OGgwQTQ0LjM3NDgsNDQuMzc0OCwwLDAsMSw1Mi4zNzEsMTExLjAzNjZWNzUuNjYxN0E5LDksMCwwLDEsNjEuMzcxLDY2LjY2MTdaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy03IiBkPSJNOTYuNzQ1OSwxNDcuNzQ0MWEzNi43NDg3LDM2Ljc0ODcsMCwwLDEtMzYuNzA3NC0zNi43MDc0Vjc4LjA1ODRhMy43MzMzLDMuNzMzMywwLDAsMSwzLjcyOS0zLjcyOWg2NS45NTYzYTMuNzMzMywzLjczMzMsMCwwLDEsMy43MjksMy43Mjl2MzIuOTc4NEEzNi43NDg2LDM2Ljc0ODYsMCwwLDEsOTYuNzQ1OSwxNDcuNzQ0MVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMDAuNjg5MywxNjMuMzE2N1YxMTEuMDk3M2EzLjk0NDMsMy45NDQzLDAsMCwwLTcuODg4NywwdjUyLjIyYTIyLjUyNTIsMjIuNTI1MiwwLDAsMC0xOC41NDc5LDIyLjE0YzAsLjQ1Ni4wMTc4LjkwNzguMDQ0NywxLjM1NzFIODIuMjFjLS4wNDE0LS40NDc0LS4wNjg4LS44OTktLjA2ODgtMS4zNTcxYTE0LjYyLDE0LjYyLDAsMCwxLDE0LjU5NzQtMTQuNjA0MWwuMDA2MS4wMDA2LjAwNjgtLjAwMDdBMTQuNjIxMSwxNC42MjExLDAsMCwxLDExMS4zNSwxODUuNDU2NmMwLC40NTgxLS4wMjczLjkxLS4wNjg4LDEuMzU3MWg3LjkxMjhjLjAyNjktLjQ0OTMuMDQ0Ny0uOTAxMS4wNDQ3LTEuMzU3MUEyMi41MjU5LDIyLjUyNTksMCwwLDAsMTAwLjY4OTMsMTYzLjMxNjdaIi8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNy40NTU4IiB5PSIzNi40NzAyIiB3aWR0aD0iMzMuMjIyOCIgaGVpZ2h0PSIxNS42MDM4Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNy40NTU4IiB5PSIxNTguMTIxNyIgd2lkdGg9IjMzLjIyMjgiIGhlaWdodD0iMTUuNjAzOCIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTQ3LjgxMyIgeT0iMzYuNDcwMiIgd2lkdGg9IjMzLjIyMjgiIGhlaWdodD0iMTUuNjAzOCIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTUwLjA2NDMiIHk9IjE1Ny41NTEzIiB3aWR0aD0iMzMuMjIyOCIgaGVpZ2h0PSIxNS42MDM4Ii8+CiAgICAgICAgPHBhdGggaWQ9Il9QYXRoXyIgZGF0YS1uYW1lPSImbHQ7UGF0aCZndDsiIGNsYXNzPSJjbHMtOCIgZD0iTTEwNy41MjU0LDEwMS4wMDI3YTExLjc3OTQsMTEuNzc5NCwwLDEsMC0xOS44Niw4LjU1NDhBNC4wNDE3LDQuMDQxNywwLDAsMSw4OC44NSwxMTMuNjJsLTIuMTA0LDcuMjY4MWEzLDMsMCwwLDAsMi44ODE3LDMuODM0MmgxMi4yMzcxYTMsMywwLDAsMCwyLjg4MTctMy44MzQybC0yLjA5NTktNy4yNGE0LjA3NDMsNC4wNzQzLDAsMCwxLDEuMTgwOC00LjA5NDVBMTEuNzE3MiwxMS43MTcyLDAsMCwwLDEwNy41MjU0LDEwMS4wMDI3WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTEwNC43NDYxLDEyMC44ODc3bC0yLjA5NTktNy4yNGE0LjA3NDQsNC4wNzQ0LDAsMCwxLDEuMTgwOC00LjA5NDUsMTEuNzYyOSwxMS43NjI5LDAsMCwwLTUuMDYtMTkuOTMxMywxMS45MSwxMS45MSwwLDAsMC04Ljc5OCwxMC45OTQ5LDExLjcxODUsMTEuNzE4NSwwLDAsMCwzLjY5MjksOC45NDFBNC4wNDE2LDQuMDQxNiwwLDAsMSw5NC44NSwxMTMuNjJsLTMuMjE0LDExLjEwMjNoMTAuMjI4OEEzLDMsMCwwLDAsMTA0Ljc0NjEsMTIwLjg4NzdaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xMCIgZD0iTTgxLjc5NzUsMTAwLjMxYTMuOTQzOSwzLjk0MzksMCwwLDAtMy45NDQzLTMuOTQ0M0g0MS4wNDE3YTMuOTQ0MywzLjk0NDMsMCwwLDAsMCw3Ljg4ODdINzcuODUzMkEzLjk0MzksMy45NDM5LDAsMCwwLDgxLjc5NzUsMTAwLjMxWiIvPgogICAgICAgIDxwYXRoIGlkPSJfUGF0aF8yIiBkYXRhLW5hbWU9IiZsdDtQYXRoJmd0OyIgY2xhc3M9ImNscy0xMSIgZD0iTTQxLjA0MTYsMTA0LjI1MzlIOTYuODUzMmEzLjk0NDMsMy45NDQzLDAsMCwwLDAtNy44ODg3SDQxLjA0MTZhMy45NDQzLDMuOTQ0MywwLDAsMCwwLDcuODg4N1oiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNODEuNzk3NSwxMDAuMzFhMy45NDM5LDMuOTQzOSwwLDAsMC0zLjk0NDMtMy45NDQzSDQxLjA0MTdhMy45NDQzLDMuOTQ0MywwLDAsMCwwLDcuODg4N0g3Ny44NTMyQTMuOTQzOSwzLjk0MzksMCwwLDAsODEuNzk3NSwxMDAuMzFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xMCIgZD0iTTIyLjQ5MzIsMTIyLjgwMjlBMjIuNDkyOSwyMi40OTI5LDAsMSwxLDQ0Ljk4NTgsMTAwLjMxLDIyLjUxODUsMjIuNTE4NSwwLDAsMSwyMi40OTMyLDEyMi44MDI5Wm0wLTM3LjA5NzJBMTQuNjA0MiwxNC42MDQyLDAsMSwwLDM3LjA5NzIsMTAwLjMxLDE0LjYyMDcsMTQuNjIwNywwLDAsMCwyMi40OTMyLDg1LjcwNTdaIi8+CiAgICAgIDwvZz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo='", "body": "\nThe purpose of this section is to describe how to authenticate when making API calls using the Bitbucket REST API.\n\n-----\n\n* [Basic auth](#basic-auth)\n* [Access Tokens](#access-tokens)\n * [Repository Access Tokens](#repository-access-tokens)\n * [Project Access Tokens](#project-access-tokens)\n * [Workspace Access Tokens](#workspace-access-tokens)\n* [App passwords](#app-passwords)\n* [OAuth 2.0](#oauth-2-0)\n * [Making requests](#making-requests)\n * [Repository cloning](#repository-cloning)\n * [Refresh tokens](#refresh-tokens)\n* [Bitbucket OAuth 2.0 Scopes](#bitbucket-oauth-2-0-scopes)\n* [Forge App Scopes](#forge-app-scopes)\n\n---\n\n### Basic auth\n\nBasic HTTP Authentication as per [RFC-2617](https://tools.ietf.org/html/rfc2617) (Digest not supported).\nNote that Basic Auth is available only with username and [app password](https://bitbucket.org/account/settings/app-passwords/) as credentials.\n\n### Access Tokens\n\nAccess Tokens are passwords (or tokens) that provide access to a _single_ repository, project or workspace.\nThese tokens can authenticate with Bitbucket APIs for scripting, CI/CD tools, Bitbucket Cloud-connected apps,\nand Bitbucket Cloud integrations.\n\nAccess Tokens are linked to a repository, project, or workspace, not a user account.\nThe level of access provided by the token is set when a repository, or workspace admin creates it,\nby setting permission scopes.\n\nThere are three types of Access Token:\n\n* **Repository Access Tokens** can connect to a single repository, preventing them from accessing any other repositories or workspaces.\n* **Project Access Tokens** can connect to a single project, providing access to any repositories within the project.\n* **Workspace Access Tokens** can connect to a single workspace and have access to any projects and repositories within that workspace.\n\nWhen using Bitbucket APIs with an Access Token, the token will be treated as the \"user\" in the\nBitbucket UI and Bitbucket logs. This includes when using the Access Token to leave a comment on a pull request,\npush a commit, or merge a pull request. The Bitbucket UI and API responses will show the\nRepository/Project/Workspace Access Token as a user. The username shown in the Bitbucket UI is the Access\nToken _name_, and a custom icon is used to differentiate it from a regular user in the UI.\n\n#### Considerations for using Access Tokens\n\n* After creation, an Access Token can't be viewed or modified. The token's name, created date,\nlast accessed date, and scopes are visible on the repository, project, or workspace **Access Tokens** page.\n* Access Tokens can access a limited set of Bitbucket's permission scopes.\n* Provided you set the correct permission scopes, you can use an Access Token to clone (`repository`)\nand push (`repository:write`) code to the token's repository or the repositories the token can access.\n* You can't use an Access Token to log into the Bitbucket website.\n* Access Tokens don't require two-step verification.\n* You can set permission scopes (specific access rights) for each Access Token.\n* You can't use an Access Token to manipulate or query repository, project, or workspace permissions.\n* Access Tokens are not listed in any repository or workspace permission API response.\n* Access Tokens are deactivated when deleting the resource tied to it (a repository, project, or workspace).\nRepository Access Tokens are also revoked when transferring the repository to another workspace.\n* Any content created by the Access Token will persist after the Access Token has been revoked.\n* Access Tokens can interact with branch restriction APIs, but the token can't be configured as a user with merge access when using branch restrictions.\n\nThere are some APIs which are inaccessible for Access Tokens, these are:\n\n* [Add a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-post)\n* [Update a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-key-id-put)\n* [Delete a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-key-id-delete)\n\n#### Repository Access Tokens\n\nFor details on creating, managing, and using Repository Access Tokens, visit\n[Repository Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/repository-access-tokens/).\n\nThe available scopes for Repository Access Tokens are:\n\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n#### Project Access Tokens\n\nFor details on creating, managing, and using Project Access Tokens, visit\n[Project Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/project-access-tokens/).\n\nThe available scopes for Project Access Tokens are:\n\n- [`project`](#project)\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n#### Workspace Access Tokens\n\nFor details on creating, managing, and using Workspace Access Tokens, visit\n[Workspace Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/workspace-access-tokens/).\n\nThe available scopes for Workspace Access Tokens are:\n\n- [`project`](#project)\n- [`project:admin`](#project-admin)\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`account`](#account)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n### App passwords\n\nApp passwords allow 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\nFor details on creating, managing, and using App passwords, visit\n[App passwords](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/).\n\n### OAuth 2.0\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 three of RFC-6749's grant\nflows, plus a custom Bitbucket flow for exchanging JWT tokens for access tokens.\nNote that Resource Owner Password Credentials Grant (4.3) is no longer supported.\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. 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#### 4. 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\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\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\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### Bitbucket OAuth 2.0 scopes\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\nOAuth 2.0 Scopes are applicable for OAuth 2, Access Tokens, and App passwords auth mechanisms as well as Bitbucket Connect apps.\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 only 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\nThe available scopes are:\n\n- [project](#project)\n- [project:write](#project-write)\n- [project:admin](#project-admin)\n- [repository](#repository)\n- [repository:write](#repository-write)\n- [repository:admin](#repository-admin)\n- [repository:delete](#repository-delete)\n- [pullrequest](#pullrequest)\n- [pullrequest:write](#pullrequest-write)\n- [issue](#issue)\n- [issue:write](#issue-write)\n- [wiki](#wiki)\n- [webhook](#webhook)\n- [snippet](#snippet)\n- [snippet:write](#snippet-write)\n- [email](#email)\n- [account](#account)\n- [account:write](#account-write)\n- [pipeline](#pipeline)\n- [pipeline:write](#pipeline-write)\n- [pipeline:variable](#pipeline-variable)\n- [runner](#runner)\n- [runner:write](#runner-write)\n\n#### project\n\nProvides access to view the project or projects.\nThis scope implies the [`repository`](#repository) scope, giving read access to all the repositories in a project or projects.\n\n#### project:write\n\nThis scope is deprecated, and has been made obsolete by `project:admin`. Please see the deprecation notice [here](/cloud/bitbucket/deprecation-notice-project-write-scope).\n\n#### project:admin\n\nProvides admin access to a project or projects. No distinction is made between public and private projects. This scope doesn't implicitly grant the [`project`](#project) scope or the [`repository:write`](#repository-write) scope on any repositories under the project. It gives access to the admin features of a project only, not direct access to its repositories' contents.\n\n* ability to create the project\n* ability to update the project\n* ability to delete the project\n\n#### repository\n\nProvides read access to a repository or repositories.\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 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\nProvides write (not admin) access to a repository or repositories. No distinction is made between public and private repositories. This scope implicitly grants the [`repository`](#repository) scope, 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\nProvides admin access to a repository or repositories. No distinction is made between public and private repositories. This scope doesn't implicitly grant the [`repository`](#repository) or the [`repository:write`](#repository-write) scopes. It gives access to the admin features of a repo only, not direct access to its contents. This scope can be used or misused to grant read access to other users, who can then clone the repo, but users that need to read and 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 webhooks\n* Initiate a repo ownership transfer\n\n#### repository:delete\n\nProvides access to delete a repository or repositories.\n\n#### pullrequest\n\nProvides read access to pull requests.\nThis scope implies the [`repository`](#repository) scope, giving read access to the pull request's destination repository.\n\n* see and list pull requests\n* create and resolve tasks\n* comment on pull requests\n\n#### pullrequest:write\n\nImplicitly grants the [`pullrequest`](#pullrequest) scope and adds the ability to create, merge and decline pull requests.\nThis scope also implicitly grants the [`repository:write`](#repository-write) scope, giving write access to the pull request's destination repository. This is necessary to allow merging.\n\n* merge pull requests\n* decline pull requests\n* create pull requests\n* approve pull requests\n\n#### issue\n\nAbility to interact with issue trackers the way non-repo members can.\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\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 scope implicitly grants the [`issue`](#issue) scope and adds the ability to transition and delete issues.\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* transition issues\n* delete issues\n\n#### wiki\n\nProvides access to wikis. This scope provides both read and write access (wikis are always editable by anyone with access to them).\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* view wikis\n* create pages\n* edit pages\n* push to wikis\n* clone wikis\n\n#### webhook\n\nGives access to webhooks. This scope is required for any webhook-related operation.\n\nThis scope gives read access to existing webhook subscriptions on all\nresources the authorization mechanism can access, without needing further scopes.\nFor example:\n\n- A client can list all existing webhook subscriptions on a repository. The [`repository`](#repository) scope is not required.\n- Existing webhook subscriptions for the issue tracker on a repo can be retrieved without the [`issue`](#issue) scope. All that is required is the `webhook` scope.\n\nTo create webhooks, the client will need read access to the resource. Such as: for [`issue:created`](#issue-created), the client will need to\nhave both the `webhook` and the [`issue`](#issue) scope.\n\n* list webhook subscriptions on any accessible repository, user, team, or snippet\n* create/update/delete webhook subscriptions.\n\n#### snippet\n\nProvides read access to snippets.\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\nProvides write access to snippets.\nNo distinction is made between public and private snippets (public snippets are accessible without any form of authentication).\nThis scope implicitly grants the [`snippet`](#snippet) scope which does not need to be requested separately.\n\n* create snippets\n* edit snippets\n* delete snippets\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 for apps or external applications.\n\n#### account\n\nWhen used for:\n* **user-related APIs** — Gives read-only access to the user's account information.\nNote that this doesn't include any ability to change any of the data. This scope allows you to view the user's:\n * email addresses\n * language\n * location\n * website\n * full name\n * SSH keys\n * user groups\n* **workspace-related APIs** — Grants access to view the workspace's:\n * users\n * user permissions\n * projects\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* change a user's email addresses\n* change username, display name and avatar\n\n#### pipeline\n\nGives read-only access to pipelines, steps, deployment environments and variables.\n\n#### pipeline:write\n\nGives write access to pipelines. This scope allows a user to:\n* Stop pipelines\n* Rerun failed pipelines\n* Resume halted pipelines\n* Trigger manual pipelines.\n\nThis scope is not needed to trigger a build using a push. Performing a `git push` (or equivalent actions) will trigger the build. The token doing the push only needs the [`repository:write`](#repository-write) scope.\n\nThis doesn't give write access to create variables.\n\n#### pipeline:variable\n\nGives write access to create variables in pipelines at the various levels:\n* Workspace\n* Repository\n* Deployment\n\n#### runner\n\nGives read-only access to pipelines runners setup against a workspace or repository.\n\n#### runner:write\n\nGives write access to create/edit/disable/delete pipelines runners setup against a workspace or repository.\n### Forge app scopes\n\nIn order for a Forge app integration to access Bitbucket API endpoints, it needs to include certain privilege scopes in the app manifest. These are different from Bitbucket OAuth 2.0 scopes.\n\nUnlike OAuth 2.0 scopes, Forge app scopes do not implicitly grant other scopes, for example, `write:repository:bitbucket` does not implicitly grant `read:repository:bitbucket`.\n\nOnly a subset of Bitbucket API endpoints are currently available for Forge app integrations. These will be labeled with Forge app scopes.\n\nOur best practice suggests you only add the scopes your app needs, but no more than it needs.\n\nThe available scopes are:\n\n- [`read:repository:bitbucket`](#read-repository-bitbucket)\n- [`write:repository:bitbucket`](#write-repository-bitbucket)\n- [`admin:repository:bitbucket`](#admin-repository-bitbucket)\n- [`delete:repository:bitbucket`](#delete-repository-bitbucket)\n- [`read:pullrequest:bitbucket`](#read-pullrequest-bitbucket)\n- [`write:pullrequest:bitbucket`](#write-pullrequest-bitbucket)\n- [`read:project:bitbucket`](#read-project-bitbucket)\n- [`admin:project:bitbucket`](#admin-project-bitbucket)\n- [`read:workspace:bitbucket`](#read-workspace-bitbucket)\n- [`read:user:bitbucket`](#read-user-bitbucket)\n- [`read:pipeline:bitbucket`](#read-pipeline-bitbucket)\n- [`write:pipeline:bitbucket`](#write-pipeline-bitbucket)\n- [`admin:pipeline:bitbucket`](#admin-pipeline-bitbucket)\n- [`read:runner:bitbucket`](#read-runner-bitbucket)\n- [`write:runner:bitbucket`](#write-runner-bitbucket)\n\n#### read:repository:bitbucket\n\nAllows viewing of repository data. Note that this scope does not give access to a repository's pull requests.\n* access to the repository's source code\n* access the file browsing API\n* access to certain repository configurations such as branching model, default reviewers, etc.\n\n#### write:repository:bitbucket\n\nAllows modification of repository data. No distinction is made between public and private repositories. This scope does not imply the `read:repository:bitbucket` scope, so you need to request that separately if required. This scope alone does not give access to the pull request API.\n* update/delete source, branches, tags, etc.\n* fork repositories\n\n#### admin:repository:bitbucket\n\nAllows admin activities on repositories. No distinction is made between public and private repositories. This scope does not implicitly grant the `read:repository:bitbucket` or the `write:repository:bitbucket` scopes. It gives access to the admin features of a repository only, not direct access to its contents. This scope does not allow modification of repository permissions. This scope comes with access to the following functionality:\n* create repository\n* view repository permissions\n* view and edit branch restrictions\n* edit branching model settings\n* edit default reviewers\n* view and edit inheritance state for repository settings\n\n#### delete:repository:bitbucket\nAllows deletion of repositories.\n\n#### read:pullrequest:bitbucket\nAllows viewing of pull requests, plus the ability to comment on pull requests.\n\nThis scope does not imply the `read:repository:bitbucket` scope. With this scope, you could retrieve some data specific to the source/destination repositories of a pull request using pull request endpoints, but it does not give access to repository API endpoints.\n\n#### write:pullrequest:bitbucket\nAllows the ability to create, update, approve, decline, and merge pull requests.\n\nThis scope does not imply the `write:repository:bitbucket` scope.\n\n#### read:project:bitbucket\nAllows viewing of project and project permission data.\n\n#### admin:project:bitbucket\nAllows the ability to create, update, and delete project. No distinction is made between public and private projects.\n\nThis scope does not implicitly grant the `read:project:bitbucket` scope or any repository scopes. It gives access to the admin features of a project only, not direct access to its repositories' contents.\n\n#### read:workspace:bitbucket\nAllows viewing of workspace and workspace permission data.\n\n#### read:user:bitbucket\nAllows viewing of data related to the current user.\n\n#### read:pipeline:bitbucket\nAllows read access to all pipeline information (pipelines, steps, caches, artifacts, logs, tests, code-insights).\n\n#### write:pipeline:bitbucket\nAllows running pipelines (i.e., start/stop/create pipeline) and uploading tests/code-insights.\n\nThis scope does not imply the `read:pipeline:bitbucket` scope.\n\n#### admin:pipeline:bitbucket\nAllows admin activities, such as creating pipeline variables.\n\nThis scope does not implicitly grant the `read:pipeline:bitbucket` or the `write:pipeline:bitbucket` scopes.\n\n#### read:runner:bitbucket\nAllows viewing of runners information.\n\n#### write:runner:bitbucket\nAllows runners management.\n\nThis scope does not imply the `read:runners:bitbucket` scope.\n" }, { "anchor": "filtering", "title": "Filter and sort API objects", "description": "Query the 2.0 API for specific objects", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTk0LjE5MTkgMTQ3LjYwOTIiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjY2ZkNGRiOwogICAgICB9CgogICAgICAuY2xzLTMsIC5jbHMtNCB7CiAgICAgICAgZmlsbDogIzg3NzdkOTsKICAgICAgfQoKICAgICAgLmNscy00IHsKICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7CiAgICAgIH0KCiAgICAgIC5jbHMtNSB7CiAgICAgICAgZmlsbDogIzAwNjVmZjsKICAgICAgfQoKICAgICAgLmNscy02IHsKICAgICAgICBmaWxsOiAjY2NlMGZmOwogICAgICB9CgogICAgICAuY2xzLTcgewogICAgICAgIGZpbGw6IHVybCgjbGluZWFyLWdyYWRpZW50KTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iNDE2LjMwODIiIHkxPSI3NS4wNDc5IiB4Mj0iNTg0Ljg1NTYiIHkyPSI3NS4wNDc5IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKC00NDMuOTQ2NyAxMjMuMDY4Nikgcm90YXRlKC0xMy43OTc2KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmYiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjY5MDgiIHN0b3AtY29sb3I9IiNmZmYiIHN0b3Atb3BhY2l0eT0iMC4xIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8dGl0bGU+TWFnbmlmeWluZyBHbGFzczwvdGl0bGU+CiAgPGcgY2xhc3M9ImNscy0xIj4KICAgIDxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPgogICAgICA8ZyBpZD0iT2JqZWN0cyI+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTMxLjExMjUsOTQuOTMwN2wtOS44ODc4LTUuOTg4OC04LjMyOTIsMTMuNzUxOSw5Ljg4NzgsNS45ODg4YTE1LjYwMywxNS42MDMsMCwwLDEsNS44OCw2LjM4MzVoMGExNS42MDMsMTUuNjAzLDAsMCwwLDUuODgsNi4zODM1bDQwLjExNDMsMjQuMjk2NGExMi44NjY0LDEyLjg2NjQsMCwwLDAsMTcuNjcwOS00LjM0aDBhMTIuODY2NCwxMi44NjY0LDAsMCwwLTQuMzQtMTcuNjcwOUwxNDcuODc0OSw5OS40MzkyYTE1LjYwMywxNS42MDMsMCwwLDAtOC4zODEyLTIuMjU0MmgwQTE1LjYwMywxNS42MDMsMCwwLDEsMTMxLjExMjUsOTQuOTMwN1oiLz4KICAgICAgICA8cGF0aCBpZD0iX1BhdGhfIiBkYXRhLW5hbWU9IiZsdDtQYXRoJmd0OyIgY2xhc3M9ImNscy0zIiBkPSJNMTMxLjExMjUsOTQuOTMwN2wtMy4wMTE4LTEuODI0MkE4LjAzODgsOC4wMzg4LDAsMCwwLDExNy4wNiw5NS44MTc4aDBhOC4wMzg4LDguMDM4OCwwLDAsMCwyLjcxMTMsMTEuMDQwNWwzLjAxMTgsMS44MjQyYTE1LjYwMywxNS42MDMsMCwwLDEsNS44OCw2LjM4MzVoMGExNS42MDMsMTUuNjAzLDAsMCwwLDUuODgsNi4zODM1bDQwLjExNDMsMjQuMjk2NGExMi44NjY0LDEyLjg2NjQsMCwwLDAsMTcuNjcwOS00LjM0aDBhMTIuODY2NCwxMi44NjY0LDAsMCwwLTQuMzQtMTcuNjcwOUwxNDcuODc0OSw5OS40MzkyYTE1LjYwMywxNS42MDMsMCwwLDAtOC4zODEyLTIuMjU0M2gwQTE1LjYwMywxNS42MDMsMCwwLDEsMTMxLjExMjUsOTQuOTMwN1oiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMzkuMTQzNyw5Ny4xNzkyYTE1LjU5NzMsMTUuNTk3MywwLDAsMS04LjAzMTItMi4yNDg1bC0zLjAxMTgtMS44MjQyQTguMDM4OCw4LjAzODgsMCwwLDAsMTE3LjA2LDk1LjgxNzhoMGE4LjAzODgsOC4wMzg4LDAsMCwwLDIuNzExMywxMS4wNDA1bDMuMDExOCwxLjgyNDJhMTUuNTk3LDE1LjU5NywwLDAsMSw1LjcwNjksNi4wNjQ4LDY3Ljg0ODEsNjcuODQ4MSwwLDAsMCwxMC42NTM2LTE3LjU2ODFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy01IiBkPSJNODMuMjUzNywxMzIuNTU2QTY3LjIzNDgsNjcuMjM0OCwwLDAsMSw5LjcxLDMyLjQyOTUsNjYuNzk3NCw2Ni43OTc0LDAsMCwxLDUxLjE4MzcsMS45NjY2bC4wMDA3LDBBNjYuNzk2Miw2Ni43OTYyLDAsMCwxLDEwMi4wNTEsOS43NTI1aDBBNjcuMjM0Niw2Ny4yMzQ2LDAsMCwxLDgzLjI1MzcsMTMyLjU1NloiLz4KICAgICAgICA8cGF0aCBpZD0iX1BhdGhfMiIgZGF0YS1uYW1lPSImbHQ7UGF0aCZndDsiIGNsYXNzPSJjbHMtNiIgZD0iTTIzLjQzOSw0MC43NDgyQTUxLjE5MDgsNTEuMTkwOCwwLDAsMCwxMTEuMDEsOTMuNzg4OSw1MS4xOTA4LDUxLjE5MDgsMCwwLDAsMjMuNDM5LDQwLjc0ODJaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy03IiBkPSJNNzkuNDMzLDExNi45ODJBNTEuMjE2Miw1MS4yMTYyLDAsMCwwLDExOC40MjQxLDY3LjAzN2E0OS4xMzkxLDQ5LjEzOTEsMCwwLDEtNS4wODY3LDIuMjc4OWMtMTUuNzAyOSw1Ljk2MDktMjkuNjg5NSwyLjExLTM2LjQ5ODcuMTMwOC0yMC40MzA3LTUuOTM5LTI0Ljc5LTE3LjM3ODUtMzkuMDQxNC0yNC41ODIzYTQ4LjMwOTIsNDguMzA5MiwwLDAsMC0xNC4wOTM5LTQuNTNjLS4wODYyLjEzOTUtLjE3OTMuMjczLS4yNjQ0LjQxMzVBNTEuMTkwNyw1MS4xOTA3LDAsMCwwLDc5LjQzMywxMTYuOTgyWiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K'", "body": "\nYou can query the 2.0 API for specific objects using a simple language which resembles SQL.\n\nNote that filtering and querying by username has been deprecated, due to privacy changes. \nSee the [announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-changes-gdpr/#changes-to-querying) \nfor details.\n\n---\n\n* [Supported endpoints](#supported-endpoints)\n* [Operators](#operators)\n* [Data types](#data-types)\n* [Querying](#querying)\n* [Sorting query results](#sorting-query-results)\n\n----\n\n### Supported endpoints\n\nMost 2.0 API resources that return paginated collections of objects support a single, shared, generic querying language that is used to filter down a result set.\n\nThis includes, but is in no way limited to:\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}/src\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).\nAs examples, the following queries could be used on the issue tracker endpoint (`/2.0/repositories/{workspace}/{slug}/issues/`):\n\n\t(state = \"open\" OR state = \"new\") AND assignee = null\n\treporter.nickname != \"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 parameter. To sort the response, add sort=. 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\n### Operators\n\nFiltering and sorting supports the following operators:\n\n| Operator | Definition | Example |\n|----------|--------------------------------|---------------------------------------|\n| \"=\" | test for equality | `nickname = \"evzijst\"` |\n| \"!=\" | not equal | `is_private != true` |\n| \"~\" | case-insensitive text contains | `description ~ \"beef\"` |\n| \"!~\" | case-insensitive not contains | `description !~ \"fubar\"` |\n| \">\" | greater than | `priority > \"major\"` |\n| \">=\" | greater than or equal | `priority <= \"trivial\"` |\n| \"<\" | less than | `id < 1234` |\n| \"<=\" | less than or equal | `updated_on <= 2015-03-04` |\n| \"IN\" | value present in list | `state IN (\"OPEN\", \"MERGED\")` |\n| \"NOT IN\" | value not present in list | `state NOT IN (\"DECLINED\", \"MERGED\")` |\n\n### Data types\n\nFiltering and sorting supports the following data types:\n\n| Type | Description | Example |\n|--------------|-----------------------------------------|-----------------|\n| **String** | any text inside double quotes | `\"foo\"` |\n| **Number** | arbitrary precision integers and floats | `1`, `-10.302` |\n| **Null** | to test for the absence of a value | `null` |\n| **boolean** | the unquoted strings true or false | `true`, `false` |\n| **datetime** | an unquoted [ISO-8601][iso-8601] date time string with the timezone offset, milliseconds and entire time component being optional | `2015-03-04T14:08:59.123+02:00`, `2015-03-04T14:08:59` Date time strings are assumed to be in UTC, unless an explicit timezone offset is provided |\n| **list** | a comma separated list of values enclosed in parentheses | `(\"a\", \"b\")`, `(1, 2)` |\n\n[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601\n\n### Querying\n\nObjects can be filtered based on their properties. In principle, every element in an object's JSON document schema can be used as a filter criterion.\n\nNote that while the array of objects in a paginated response is wrapped in an\nenvelope with a `values` element, this prefix should not be included in the\nquery fields (so use `/2.0/repositories/foo/bar/issues?q=state=\"new\"`, not\n`/2.0/repositories/foo/bar/issues?q=values.state=\"new\"`).\n\n\n### Examples\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.nickname = \"bitbucket\"\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.nickname = \"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.nickname+%3D+%22evzijst%22+AND+destination.branch.name+%3D+%22master%22\n```\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```\nstate IN (\"new\", \"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=state%20IN%20%28%22new%22%2C%20%22on%20hold%22%29%20AND%20assignee%20%3D%20null%20AND%20component%20%3D%20%22UI%22%20and%20updated%5Fon%20%3E%202015%2D11%2D11T00%3A00%3A00%2D07%3A00\n```\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:\n\n```\nname ~ \"erik/\"\n```\n```\n/2.0/repositories/{username}/{slug}/refs/?q=name+%7E+%22erik%2F%22\n```\n### Sorting query results\n\nYou can sort result sets using the ?sort= 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" }, { "anchor": "pagination", "title": "Pagination", "description": "Learn more about pagination", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjM4LjgyIDE1MS42Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2IyZDRmZjt9LmNscy0ye2ZpbGw6IzRjOWFmZjt9LmNscy0ze2ZpbGw6IzAwNTJjYzt9LmNscy00e29wYWNpdHk6MC42O30uY2xzLTV7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtNntmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTd7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudC0zKTt9LmNscy04e2ZpbGw6dXJsKCNsaW5lYXItZ3JhZGllbnQtNCk7fS5jbHMtOXtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTUpO30uY2xzLTEwLC5jbHMtMTEsLmNscy0xMntmaWxsOm5vbmU7fS5jbHMtMTB7c3Ryb2tlOiMzMzg0ZmY7fS5jbHMtMTAsLmNscy0xMSwuY2xzLTEyLC5jbHMtMTN7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjJweDt9LmNscy0xMXtzdHJva2U6I2ZmYWIwMDt9LmNscy0xMntzdHJva2U6I2ZhZmJmYzt9LmNscy0xM3tmaWxsOiNmZmFiMDA7c3Ryb2tlOiMyNjg0ZmY7fTwvc3R5bGU+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQiIHkxPSI2NS4xNyIgeDI9Ijg2LjM4IiB5Mj0iNjUuMTciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0YzlhZmYiLz48c3RvcCBvZmZzZXQ9IjAuMDgiIHN0b3AtY29sb3I9IiM0YzlhZmYiIHN0b3Atb3BhY2l0eT0iMC45NCIvPjxzdG9wIG9mZnNldD0iMC4yNCIgc3RvcC1jb2xvcj0iIzRjOWFmZiIgc3RvcC1vcGFjaXR5PSIwLjc4Ii8+PHN0b3Agb2Zmc2V0PSIwLjQ1IiBzdG9wLWNvbG9yPSIjNGM5YWZmIiBzdG9wLW9wYWNpdHk9IjAuNTMiLz48c3RvcCBvZmZzZXQ9IjAuNTUiIHN0b3AtY29sb3I9IiM0YzlhZmYiIHN0b3Atb3BhY2l0eT0iMC40Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC0yIiB4MT0iMTUyLjQ0IiB5MT0iNjUuMTciIHgyPSIyMzguODIiIHkyPSI2NS4xNyIgeGxpbms6aHJlZj0iI2xpbmVhci1ncmFkaWVudCIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTMiIHgxPSIxOC44NSIgeTE9IjExOC43OCIgeDI9IjEyNi4wOCIgeTI9IjExLjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwLjA2IiBzdG9wLWNvbG9yPSIjMDA2NWZmIi8+PHN0b3Agb2Zmc2V0PSIwLjE5IiBzdG9wLWNvbG9yPSIjMDA2NWZmIiBzdG9wLW9wYWNpdHk9IjAuOTQiLz48c3RvcCBvZmZzZXQ9IjAuNDYiIHN0b3AtY29sb3I9IiMwMDY1ZmYiIHN0b3Atb3BhY2l0eT0iMC43OCIvPjxzdG9wIG9mZnNldD0iMC44MiIgc3RvcC1jb2xvcj0iIzAwNjVmZiIgc3RvcC1vcGFjaXR5PSIwLjUzIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA2NWZmIiBzdG9wLW9wYWNpdHk9IjAuNCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtNCIgeDE9IjExMi43NSIgeTE9IjExOC43OCIgeDI9IjIxOS45NyIgeTI9IjExLjU2IiB4bGluazpocmVmPSIjbGluZWFyLWdyYWRpZW50LTMiLz48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC01IiB4MT0iNTAuOTciIHkxPSIxMzMuNjEiIHgyPSIxODcuODYiIHkyPSItMy4yOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMC42NiIgc3RvcC1jb2xvcj0iIzI1Mzg1OCIvPjxzdG9wIG9mZnNldD0iMC44OCIgc3RvcC1jb2xvcj0iIzI1Mzg1OCIgc3RvcC1vcGFjaXR5PSIwLjgzIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjUzODU4IiBzdG9wLW9wYWNpdHk9IjAuNyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5WaWV3IFZlcnNpb25zPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iU29mdHdhcmUiPjxjaXJjbGUgY2xhc3M9ImNscy0xIiBjeD0iOTQuNTMiIGN5PSIxNDcuOTMiIHI9IjMuNjciLz48Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjEwNi45NCIgY3k9IjE0Ny45MyIgcj0iMy42NyIvPjxjaXJjbGUgY2xhc3M9ImNscy0zIiBjeD0iMTE5LjM0IiBjeT0iMTQ3LjkzIiByPSIzLjY3Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxMzEuNzUiIGN5PSIxNDcuOTMiIHI9IjMuNjciLz48Y2lyY2xlIGNsYXNzPSJjbHMtMSIgY3g9IjE0NC4xNiIgY3k9IjE0Ny45MyIgcj0iMy42NyIvPjxnIGNsYXNzPSJjbHMtNCI+PHJlY3QgaWQ9Il9SZWN0YW5nbGVfIiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTUiIHk9IjI1LjkyIiB3aWR0aD0iODYuMzgiIGhlaWdodD0iNzguNDkiLz48L2c+PGcgY2xhc3M9ImNscy00Ij48cmVjdCBpZD0iX1JlY3RhbmdsZV8yIiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTYiIHg9IjE1Mi40NCIgeT0iMjUuOTIiIHdpZHRoPSI4Ni4zOCIgaGVpZ2h0PSI3OC40OSIvPjwvZz48cmVjdCBpZD0iX1JlY3RhbmdsZV8zIiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTciIHg9IjE2LjI4IiB5PSIxNC4xMiIgd2lkdGg9IjExMi4zNiIgaGVpZ2h0PSIxMDIuMDkiLz48cmVjdCBpZD0iX1JlY3RhbmdsZV80IiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTgiIHg9IjExMC4xOCIgeT0iMTQuMTIiIHdpZHRoPSIxMTIuMzYiIGhlaWdodD0iMTAyLjA5Ii8+PHJlY3QgaWQ9Il9SZWN0YW5nbGVfNSIgZGF0YS1uYW1lPSImbHQ7UmVjdGFuZ2xlJmd0OyIgY2xhc3M9ImNscy05IiB4PSI0Ny42OSIgd2lkdGg9IjE0My40NSIgaGVpZ2h0PSIxMzAuMzQiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNzkuMTYiIHkxPSIxNi4xOCIgeDI9IjExNy4yNCIgeTI9IjE2LjE4Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjYyLjkzIiB5MT0iMTYuMTgiIHgyPSI3Mi42IiB5Mj0iMTYuMTgiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iNzkuMTYiIHkxPSIyNi45NSIgeDI9IjExNy4yNCIgeTI9IjI2Ljk1Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjYyLjkzIiB5MT0iMjYuOTUiIHgyPSI3Mi42IiB5Mj0iMjYuOTUiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNzkuMTYiIHkxPSIzNy43MiIgeDI9IjE1MC43IiB5Mj0iMzcuNzIiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNjIuOTMiIHkxPSIzNy43MiIgeDI9IjcyLjYiIHkyPSIzNy43MiIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSIxNTAuNyIgeTE9IjQ4LjQ5IiB4Mj0iMTc1LjU5IiB5Mj0iNDguNDkiLz48bGluZSBjbGFzcz0iY2xzLTEyIiB4MT0iMTEwLjMyIiB5MT0iNDguNDkiIHgyPSIxNDMuMDUiIHkyPSI0OC40OSIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSI3OS4xNiIgeTE9IjQ4LjQ5IiB4Mj0iMTAxLjM3IiB5Mj0iNDguNDkiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNjIuOTMiIHkxPSI0OC40OSIgeDI9IjcyLjYiIHkyPSI0OC40OSIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI3OS4xNiIgeTE9IjU5LjI2IiB4Mj0iMTUwLjciIHkyPSI1OS4yNiIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI2Mi45MyIgeTE9IjU5LjI2IiB4Mj0iNzIuNiIgeTI9IjU5LjI2Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9Ijc5LjE2IiB5MT0iNzAuMDMiIHgyPSIxNzUuNTkiIHkyPSI3MC4wMyIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI2Mi45MyIgeTE9IjcwLjAzIiB4Mj0iNzIuNiIgeTI9IjcwLjAzIi8+PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9Ijc5LjE2IiB5MT0iODAuNzkiIHgyPSIxMTcuMjQiIHkyPSI4MC43OSIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI2Mi45MyIgeTE9IjgwLjc5IiB4Mj0iNzIuNiIgeTI9IjgwLjc5Ii8+PGxpbmUgY2xhc3M9ImNscy0xMyIgeDE9Ijc5LjE2IiB5MT0iOTEuNTYiIHgyPSIxNDkuMDYiIHkyPSI5MS41NiIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI2Mi45MyIgeTE9IjkxLjU2IiB4Mj0iNzIuNiIgeTI9IjkxLjU2Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjYyLjkzIiB5MT0iODAuNzkiIHgyPSI3Mi42IiB5Mj0iODAuNzkiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNjIuOTMiIHkxPSI5MS41NiIgeDI9IjcyLjYiIHkyPSI5MS41NiIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSI3OS4xNiIgeTE9IjEwMi4zMyIgeDI9IjExNy4yNCIgeTI9IjEwMi4zMyIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI2Mi45MyIgeTE9IjEwMi4zMyIgeDI9IjcyLjYiIHkyPSIxMDIuMzMiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iMTI1Ljk4IiB5MT0iMTEzLjEiIHgyPSIxNDkuMDYiIHkyPSIxMTMuMSIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSI3OS4xNiIgeTE9IjExMy4xIiB4Mj0iMTE3LjI0IiB5Mj0iMTEzLjEiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNjIuOTMiIHkxPSIxMTMuMSIgeDI9IjcyLjYiIHkyPSIxMTMuMSIvPjwvZz48L2c+PC9zdmc+'", "body": "\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| Field | Value |\n|------------|----------|\n| `size` | 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. |\n| `page` | Page number of the current results. This is an optional element that is not provided in all responses. |\n| `pagelen` | 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. |\n| `next` | 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. |\n| `previous` | 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. |\n| `values` | The list of objects. This contains at most `pagelen` objects. |\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" }, { "anchor": "partial-response", "title": "Partial responses", "description": "Tweak which fields are returned", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYyLjQ0ODcgMjEwLjExMTUiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTsKICAgICAgfQoKICAgICAgLmNscy0yLCAuY2xzLTYsIC5jbHMtOCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgfQoKICAgICAgLmNscy0yLCAuY2xzLTggewogICAgICAgIHN0cm9rZTogIzAwNjVmZjsKICAgICAgICBzdHJva2Utd2lkdGg6IDJweDsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwogICAgICB9CgogICAgICAuY2xzLTMgewogICAgICAgIGZpbGw6ICNlN2U4ZWM7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbDogI2ZmZTM4MDsKICAgICAgfQoKICAgICAgLmNscy01IHsKICAgICAgICBmaWxsOiAjZmZmMGIyOwogICAgICB9CgogICAgICAuY2xzLTYgewogICAgICAgIHN0cm9rZTogI2ZmOTkxZjsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuODE1NnB4OwogICAgICB9CgogICAgICAuY2xzLTYsIC5jbHMtOCB7CiAgICAgICAgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOwogICAgICB9CgogICAgICAuY2xzLTcgewogICAgICAgIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTsKICAgICAgICBmaWxsOiB1cmwoI2xpbmVhci1ncmFkaWVudCk7CiAgICAgIH0KCiAgICAgIC5jbHMtOSB7CiAgICAgICAgZmlsbDogI2Y0ZjVmNzsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iMTEzLjM4MTgiIHkxPSI0OS40MyIgeDI9IjE1My43ODkzIiB5Mj0iOS4wMjI1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZhZmJmYyIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuMjc4NiIgc3RvcC1jb2xvcj0iI2VmZjFmMyIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuNzY4OCIgc3RvcC1jb2xvcj0iI2QxZDZkZCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNjMWM3ZDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDx0aXRsZT5Eb2N1bWVudCBUYWJsZTwvdGl0bGU+CiAgPGcgY2xhc3M9ImNscy0xIj4KICAgIDxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPgogICAgICA8ZyBpZD0iT2JqZWN0cyI+CiAgICAgICAgPGxpbmUgY2xhc3M9ImNscy0yIiB4MT0iMTcuNDcxIiB5MT0iMTcxLjc1NzMiIHgyPSI3OS4yOTgiIHkyPSIxNzEuNzU3MyIvPgogICAgICAgIDxwb2x5Z29uIGlkPSJfUGF0aF8iIGRhdGEtbmFtZT0iJmx0O1BhdGgmZ3Q7IiBjbGFzcz0iY2xzLTMiIHBvaW50cz0iMTYyLjQ0NSAzOC43MTEgMTYyLjQ0NSAyMTAuMTExIDAgMjEwLjExMSAwIDAgMTIzLjcwNCAwIDE2Mi40MTUgMzguNzExIDE2Mi40NDUgMzguNzExIi8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy00IiB4PSIxOC45MTE3IiB5PSI3OC4xNTQyIiB3aWR0aD0iNDcuODQ4NSIgaGVpZ2h0PSI3OS42NTM3Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy01IiB4PSIxOC45MTE3IiB5PSI1MS42MDMiIHdpZHRoPSIxMjMuNDUyOSIgaGVpZ2h0PSIyNi41NTEyIi8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy02IiB4PSIxOC45MTE3IiB5PSI1MS42MDMiIHdpZHRoPSIxMjMuNDUyOSIgaGVpZ2h0PSIxMDYuMjA0OSIvPgogICAgICAgIDxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjY2Ljc2MDEiIHkxPSI1MS42MDMiIHgyPSI2Ni43NjAxIiB5Mj0iMTU3LjgwNzkiLz4KICAgICAgICA8bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI5MS4zMjg0IiB5MT0iNTEuNjAzIiB4Mj0iOTEuMzI4NCIgeTI9IjE1Ny44MDc5Ii8+CiAgICAgICAgPGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTE1Ljg5NjciIHkxPSI1MS42MDMiIHgyPSIxMTUuODk2NyIgeTI9IjE1Ny44MDc5Ii8+CiAgICAgICAgPGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTguOTExNyIgeTE9Ijc4LjE1NDIiIHgyPSIxNDIuMzY0NiIgeTI9Ijc4LjE1NDIiLz4KICAgICAgICA8bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIxOC45MTE3IiB5MT0iMTA0LjcwNTUiIHgyPSIxNDIuMzY0NiIgeTI9IjEwNC43MDU1Ii8+CiAgICAgICAgPGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTguOTExNyIgeTE9IjEzMS4yNTY3IiB4Mj0iMTQyLjM2NDYiIHkyPSIxMzEuMjU2NyIvPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtNyIgcG9pbnRzPSIxNjIuNDQ1IDM4LjcxMSAxNjIuNDE1IDM4LjcxMSAxMjMuODcyIDAuMTY5IDEyMy44NzIgNTkuOTIxIDE2Mi40NDUgMzkuMTM3IDE2Mi40NDUgMzguNzExIi8+CiAgICAgICAgPGxpbmUgY2xhc3M9ImNscy04IiB4MT0iMTguMzk3MyIgeTE9IjE4MS4zNDQiIHgyPSI3OS4xMTM1IiB5Mj0iMTgxLjM0NCIvPgogICAgICAgIDxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjE4LjM5NzMiIHkxPSIxOTAuOTMwNiIgeDI9IjUxLjMwNDkiIHkyPSIxOTAuOTMwNiIvPgogICAgICAgIDxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjE4LjM5NzMiIHkxPSIxNzEuNzU3MyIgeDI9Ijc5LjExMzUiIHkyPSIxNzEuNzU3MyIvPgogICAgICAgIDxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjE4LjM5NzMiIHkxPSIzNi4xNzA1IiB4Mj0iNzkuMTEzNSIgeTI9IjM2LjE3MDUiLz4KICAgICAgICA8bGluZSBjbGFzcz0iY2xzLTgiIHgxPSIxOC4zOTczIiB5MT0iMjYuNTgzOCIgeDI9Ijc5LjExMzUiIHkyPSIyNi41ODM4Ii8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy05IiBwb2ludHM9IjE2Mi40NDkgMzguNzQyIDEyMy43MDcgMzguNzQyIDEyMy43MDcgMCAxNjIuNDQ5IDM4Ljc0MiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K'", "body": "\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```json\n$ curl https://api.bitbucket.org/2.0/users/evzijst?fields=-links\n{\n \"nickname\": \"evzijst\",\n \"account_status\": \"active\",\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.display_name`)\n\nThe fields parameter can contain a list of multiple comma-separated field names\n(e.g. `fields=owner.display_name,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```json\n$ curl https://api.bitbucket.org/2.0/users/evzijst?fields=-links.*\n{\n \"nickname\": \"evzijst\",\n \"account_status\": \"active\",\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 nicknames 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.nickname,values.state&q=author.uuid%3D%22%7Bd301aafa-d676-4ee0-88be-962be7417567%7D%22\n{\n \"values\": [\n {\n \"reviewers\": [\n {\n \"nickname\": \"abhin\"\n },\n {\n \"nickname\": \"dtao\"\n },\n {\n \"nickname\": \"csomme\"\n }\n ],\n \"state\": \"OPEN\",\n \"id\": 11355\n },\n {\n \"reviewers\": [\n {\n \"nickname\": \"csomme\"\n },\n {\n \"nickname\": \"abhin\"\n },\n {\n \"nickname\": \"dstevens\"\n }\n ],\n \"state\": \"MERGED\",\n \"id\": 11347\n },\n {\n \"reviewers\": [\n {\n \"nickname\": \"csomme\"\n },\n {\n \"nickname\": \"jmooring\"\n },\n {\n \"nickname\": \"zdavis\"\n },\n {\n \"nickname\": \"flexbox\"\n }\n ],\n \"state\": \"OPEN\",\n \"id\": 11344\n }\n ]\n}\n```\n" }, { "anchor": "serialization", "title": "Schemas and Serialization", "description": "Learn more about object representations", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMjAuNzYyNCAyMDUuNTg2Ij4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLmNscy0xIHsKICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7CiAgICAgIH0KCiAgICAgIC5jbHMtMiwgLmNscy02IHsKICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7CiAgICAgIH0KCiAgICAgIC5jbHMtMTMsIC5jbHMtMywgLmNscy00LCAuY2xzLTYgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiAjYzFjN2QwOwogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAycHg7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMy43ODE2IDUuMjk0MzsKICAgICAgfQoKICAgICAgLmNscy01IHsKICAgICAgICBmaWxsOiAjMDA2NWZmOwogICAgICB9CgogICAgICAuY2xzLTYgewogICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDMuOTIxOSA1LjQ5MDc7CiAgICAgIH0KCiAgICAgIC5jbHMtNyB7CiAgICAgICAgZmlsbDogIzAwNTJjYzsKICAgICAgfQoKICAgICAgLmNscy04IHsKICAgICAgICBmaWxsOiAjNGM5YWZmOwogICAgICB9CgogICAgICAuY2xzLTkgewogICAgICAgIGZpbGw6ICMwMDQ5YjA7CiAgICAgIH0KCiAgICAgIC5jbHMtMTAgewogICAgICAgIGZpbGw6ICM1N2Q5YTM7CiAgICAgIH0KCiAgICAgIC5jbHMtMTEgewogICAgICAgIGZpbGw6ICM3OWYyYzA7CiAgICAgIH0KCiAgICAgIC5jbHMtMTIgewogICAgICAgIGZpbGw6ICMzNmIzN2U7CiAgICAgIH0KCiAgICAgIC5jbHMtMTMgewogICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDMuODY4MSA1LjQxNTQ7CiAgICAgIH0KCiAgICAgIC5jbHMtMTQgewogICAgICAgIGZpbGw6ICM0MjUyNmU7CiAgICAgIH0KCiAgICAgIC5jbHMtMTUgewogICAgICAgIGZpbGw6ICMzNDQ1NjM7CiAgICAgIH0KCiAgICAgIC5jbHMtMTYgewogICAgICAgIGZpbGw6ICM1MDVmNzk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDx0aXRsZT5JbnRlZ3JhdGlvbnM8L3RpdGxlPgogIDxnIGNsYXNzPSJjbHMtMSI+CiAgICA8ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj4KICAgICAgPGcgaWQ9Ik9iamVjdHMiPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMiI+CiAgICAgICAgICA8Zz4KICAgICAgICAgICAgPGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iNzUuMjExNCIgeTE9IjE4Ny44NTczIiB4Mj0iNzcuMDI0OCIgeTI9IjE4Ny4xMTA5Ii8+CiAgICAgICAgICAgIDxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjgxLjkyMDUiIHkxPSIxODUuMDk1NiIgeDI9IjEzOC4yMjEyIiB5Mj0iMTYxLjkyMDMiLz4KICAgICAgICAgICAgPGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iMTQwLjY2OSIgeTE9IjE2MC45MTI2IiB4Mj0iMTQyLjQ4MjQiIHkyPSIxNjAuMTY2MiIvPgogICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xzLTUiIHBvaW50cz0iMTk0LjUyNiAyNi41NTIgMTc2LjkwMSAzOC4yNDEgMTU5LjI3IDI2LjU1MiAxNzYuOTAxIDE0Ljg3IDE5NC41MjYgMjYuNTUyIi8+CiAgICAgICAgPGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTgzLjcxMzUiIHkxPSI0My4yMTg4IiB4Mj0iMTgzLjcxMzUiIHkyPSI5Ny44ODMyIi8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy03IiBwb2ludHM9IjE3Ni45MDEgMzguMjQxIDE3Ni45MDEgNTguMTY2IDE1OS4yNyA0Ni40NzcgMTU5LjI3IDI2LjU1MiAxNzYuOTAxIDM4LjI0MSIvPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtOCIgcG9pbnRzPSIxOTQuNTI2IDI2LjU1MiAxOTQuNTI2IDQ2LjQ3NyAxNzYuOTAxIDU4LjE2NiAxNzYuOTAxIDM4LjI0MSAxOTQuNTI2IDI2LjU1MiIvPgogICAgICAgIDxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQ3Ljk0ODgiIHkxPSI0Mi4yMTg4IiB4Mj0iMTU5LjExNzIiIHkyPSI0Mi4yMTg4Ii8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy01IiBwb2ludHM9IjIyMC43NjIgOTkuNzUyIDE2Ny44MTcgMTM0Ljg2NCAxMTQuODU0IDk5Ljc1MiAxNjcuODE3IDY0LjY1NyAyMjAuNzYyIDk5Ljc1MiIvPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtOSIgcG9pbnRzPSIxNjcuODE3IDEzNC44NjQgMTY3LjgxNyAxOTQuNzE4IDExNC44NTQgMTU5LjYwNiAxMTQuODU0IDk5Ljc1MiAxNjcuODE3IDEzNC44NjQiLz4KICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xzLTgiIHBvaW50cz0iMjIwLjc2MiA5OS43NTIgMjIwLjc2MiAxNTkuNjA2IDE2Ny44MTcgMTk0LjcxOCAxNjcuODE3IDEzNC44NjQgMjIwLjc2MiA5OS43NTIiLz4KICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xzLTEwIiBwb2ludHM9IjExMC41NDEgMjEuNjA0IDc3Ljk0OSA0My4yMTkgNDUuMzQ1IDIxLjYwNCA3Ny45NDkgMCAxMTAuNTQxIDIxLjYwNCIvPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtMTEiIHBvaW50cz0iMTEwLjU0MSAyMS42MDQgMTEwLjU0MSA1OC40NDkgNzcuOTQ5IDgwLjA2NCA3Ny45NDkgNDMuMjE5IDExMC41NDEgMjEuNjA0Ii8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy01IiBwb2ludHM9IjE0MS4xOSAxNDguMDczIDE2Ny44MTMgMTMwLjQxNyAxOTQuNDQ0IDE0OC4wNzMgMTY3LjgxMyAxNjUuNzE5IDE0MS4xOSAxNDguMDczIi8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy05IiBwb2ludHM9IjE2Ny44MTMgMTMwLjQxNyAxNjcuODEzIDEwMC4zMjEgMTk0LjQ0NCAxMTcuOTc2IDE5NC40NDQgMTQ4LjA3MyAxNjcuODEzIDEzMC40MTciLz4KICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xzLTgiIHBvaW50cz0iMTQxLjE5IDE0OC4wNzMgMTQxLjE5IDExNy45NzYgMTY3LjgxMyAxMDAuMzIxIDE2Ny44MTMgMTMwLjQxNyAxNDEuMTkgMTQ4LjA3MyIvPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtMTIiIHBvaW50cz0iNDUuMzQ1IDIxLjYwNCA0NS4zNDUgNDQuOTg0IDU3LjIzMSA1Mi44NjQgNTcuMjMxIDY2LjI5NiA3Ny45NDkgODAuMDY0IDc3Ljk0OSA0My4yMTkgNDUuMzQ1IDIxLjYwNCIvPgogICAgICAgIDxnIGNsYXNzPSJjbHMtMiI+CiAgICAgICAgICA8Zz4KICAgICAgICAgICAgPGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iMjQuNjQzOCIgeTE9Ijg2Ljk1NDQiIHgyPSIyNi4wMTU3IiB5Mj0iODUuNTUzMSIvPgogICAgICAgICAgICA8bGluZSBjbGFzcz0iY2xzLTEzIiB4MT0iMjkuODA0IiB5MT0iODEuNjgzNCIgeDI9IjYwLjM4MTEiIHkyPSI1MC40NDkyIi8+CiAgICAgICAgICAgIDxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjYyLjI3NTIiIHkxPSI0OC41MTQzIiB4Mj0iNjMuNjQ3IiB5Mj0iNDcuMTEzIi8+CiAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtNSIgcG9pbnRzPSIzNS4yNTUgODkuNjQ1IDE3LjczNiAxMDEuNDkyIDAgODkuOTYyIDE3LjUyNSA3OC4xMjEgMzUuMjU1IDg5LjY0NSIvPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtNyIgcG9pbnRzPSIxNy43MzYgMTAxLjQ5MiAxNy45MTUgMTIxLjQxNiAwLjE3OSAxMDkuODg3IDAgODkuOTYyIDE3LjczNiAxMDEuNDkyIi8+CiAgICAgICAgPGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMjAuNTg0OSIgeTE9IjEwNS41MzA1IiB4Mj0iNjUuODc0OSIgeTI9IjE3MS4zNjgxIi8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy04IiBwb2ludHM9IjM1LjI1NSA4OS42NDUgMzUuNDM0IDEwOS41NjkgMTcuOTE1IDEyMS40MTYgMTcuNzM2IDEwMS40OTIgMzUuMjU1IDg5LjY0NSIvPgogICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHMtMTQiIHBvaW50cz0iOTIuMzk0IDE3My44MTUgNzQuODc1IDE4NS42NjIgNTcuMTM5IDE3NC4xMzIgNzQuNjY0IDE2Mi4yOTEgOTIuMzk0IDE3My44MTUiLz4KICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xzLTE1IiBwb2ludHM9Ijc0Ljg3NSAxODUuNjYyIDc1LjA1NCAyMDUuNTg2IDU3LjMxOSAxOTQuMDU3IDU3LjEzOSAxNzQuMTMyIDc0Ljg3NSAxODUuNjYyIi8+CiAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNscy0xNiIgcG9pbnRzPSI5Mi4zOTQgMTczLjgxNSA5Mi41NzQgMTkzLjczOSA3NS4wNTQgMjA1LjU4NiA3NC44NzUgMTg1LjY2MiA5Mi4zOTQgMTczLjgxNSIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K'", "body": "\n----\n\n* [Open API Specification](#open-api-specification)\n* [JSON Schema](#json-schema)\n* [Condensed Versus Full Objects](#condensed-versus-full-objects)\n\n____\n\n\n### Open API Specification\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\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\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" }, { "anchor": "uri-uuid", "title": "URI, UUID, and structures", "description": "URL's, UUID's, errors, and timestamps", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTc5LjI2IDE3Ny42NSI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50KTt9LmNscy0ye2ZpbGw6IzA5MWU0Mjt9LmNscy0xMCwuY2xzLTExLC5jbHMtMywuY2xzLTQsLmNscy05e2ZpbGw6bm9uZTt9LmNscy0ze3N0cm9rZTojOTljMWZmO30uY2xzLTMsLmNscy00e3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MDt9LmNscy0xMiwuY2xzLTQsLmNscy05e3N0cm9rZTojZTVlOGVjO30uY2xzLTV7ZmlsbDojMzQ0NTYzO30uY2xzLTZ7ZmlsbDojZmY4YjAwO30uY2xzLTd7ZmlsbDojZmZjNDAwO30uY2xzLTh7ZmlsbDojMDA2NWZmO30uY2xzLTEwLC5jbHMtMTEsLmNscy0xMiwuY2xzLTEzLC5jbHMtOXtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MnB4O30uY2xzLTEwe3N0cm9rZTojZmZhYjAwO30uY2xzLTExLC5jbHMtMTN7c3Ryb2tlOiMwMDY1ZmY7fS5jbHMtMTJ7ZmlsbDojOTljMWZmO30uY2xzLTEze2ZpbGw6I2U1ZThlYzt9PC9zdHlsZT48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudCIgeDE9IjAuNCIgeTE9IjE3OC4wNSIgeDI9IjE3OC44NSIgeTI9Ii0wLjQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwOTFlNDIiLz48c3RvcCBvZmZzZXQ9IjAuMDciIHN0b3AtY29sb3I9IiMwZDIyNDUiLz48c3RvcCBvZmZzZXQ9IjAuNDkiIHN0b3AtY29sb3I9IiMxZjMyNTMiLz48c3RvcCBvZmZzZXQ9IjAuNzkiIHN0b3AtY29sb3I9IiMyNTM4NTgiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+Q29kZTwvdGl0bGU+PGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+PGcgaWQ9IlNvZnR3YXJlIj48cmVjdCBpZD0iX1JlY3RhbmdsZV8iIGRhdGEtbmFtZT0iJmx0O1JlY3RhbmdsZSZndDsiIGNsYXNzPSJjbHMtMSIgd2lkdGg9IjE3OS4yNiIgaGVpZ2h0PSIxNzcuNjUiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNzkuMjYsMjYuNjRIMFY3MS43NUExNjYuNDEsMTY2LjQxLDAsMCwwLDYzLjI0LDU5LjUxYTE4OC40MSwxODguNDEsMCwwLDAsMTcuMzktOC4zNmMxOC40NC05LjQzLDQ4LjM3LTE3LjksOTguNjItMTNabS0xNTkuNDQsMzRoMFptMC0xNC4wOGgwWiIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjE5LjgxIiB5MT0iNDYuNTgiIHgyPSIyNS4wNyIgeTI9IjQ2LjU4Ii8+PGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iMjUuMDciIHkxPSI2MC42NiIgeDI9IjE5LjgxIiB5Mj0iNjAuNjYiLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIxOS44MSIgeTE9Ijc0Ljc0IiB4Mj0iMjUuMDciIHkyPSI3NC43NCIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjI1LjA3IiB5MT0iODguODIiIHgyPSIxOS44MSIgeTI9Ijg4LjgyIi8+PGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iMjUuMDciIHkxPSIxMDIuODkiIHgyPSIxOS44MSIgeTI9IjEwMi44OSIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjI1LjA3IiB5MT0iMTE2Ljk3IiB4Mj0iMTkuODEiIHkyPSIxMTYuOTciLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIyNS4wNyIgeTE9IjEzMS4wNSIgeDI9IjE5LjgxIiB5Mj0iMTMxLjA1Ii8+PGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iMjUuMDciIHkxPSIxNDUuMTMiIHgyPSIxOS44MSIgeTI9IjE0NS4xMyIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjI1LjA3IiB5MT0iMTU5LjIxIiB4Mj0iMTkuODEiIHkyPSIxNTkuMjEiLz48bGluZSBjbGFzcz0iY2xzLTQiIHgxPSI1NS44OSIgeTE9IjEzMS4wNSIgeDI9IjkzLjk5IiB5Mj0iMTMxLjA1Ii8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iNTUuODkiIHkxPSIxNDUuMTMiIHgyPSIxMzkuNjciIHkyPSIxNDUuMTMiLz48cmVjdCBjbGFzcz0iY2xzLTUiIHdpZHRoPSIxNzkuMjYiIGhlaWdodD0iMjYuNjQiLz48Y2lyY2xlIGNsYXNzPSJjbHMtNiIgY3g9IjEzLjUiIGN5PSIxMi4wOCIgcj0iNS4xMSIvPjxjaXJjbGUgY2xhc3M9ImNscy03IiBjeD0iMzAuMTgiIGN5PSIxMi4wOCIgcj0iNS4xMSIvPjxjaXJjbGUgY2xhc3M9ImNscy04IiBjeD0iNDYuODYiIGN5PSIxMi4wOCIgcj0iNS4xMSIvPjxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTc1LjQxLDg4LjgyIi8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNMzIuODksODguODIiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iMzIuODkiIHkxPSI3NC43NCIgeDI9Ijc1LjQxIiB5Mj0iNzQuNzQiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iMzIuODkiIHkxPSI2MC42NiIgeDI9Ijc1LjQxIiB5Mj0iNjAuNjYiLz48bGluZSBjbGFzcz0iY2xzLTkiIHgxPSIzMi44OSIgeTE9IjQ2LjU4IiB4Mj0iNTUuODkiIHkyPSI0Ni41OCIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSIxOS44MSIgeTE9IjQ2LjU4IiB4Mj0iMjUuMDciIHkyPSI0Ni41OCIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSIxOS44MSIgeTE9IjYwLjY2IiB4Mj0iMjUuMDciIHkyPSI2MC42NiIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSIxOS44MSIgeTE9Ijc0Ljc0IiB4Mj0iMjUuMDciIHkyPSI3NC43NCIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSIxOS44MSIgeTE9Ijg4LjgyIiB4Mj0iMjUuMDciIHkyPSI4OC44MiIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSIxOS44MSIgeTE9IjEwMi44OSIgeDI9IjI1LjA3IiB5Mj0iMTAyLjg5Ii8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjE5LjgxIiB5MT0iMTE2Ljk3IiB4Mj0iMjUuMDciIHkyPSIxMTYuOTciLz48bGluZSBjbGFzcz0iY2xzLTEyIiB4MT0iMTkuODEiIHkxPSIxMzEuMDUiIHgyPSIyNS4wNyIgeTI9IjEzMS4wNSIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSIxOS44MSIgeTE9IjE0NS4xMyIgeDI9IjI1LjA3IiB5Mj0iMTQ1LjEzIi8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjE5LjgxIiB5MT0iMTU5LjIxIiB4Mj0iMjUuMDciIHkyPSIxNTkuMjEiLz48bGluZSBpZD0iX0xpbmVfIiBkYXRhLW5hbWU9IiZsdDtMaW5lJmd0OyIgY2xhc3M9ImNscy0xMCIgeDE9Ijg0LjI0IiB5MT0iMTE2Ljk3IiB4Mj0iMTU2LjY1IiB5Mj0iMTE2Ljk3Ii8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNMzIuODksMTE3aDBaIi8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjEwMiIgeTE9IjEzMS4wNSIgeDI9IjE2My42MiIgeTI9IjEzMS4wNSIvPjxsaW5lIGNsYXNzPSJjbHMtMTMiIHgxPSI1NS44OSIgeTE9IjEzMS4wNSIgeDI9IjkzLjk5IiB5Mj0iMTMxLjA1Ii8+PGxpbmUgY2xhc3M9ImNscy0xMyIgeDE9IjU1Ljg5IiB5MT0iMTQ1LjEzIiB4Mj0iMTM5LjY3IiB5Mj0iMTQ1LjEzIi8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iNzguOSIgeTE9IjE1OS4yMSIgeDI9IjExMy41MSIgeTI9IjE1OS4yMSIvPjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjU5LjYxIiB5MT0iODguODIiIHgyPSI5OS4zMyIgeTI9Ijg4LjgyIi8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iNTkuNjEiIHkxPSIxMDIuODkiIHgyPSI5OS4zMyIgeTI9IjEwMi44OSIvPjxjaXJjbGUgY2xhc3M9ImNscy02IiBjeD0iMTMuNSIgY3k9IjEyLjA4IiByPSI1LjExIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTciIGN4PSIzMC4xOCIgY3k9IjEyLjA4IiByPSI1LjExIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTgiIGN4PSI0Ni44NiIgY3k9IjEyLjA4IiByPSI1LjExIi8+PC9nPjwvZz48L3N2Zz4='", "body": "\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\n* [URI structure](#uri-structure)\n* [HTTP methods](#http-methods)\n* [UUID](#universally-unique-identifier)\n * [User object and UUID](#user-object-and-uuid)\n * [Repository object and UUID](#repository-object-and-uuid)\n * [Team object and UUID](#team-object-and-uuid)\n* [Standard error responses](#standardized-error-responses)\n* [Standard ISO-8601 timestamps](#standard-iso-8601-timestamps)\n\n----\n\n\n### URI structure\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\n#### HTTP methods\n\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| Call | Description |\n|------|-------------|\n| GET | Retrieves information. |\n| PUT | Updates existing information. |\n| POST | Creates new information. |\n| DELETE | Removes existing information. |\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:app_password https://api.bitbucket.org/1.0/emails/rap@atlassian.com\n```\n\n### Universally Unique Identifier\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\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 \"nickname\": \"tutorials\",\n \"account_status\": \"active\",\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\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\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 \"nickname\": \"tutorials\",\n \"account_status\": \"active\",\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 \"nickname\": \"dans9190\",\n \"account_status\": \"active\",\n \"uuid\": \"{1cd06601-cd0e-4fce-be03-e9ac226978b7}\",\n \"website\": \"\"\n }\n ]\n}\n```\n\n### Standardized error responses\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 \"type\": \"error\",\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| Element | Description |\n|---------|-------------|\n| message | A short description of the problem. This element is always present. Its value may be localized. |\n| fields | 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. |\n| detail | An optional detailed explanation of the failure. Its value may be localized.\n| id | 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. |\n\n### Standard ISO-8601 timestamps\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" }, { "anchor": "cors-hypermedia", "title": "Cors and hypermedia", "description": "Learn about resources and linking", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjM2LjYgMjE4LjQzIj48ZGVmcz48c3R5bGU+LmNscy0xe2lzb2xhdGlvbjppc29sYXRlO30uY2xzLTIsLmNscy0zLC5jbHMtNHtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjExcHg7fS5jbHMtMntzdHJva2U6dXJsKCNsaW5lYXItZ3JhZGllbnQpO30uY2xzLTN7c3Ryb2tlOnVybCgjTmV3X0dyYWRpZW50X1N3YXRjaF8xNCk7fS5jbHMtNHtzdHJva2U6dXJsKCNOZXdfR3JhZGllbnRfU3dhdGNoXzEpO30uY2xzLTV7ZmlsbDojNDI1MjZlO30uY2xzLTZ7ZmlsbDojZmY1NjMwO30uY2xzLTEwLC5jbHMtNywuY2xzLTh7bWl4LWJsZW5kLW1vZGU6bXVsdGlwbHk7fS5jbHMtN3tmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTh7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudC0zKTt9LmNscy05e2ZpbGw6IzAwNjVmZjt9LmNscy0xMHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTQpO308L3N0eWxlPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB5MT0iMTY3Ljg3IiB4Mj0iMTkxLjU2IiB5Mj0iMTY3Ljg3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNTA1Zjc5Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzQ0NTYzIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9Ik5ld19HcmFkaWVudF9Td2F0Y2hfMTQiIHgxPSIxMTIuODMiIHkxPSIxMzEuNzIiIHgyPSIyMzYuNiIgeTI9IjEzMS43MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzAwNTJjYyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzI2ODRmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJOZXdfR3JhZGllbnRfU3dhdGNoXzEiIHgxPSI0NS4wNiIgeTE9Ijg2LjY5IiB4Mj0iMTY4Ljg4IiB5Mj0iODYuNjkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNkZTM1MGIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZjc0NTIiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTIiIHgxPSIzNDQ3LjkzIiB5MT0iLTkxOC43OSIgeDI9IjM0NTEuNCIgeTI9Ii0xMDMyLjc2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKC01NzIuMzggMzcwNC4yOSkgcm90YXRlKC02NC4zNCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAuMzEiIHN0b3AtY29sb3I9IiNjMWM3ZDAiIHN0b3Atb3BhY2l0eT0iMCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2MxYzdkMCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMyIgeDE9IjM1MDYuNiIgeTE9Ii03OTYuNjYiIHgyPSIzNTEwLjA3IiB5Mj0iLTkxMC42MyIgeGxpbms6aHJlZj0iI2xpbmVhci1ncmFkaWVudC0yIi8+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtNCIgeDE9IjM1ODEuNjgiIHkxPSItOTA2LjgyIiB4Mj0iMzU4NS4xNiIgeTI9Ii0xMDIwLjc5IiB4bGluazpocmVmPSIjbGluZWFyLWdyYWRpZW50LTIiLz48L2RlZnM+PHRpdGxlPldlYmhvb2tzPC90aXRsZT48ZyBjbGFzcz0iY2xzLTEiPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJTb2Z0d2FyZSI+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTg2LjA2LDE2Ny44N0gxMTcuNzJBMjcuNTgsMjcuNTgsMCwwLDAsOTIuMjQsMTg1YTQ1LjA2LDQ1LjA2LDAsMSwxLTQxLjY4LTYyLjE5Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTE4LjMzLDUwLjUybDM0LjE1LDU5LjE4YTI3LjU5LDI3LjU5LDAsMCwwLDI3LjU4LDEzLjUxLDQ1LjA2LDQ1LjA2LDAsMSwxLTMzLDY3LjE5Ii8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNTAuNTYsMTY3Ljg3bDM0LjE4LTU5LjE2YTI3LjU5LDI3LjU5LDAsMCwwLTIuMDktMzAuNjQsNDUuMDYsNDUuMDYsMCwxLDEsNzQuNy01Ii8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMTg2LjA2LDE5OS42NmEzMS43OSwzMS43OSwwLDEsMSwzMS43OS0zMS43OUEzMS44MiwzMS44MiwwLDAsMSwxODYuMDYsMTk5LjY2WiIvPjxnIGlkPSJfR3JvdXBfIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTQ5LjU2LDE5OS42NGEzMS43OSwzMS43OSwwLDEsMSwzMi43Ny0zMC43N0EzMS44MiwzMS44MiwwLDAsMSw0OS41NiwxOTkuNjRaIi8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTU0LjEyLDE4MC4zNmE1OC45LDU4LjksMCwwLDAtMS41OS0xMS4yN3MtMi4zNS05LjQ0LTcuMzMtMTYuODNhNDMuODksNDMuODksMCwwLDAtMTEuNzMtMTEuMTcsMzEuNzcsMzEuNzcsMCwwLDAsMjkuMjgsNTYuMTNDNTguMjksMTkyLjQ0LDU0LjY4LDE4Ni45LDU0LjEyLDE4MC4zNloiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0xODkuNjIsMTgwLjM2QTU4LjksNTguOSwwLDAsMCwxODgsMTY5LjA4cy0yLjM1LTkuNDQtNy4zMy0xNi44M0E0My44OSw0My44OSwwLDAsMCwxNjksMTQxLjA4YTMxLjc3LDMxLjc3LDAsMCwwLDI5LjI4LDU2LjEzQzE5My43OSwxOTIuNDQsMTkwLjE4LDE4Ni45LDE4OS42MiwxODAuMzZaIi8+PGcgaWQ9Il9Hcm91cF8yIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPjxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTg5LjksMzMuNzhhMzIuNDYsMzIuNDYsMCwxLDEsMTEuODgsNDQuMzRBMzIuNDksMzIuNDksMCwwLDEsODkuOSwzMy43OFoiLz48L2c+PHBhdGggY2xhc3M9ImNscy0xMCIgZD0iTTEyMi4yMyw2Ni4xM2E1OC45LDU4LjksMCwwLDAtMS41OS0xMS4yN3MtMi4zNS05LjQ0LTcuMzMtMTYuODNjLTMuMzctNS05LjA2LTkuNzktMTUuNDMtMTMuNDhBMzIuNDQsMzIuNDQsMCwwLDAsMTI4Ljc3LDgwLjZDMTI1LjMxLDc2LjM5LDEyMi43LDcxLjYxLDEyMi4yMyw2Ni4xM1oiLz48L2c+PC9nPjwvZz48L3N2Zz4='", "body": "\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\n* [CORS](#cors)\n* [Supported content types](#supported-content-types)\n* [Resource links](#resource-links)\n\n----\n\n### Cors\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\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\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 \"nickname\": \"tutorials\",\n \"account_status\": \"active\",\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" }, { "anchor": "bb-connect", "title": "Integrating with Bitbucket Cloud", "description": "Build Bitbucket integration with Forge or Atlassian Connect", "icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjU3LjMxNjMgMTYyLjU5OTQiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMzQ0NTYzOwogICAgICB9CgogICAgICAuY2xzLTMgewogICAgICAgIGZpbGw6ICMxZGI5ZDQ7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbDogIzAwNTdkODsKICAgICAgfQoKICAgICAgLmNscy01LCAuY2xzLTcsIC5jbHMtOSB7CiAgICAgICAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5OwogICAgICB9CgogICAgICAuY2xzLTUgewogICAgICAgIGZpbGw6IHVybCgjTjc1KTsKICAgICAgfQoKICAgICAgLmNscy02IHsKICAgICAgICBmaWxsOiAjMDA2NWZmOwogICAgICB9CgogICAgICAuY2xzLTcgewogICAgICAgIGZpbGw6IHVybCgjTjc1LTIpOwogICAgICB9CgogICAgICAuY2xzLTggewogICAgICAgIGZpbGw6IHVybCgjbGluZWFyLWdyYWRpZW50KTsKICAgICAgfQoKICAgICAgLmNscy05IHsKICAgICAgICBmaWxsOiB1cmwoI043NS0zKTsKICAgICAgfQoKICAgICAgLmNscy0xMCB7CiAgICAgICAgZmlsbDogdXJsKCNUMjAwLVQ3NSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9Ik43NSIgeDE9Ii0yMTg5LjU1NiIgeTE9IjI4MDguMjI4NCIgeDI9Ii0yMDkxLjE1NTEiIHkyPSIyODA4LjIyODQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC4xNjgxLCAwLjk4NTgsIDAuOTg1OCwgLTAuMTY4MSwgLTIzNzMuNzM2LCAyNzIyLjEyNzgpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2U1ZThlYyIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNlNWU4ZWMiIHN0b3Atb3BhY2l0eT0iMC4xIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJONzUtMiIgZGF0YS1uYW1lPSJONzUiIHgxPSItMjE2OC41OTQ3IiB5MT0iMjkzNS4wNTU2IiB4Mj0iLTIwNzAuMTkzNyIgeTI9IjI5MzUuMDU1NiIgeGxpbms6aHJlZj0iI043NSIvPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQiIHgxPSIxOTAuMzU0NyIgeTE9IjE1OS45NjciIHgyPSIyNTkuOTQ4NyIgeTI9IjkwLjM3MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMzNDQ1NjMiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNWU2Yzg0Ii8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJONzUtMyIgZGF0YS1uYW1lPSJONzUiIHgxPSItMjI1Ny4zOTc3IiB5MT0iMjg4NC4yMjYzIiB4Mj0iLTIxNTguOTk2NyIgeTI9IjI4ODQuMjI2MyIgeGxpbms6aHJlZj0iI043NSIvPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJUMjAwLVQ3NSIgeDE9IjEyNi4wMjU3IiB5MT0iODUuMTA4IiB4Mj0iMTk1LjYxOTciIHkyPSIxNS41MTQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjM2RjN2RjIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzljZTNlZSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHRpdGxlPkFkZCBPbiBCbG9ja3MgMjwvdGl0bGU+CiAgPGcgY2xhc3M9ImNscy0xIj4KICAgIDxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPgogICAgICA8ZyBpZD0iT2JqZWN0cyI+CiAgICAgICAgPHJlY3QgaWQ9Il9SZWN0YW5nbGVfIiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTIiIHg9IjEyOC42NTgxIiB5PSI4Ny43NDA1IiB3aWR0aD0iNjQuMzI5MSIgaGVpZ2h0PSI3NC44NTkiLz4KICAgICAgICA8cmVjdCBpZD0iX1JlY3RhbmdsZV8yIiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTMiIHg9IjY0LjMyOTEiIHk9IjEyLjg4MTUiIHdpZHRoPSI2NC4zMjkxIiBoZWlnaHQ9Ijc0Ljg1OSIvPgogICAgICAgIDxyZWN0IGlkPSJfUmVjdGFuZ2xlXzMiIGRhdGEtbmFtZT0iJmx0O1JlY3RhbmdsZSZndDsiIGNsYXNzPSJjbHMtNCIgeT0iODcuNzQwNSIgd2lkdGg9IjY0LjMyOTEiIGhlaWdodD0iNzQuODU5Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy01IiBkPSJNNjQuMzI5MSw4Ny43NEg1OC42NTIzYTYyLjc4NzcsNjIuNzg3NywwLDAsMC0yNC41Njg0LDIwLjc2MjFjLTguMjYwNywxMi4xOTYtNC4zNDM3LDE4LjI0MTUtMTEuNjYzNywzMS42Mzk1QzE2LjUxLDE1MC45Niw4LjA1MSwxNTcuODIsMCwxNjIuNTU2di4wNDM1aDY0LjMyOVoiLz4KICAgICAgICA8cmVjdCBpZD0iX1JlY3RhbmdsZV80IiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTYiIHg9IjY0LjMyOTEiIHk9Ijg3Ljc0MDUiIHdpZHRoPSI2NC4zMjkxIiBoZWlnaHQ9Ijc0Ljg1OSIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTE5Mi45ODcyLDg3Ljc0SDE4My4zNDNhNjIuNzg3Nyw2Mi43ODc3LDAsMCwwLTI0LjU2ODQsMjAuNzYyMWMtOC4yNjA3LDEyLjE5Ni00LjM0MzgsMTguMjQxNS0xMS42NjM3LDMxLjYzOTVhNTYuNzI0Niw1Ni43MjQ2LDAsMCwxLTE4LjQ1MjcsMTkuOTF2Mi41NDc0aDY0LjMyOVoiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjE5Mi45ODcyIiB5PSI4Ny43NDA1IiB3aWR0aD0iNjQuMzI5MSIgaGVpZ2h0PSI3NC44NTkiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik0xMjguNjU4MiwxMi44ODE1SDExNi41OUE2MS45NjQ2LDYxLjk2NDYsMCwwLDAsMTAxLjMyMzMsMjguMjE1QzkzLjA2MjUsNDAuNDEwOSw5Ni45Nzk0LDQ2LjQ1NjUsODkuNjYsNTkuODU0NCw4My4wMzE2LDcxLjk4NTcsNzMuMTk3LDc5LjE1MTQsNjQuMzI5MSw4My45MTA4djMuODNoNjQuMzI5MVoiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTEwIiB4PSIxMjguNjU4MSIgeT0iMTIuODgxNSIgd2lkdGg9IjY0LjMyOTEiIGhlaWdodD0iNzQuODU5Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy00IiB4PSIxMC4xNjA1IiB5PSI3NC44NTkiIHdpZHRoPSIyNC43NTM2IiBoZWlnaHQ9IjEyLjg4MTUiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTQiIHg9IjUxLjk1MjMiIHk9Ijc0Ljg1OSIgd2lkdGg9IjI0Ljc1MzYiIGhlaWdodD0iMTIuODgxNSIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtNCIgeD0iOTMuNzQ0MSIgeT0iNzQuODU5IiB3aWR0aD0iMjQuNzUzNiIgaGVpZ2h0PSIxMi44ODE1Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxMzguODE4NiIgeT0iNzQuODU5IiB3aWR0aD0iMjQuNzUzNiIgaGVpZ2h0PSIxMi44ODE1Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxODAuNjEwNCIgeT0iNzQuODU5IiB3aWR0aD0iMjQuNzUzNiIgaGVpZ2h0PSIxMi44ODE1Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yIiB4PSIyMjIuNDAyMiIgeT0iNzQuODU5IiB3aWR0aD0iMjQuNzUzNiIgaGVpZ2h0PSIxMi44ODE1Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSI3NC40ODk1IiB3aWR0aD0iMjQuNzUzNiIgaGVpZ2h0PSIxMi44ODE1Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0zIiB4PSIxMTYuMjgxNCIgd2lkdGg9IjI0Ljc1MzYiIGhlaWdodD0iMTIuODgxNSIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTU4LjA3MzIiIHdpZHRoPSIyNC43NTM2IiBoZWlnaHQ9IjEyLjg4MTUiLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg=='", "body": "\nYou can use [Forge](https://developer.atlassian.com/cloud/bitbucket/getting-started-with-forge/) \nor [Atlassian Connect](https://developer.atlassian.com/cloud/bitbucket/getting-started-with-connect/) \nto build apps which can connect with the Bitbucket UI and your own application set. An app 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[integrating with Bitbucket Cloud](https://developer.atlassian.com/cloud/bitbucket/)\n" } ] }, "servers": [ { "url": "https://api.bitbucket.org/2.0" } ], "components": { "requestBodies": { "bitbucket.apps.permissions.serializers.ProjectPermissionUpdateSchema": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/bitbucket.apps.permissions.serializers.ProjectPermissionUpdateSchema" } } }, "description": "The permission to grant", "required": true }, "application_property": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/application_property" } } }, "description": "The application property to create or update.", "required": true }, "pipeline_variable": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } }, "description": "The updated variable.", "required": true }, "snippet": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/snippet" } } }, "description": "The new snippet object.", "required": true }, "bitbucket.apps.permissions.serializers.RepoPermissionUpdateSchema": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/bitbucket.apps.permissions.serializers.RepoPermissionUpdateSchema" } } }, "description": "The permission to grant", "required": true }, "pipeline_variable2": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/pipeline_variable" } } }, "description": "The variable to create." }, "project": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project" } } }, "required": true } }, "securitySchemes": { "basic": { "type": "http", "description": "Basic HTTP Authentication as per [RFC-2617](https://tools.ietf.org/html/rfc2617) (Digest not supported). Note that Basic Auth is available only with username and app password as credentials.", "scheme": "basic" }, "oauth2": { "type": "oauth2", "description": "OAuth 2 as per [RFC-6749](https://tools.ietf.org/html/rfc6749).", "flows": { "authorizationCode": { "authorizationUrl": "https://bitbucket.org/site/oauth2/authorize", "tokenUrl": "https://bitbucket.org/site/oauth2/access_token", "scopes": { "repository": "Read your repositories", "repository:write": "Read and modify your repositories", "repository:admin": "Administer your repositories", "repository:delete": "Delete your repositories", "project": "Read your workspace's project settings and read repositories contained within your workspace's projects", "project:admin": "Read and modify settings for projects in your workspace", "email": "Read your account's primary email address", "account": "Read your account information", "account:write": "Read and modify your account information", "team": "Read your team membership information", "team:write": "Read and modify your team membership information", "pipeline": "Access your repositories' build pipelines", "pipeline:write": "Access and rerun your repositories' build pipelines", "pipeline:variable": "Access your repositories' build pipelines and configure their variables", "runner": "Access your workspaces/repositories' runners", "runner:write": "Access and edit your workspaces/repositories' runners", "pullrequest": "Read your repositories and their pull requests", "pullrequest:write": "Read and modify your repositories and their pull requests", "webhook": "Read and modify your repositories' webhooks", "issue": "Read your repositories' issues", "issue:write": "Read and modify your repositories' issues", "snippet": "Read your snippets", "snippet:write": "Read and modify your snippets", "wiki": "Read and modify your repositories' wikis" } } } }, "api_key": { "name": "Authorization", "type": "apiKey", "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" } }, "schemas": { "application_property": { "additionalProperties": true, "type": "object", "title": "Application Property", "description": "An application property. It is a caller defined JSON object that Bitbucket will store and return. \nThe `_attributes` field at its top level can be used to control who is allowed to read and update the property. \nThe keys of the JSON object must match an allowed pattern. For details, \nsee [Application properties](/cloud/bitbucket/application-properties/).\n", "properties": { "_attributes": { "type": "array", "items": { "type": "string", "enum": [ "public", "read_only" ] } } } }, "deployment_environment": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Deployment Environment", "description": "A Bitbucket Deployment Environment.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the environment." }, "name": { "type": "string", "description": "The name of the environment." } } } ], "x-bb-default-fields": [ "uuid" ], "x-bb-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/environments/{uuid}", "x-bb-batch-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/environments_batch", "x-bb-batch-max-size": 100 }, "paginated_environments": { "type": "object", "title": "Paginated Deployment Environments", "description": "A paged list of environments", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/deployment_environment" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "deployment_release": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Deployment Release", "description": "A Bitbucket Deployment Release.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the release." }, "name": { "type": "string", "description": "The name of the release." }, "url": { "type": "string", "format": "uri", "description": "Link to the pipeline that produced the release." }, "commit": { "$ref": "#/components/schemas/commit" }, "created_on": { "type": "string", "format": "date-time", "description": "The timestamp when the release was created." } } } ] }, "deployment": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Deployment", "description": "A Bitbucket Deployment.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the deployment." }, "state": { "$ref": "#/components/schemas/deployment_state" }, "environment": { "$ref": "#/components/schemas/deployment_environment" }, "release": { "$ref": "#/components/schemas/deployment_release" } } } ] }, "deployment_state": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Deployment State", "description": "The representation of the progress state of a deployment.", "properties": {} } ] }, "deployment_state_undeployed": { "allOf": [ { "$ref": "#/components/schemas/deployment_state" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Deployment UNDEPLOYED deployment state.", "properties": { "name": { "enum": [ "UNDEPLOYED" ], "type": "string", "description": "The name of deployment state (UNDEPLOYED)." }, "trigger_url": { "type": "string", "format": "uri", "description": "Link to trigger the deployment." } } } ] }, "deployment_state_in_progress": { "allOf": [ { "$ref": "#/components/schemas/deployment_state" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Deployment IN_PROGRESS deployment state.", "properties": { "name": { "enum": [ "IN_PROGRESS" ], "type": "string", "description": "The name of deployment state (IN_PROGRESS)." }, "url": { "type": "string", "format": "uri", "description": "Link to the deployment result." }, "deployer": { "$ref": "#/components/schemas/account" }, "start_date": { "type": "string", "format": "date-time", "description": "The timestamp when the deployment was started." } } } ] }, "deployment_state_completed": { "allOf": [ { "$ref": "#/components/schemas/deployment_state" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Deployment COMPLETED deployment state.", "properties": { "name": { "enum": [ "COMPLETED" ], "type": "string", "description": "The name of deployment state (COMPLETED)." }, "url": { "type": "string", "format": "uri", "description": "Link to the deployment result." }, "deployer": { "$ref": "#/components/schemas/account" }, "status": { "$ref": "#/components/schemas/deployment_state_completed_status" }, "start_date": { "type": "string", "format": "date-time", "description": "The timestamp when the deployment was started." }, "completion_date": { "type": "string", "format": "date-time", "description": "The timestamp when the deployment completed." } } } ] }, "deployment_state_completed_status": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Completed Deployment", "description": "The status of a completed deployment.", "properties": {} } ] }, "deployment_state_completed_status_successful": { "allOf": [ { "$ref": "#/components/schemas/deployment_state_completed_status" }, { "additionalProperties": true, "type": "object", "description": "A SUCCESSFUL completed deployment status.", "properties": { "name": { "enum": [ "SUCCESSFUL" ], "type": "string", "description": "The name of the completed deployment status (SUCCESSFUL)." } } } ] }, "deployment_state_completed_status_failed": { "allOf": [ { "$ref": "#/components/schemas/deployment_state_completed_status" }, { "additionalProperties": true, "type": "object", "description": "A FAILED completed deployment status.", "properties": { "name": { "enum": [ "FAILED" ], "type": "string", "description": "The name of the completed deployment status (FAILED)." } } } ] }, "deployment_state_completed_status_stopped": { "allOf": [ { "$ref": "#/components/schemas/deployment_state_completed_status" }, { "additionalProperties": true, "type": "object", "description": "A STOPPED completed deployment status.", "properties": { "name": { "enum": [ "STOPPED" ], "type": "string", "description": "The name of the completed deployment status (STOPPED)." } } } ] }, "paginated_deployments": { "type": "object", "title": "Paginated Deployments", "description": "A paged list of deployments", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/deployment" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "deployment_variable": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Deployment Variable", "description": "A Pipelines deployment variable.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the variable." }, "key": { "type": "string", "description": "The unique name of the variable." }, "value": { "type": "string", "description": "The value of the variable. If the variable is secured, this will be empty." }, "secured": { "type": "boolean", "description": "If true, this variable will be treated as secured. The value will never be exposed in the logs or the REST API." } } } ] }, "paginated_deployment_variable": { "type": "object", "title": "Paginated Deployment Variables", "description": "A paged list of deployment variables.", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/deployment_variable" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "paginated_pullrequests": { "type": "object", "title": "Paginated Pull Requests", "description": "A paginated list of pullrequests.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/pullrequest" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "report": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Commit Report", "description": "A report for a commit.", "properties": { "uuid": { "type": "string", "description": "The UUID that can be used to identify the report." }, "title": { "type": "string", "description": "The title of the report." }, "details": { "type": "string", "description": "A string to describe the purpose of the report." }, "external_id": { "type": "string", "description": "ID of the report provided by the report creator. It can be used to identify the report as an alternative to it's generated uuid. It is not used by Bitbucket, but only by the report creator for updating or deleting this specific report. Needs to be unique." }, "reporter": { "type": "string", "description": "A string to describe the tool or company who created the report." }, "link": { "type": "string", "format": "uri", "description": "A URL linking to the results of the report in an external tool." }, "remote_link_enabled": { "type": "boolean", "description": "If enabled, a remote link is created in Jira for the issue associated with the commit the report belongs to." }, "logo_url": { "type": "string", "format": "uri", "description": "A URL to the report logo. If none is provided, the default insights logo will be used." }, "report_type": { "enum": [ "SECURITY", "COVERAGE", "TEST", "BUG" ], "type": "string", "description": "The type of the report." }, "result": { "enum": [ "PASSED", "FAILED", "PENDING" ], "type": "string", "description": "The state of the report. May be set to PENDING and later updated." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/report_data" }, "description": "An array of data fields to display information on the report. Maximum 10." }, "created_on": { "type": "string", "format": "date-time", "description": "The timestamp when the report was created." }, "updated_on": { "type": "string", "format": "date-time", "description": "The timestamp when the report was updated." } } } ], "x-bb-default-fields": [ "uuid", "commitHash" ], "x-bb-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/commits/{commitHash}/reports/{uuid}" }, "report_data": { "type": "object", "title": "Report Data", "description": "A key-value element that will be displayed along with the report.", "properties": { "type": { "enum": [ "BOOLEAN", "DATE", "DURATION", "LINK", "NUMBER", "PERCENTAGE", "TEXT" ], "type": "string", "description": "The type of data contained in the value field. If not provided, then the value will be detected as a boolean, number or string." }, "title": { "type": "string", "description": "A string describing what this data field represents." }, "value": { "type": "object", "description": "The value of the data element." } } }, "report_annotation": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Report Annotation", "description": "A report for a commit.", "properties": { "external_id": { "type": "string", "description": "ID of the annotation provided by the annotation creator. It can be used to identify the annotation as an alternative to it's generated uuid. It is not used by Bitbucket, but only by the annotation creator for updating or deleting this specific annotation. Needs to be unique." }, "uuid": { "type": "string", "description": "The UUID that can be used to identify the annotation." }, "annotation_type": { "enum": [ "VULNERABILITY", "CODE_SMELL", "BUG" ], "type": "string", "description": "The type of the report." }, "path": { "type": "string", "description": "The path of the file on which this annotation should be placed. This is the path of the file relative to the git repository. If no path is provided, then it will appear in the overview modal on all pull requests where the tip of the branch is the given commit, regardless of which files were modified." }, "line": { "type": "integer", "description": "The line number that the annotation should belong to. If no line number is provided, then it will default to 0 and in a pull request it will appear at the top of the file specified by the path field.", "minimum": 1 }, "summary": { "type": "string", "description": "The message to display to users." }, "details": { "type": "string", "description": "The details to show to users when clicking on the annotation." }, "result": { "enum": [ "PASSED", "FAILED", "SKIPPED", "IGNORED" ], "type": "string", "description": "The state of the report. May be set to PENDING and later updated." }, "severity": { "enum": [ "CRITICAL", "HIGH", "MEDIUM", "LOW" ], "type": "string", "description": "The severity of the annotation." }, "link": { "type": "string", "format": "uri", "description": "A URL linking to the annotation in an external tool." }, "created_on": { "type": "string", "format": "date-time", "description": "The timestamp when the report was created." }, "updated_on": { "type": "string", "format": "date-time", "description": "The timestamp when the report was updated." } } } ], "x-bb-default-fields": [ "uuid" ], "x-bb-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/commits/{commit.hash}/reports/{reportUuid}/annotations/{uuid}" }, "paginated_reports": { "type": "object", "title": "Paginated Reports", "description": "A paginated list of reports.", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/report" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "paginated_annotations": { "type": "object", "title": "Paginated Annotations", "description": "A paginated list of annotations.", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/report_annotation" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "pipelines_config": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipelines Configuration", "description": "The Pipelines configuration for a repository.", "properties": { "enabled": { "type": "boolean", "description": "Whether Pipelines is enabled for the repository." }, "repository": { "$ref": "#/components/schemas/repository" } } } ] }, "pipeline": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline", "description": "A Bitbucket Pipeline. This represents an actual pipeline result.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the pipeline." }, "build_number": { "type": "integer", "description": "The build number of the pipeline." }, "creator": { "$ref": "#/components/schemas/account" }, "repository": { "$ref": "#/components/schemas/repository" }, "target": { "$ref": "#/components/schemas/pipeline_target" }, "trigger": { "$ref": "#/components/schemas/pipeline_trigger" }, "state": { "$ref": "#/components/schemas/pipeline_state" }, "variables": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_variable" }, "description": "The variables for the pipeline." }, "created_on": { "type": "string", "format": "date-time", "description": "The timestamp when the pipeline was created." }, "completed_on": { "type": "string", "format": "date-time", "description": "The timestamp when the Pipeline was completed. This is not set if the pipeline is still in progress." }, "build_seconds_used": { "type": "integer", "description": "The number of build seconds used by this pipeline." }, "configuration_sources": { "type": "array", "description": "An ordered list of sources of the pipeline configuration", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_configuration_source" } }, "links": { "$ref": "#/components/schemas/pipelines_pipeline_links" } } } ] }, "pipelines_links_section_href": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Links href", "description": "A links section href", "properties": { "href": { "type": "string", "format": "uri", "description": "A link" } } } ] }, "pipelines_pipeline_links": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Links", "description": "Links section for a Pipeline.", "properties": { "self": { "$ref": "#/components/schemas/pipelines_links_section_href" }, "steps": { "$ref": "#/components/schemas/pipelines_links_section_href" } } } ] }, "pipeline_cache": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Cache", "description": "A representation of metadata for a pipeline cache for given repository.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the pipeline cache." }, "pipeline_uuid": { "type": "string", "description": "The UUID of the pipeline that created the cache." }, "step_uuid": { "type": "string", "description": "The uuid of the step that created the cache." }, "name": { "type": "string", "description": "The name of the cache." }, "key_hash": { "type": "string", "description": "The key hash of the cache version." }, "path": { "type": "string", "description": "The path where the cache contents were retrieved from." }, "file_size_bytes": { "type": "integer", "description": "The size of the file containing the archive of the cache." }, "created_on": { "type": "string", "format": "date-time", "description": "The timestamp when the cache was created." } } } ] }, "paginated_pipeline_caches": { "type": "object", "title": "Paginated Pipeline Cache", "description": "A paged list of pipeline caches", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_cache" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "pipeline_cache_content_uri": { "type": "object", "title": "Pipeline Cache Content URI", "description": "A representation of the location of pipeline cache content.", "properties": { "uri": { "type": "string", "format": "uri", "description": "The uri for pipeline cache content." } } }, "pipeline_target": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Target", "description": "A representation of the target that a pipeline executes on.", "properties": {} } ] }, "pipeline_ref_target": { "allOf": [ { "$ref": "#/components/schemas/pipeline_target" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Ref Target", "description": "A Bitbucket Pipelines reference target.", "properties": { "ref_type": { "enum": [ "branch", "tag", "named_branch", "bookmark" ], "type": "string", "description": "The type of reference (branch/tag)." }, "ref_name": { "type": "string", "description": "The name of the reference." }, "commit": { "$ref": "#/components/schemas/commit" }, "selector": { "$ref": "#/components/schemas/pipeline_selector" } } } ] }, "pipeline_commit_target": { "allOf": [ { "$ref": "#/components/schemas/pipeline_target" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Commit Target", "description": "A Bitbucket Pipelines commit target.", "properties": { "commit": { "$ref": "#/components/schemas/commit" }, "selector": { "$ref": "#/components/schemas/pipeline_selector" } } } ] }, "pipeline_selector": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Selector", "description": "A representation of the selector that was used to identify the pipeline in the YML file.", "properties": { "type": { "enum": [ "branches", "tags", "bookmarks", "default", "custom" ], "type": "string", "description": "The type of selector." }, "pattern": { "type": "string", "description": "The name of the matching pipeline definition." } } } ] }, "pipeline_trigger": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Trigger", "description": "A representation of the trigger used for a pipeline.", "properties": {} } ] }, "pipeline_trigger_push": { "allOf": [ { "$ref": "#/components/schemas/pipeline_trigger" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Push Trigger", "description": "A Bitbucket Pipelines PUSH trigger.", "properties": {} } ] }, "pipeline_trigger_manual": { "allOf": [ { "$ref": "#/components/schemas/pipeline_trigger" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Manual Trigger", "description": "A Bitbucket Pipelines MANUAL trigger.", "properties": {} } ] }, "pipeline_state": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline State", "description": "The representation of the progress state of a pipeline.", "properties": {} } ] }, "pipeline_state_pending": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Pending State", "description": "A Bitbucket Pipelines PENDING pipeline state.", "properties": { "name": { "enum": [ "PENDING" ], "type": "string", "description": "The name of pipeline state (PENDING)." } } } ] }, "pipeline_state_in_progress": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state" }, { "additionalProperties": true, "type": "object", "title": "Pipeline In-Progress State", "description": "A Bitbucket Pipelines IN_PROGRESS pipeline state.", "properties": { "name": { "enum": [ "IN_PROGRESS" ], "type": "string", "description": "The name of pipeline state (IN_PROGRESS)." }, "stage": { "$ref": "#/components/schemas/pipeline_state_in_progress_stage" } } } ] }, "pipeline_state_in_progress_stage": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline In-Progress Stage", "description": "A result of an in progress pipeline state.", "properties": {} } ] }, "pipeline_state_in_progress_running": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state_in_progress_stage" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines RUNNING stage of a pipeline that is in progress.", "properties": { "name": { "enum": [ "RUNNING" ], "type": "string", "description": "The name of the stage (RUNNING)" } } } ] }, "pipeline_state_in_progress_paused": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state_in_progress_stage" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines PAUSED stage of a pipeline that is in progress.", "properties": { "name": { "enum": [ "PAUSED" ], "type": "string", "description": "The name of the stage (PAUSED)" } } } ] }, "pipeline_state_completed": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Completed State", "description": "A Bitbucket Pipelines COMPLETED pipeline state.", "properties": { "name": { "enum": [ "COMPLETED" ], "type": "string", "description": "The name of pipeline state (COMPLETED)." }, "result": { "$ref": "#/components/schemas/pipeline_state_completed_result" } } } ] }, "pipeline_state_completed_result": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Completed Result", "description": "A result of a completed pipeline state.", "properties": {} } ] }, "pipeline_state_completed_error": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state_completed_result" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Completed Error", "description": "A Bitbucket Pipelines ERROR pipeline result.", "properties": { "name": { "enum": [ "ERROR" ], "type": "string", "description": "The name of the result (ERROR)" }, "error": { "$ref": "#/components/schemas/pipeline_error" } } } ] }, "pipeline_state_completed_failed": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines FAILED pipeline result.", "properties": { "name": { "enum": [ "FAILED" ], "type": "string", "description": "The name of the failed result (FAILED)." } } } ] }, "pipeline_state_completed_stopped": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines STOPPED pipeline result.", "properties": { "name": { "enum": [ "STOPPED" ], "type": "string", "description": "The name of the stopped result (STOPPED)." } } } ] }, "pipeline_state_completed_expired": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines EXPIRED pipeline result.", "properties": { "name": { "enum": [ "EXPIRED" ], "type": "string", "description": "The name of the stopped result (EXPIRED)." } } } ] }, "pipeline_state_completed_successful": { "allOf": [ { "$ref": "#/components/schemas/pipeline_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines SUCCESSFUL pipeline result.", "properties": { "name": { "enum": [ "SUCCESSFUL" ], "type": "string", "description": "The name of the successful result (SUCCESSFUL)." } } } ] }, "pipeline_error": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Error", "description": "An error causing a pipeline failure.", "properties": { "key": { "type": "string", "description": "The error key." }, "message": { "type": "string", "description": "The error message." } } } ] }, "pipeline_ssh_public_key": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline SSH Public Key", "description": "A Pipelines known host public key.", "properties": { "key_type": { "type": "string", "description": "The type of the public key." }, "key": { "type": "string", "description": "The base64 encoded public key." }, "md5_fingerprint": { "type": "string", "description": "The MD5 fingerprint of the public key." }, "sha256_fingerprint": { "type": "string", "description": "The SHA-256 fingerprint of the public key." } } } ] }, "pipeline_known_host": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Known Host", "description": "A Pipelines known host.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the known host." }, "hostname": { "type": "string", "description": "The hostname of the known host." }, "public_key": { "$ref": "#/components/schemas/pipeline_ssh_public_key" } } } ] }, "pipeline_ssh_key_pair": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline SSH Key Pair", "description": "A Pipelines SSH key pair.", "properties": { "private_key": { "type": "string", "description": "The SSH private key. This value will be empty when retrieving the SSH key pair." }, "public_key": { "type": "string", "description": "The SSH public key." } } } ] }, "pipeline_schedule": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Schedule", "description": "A Pipelines schedule.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the schedule." }, "enabled": { "type": "boolean", "description": "Whether the schedule is enabled." }, "target": { "$ref": "#/components/schemas/pipeline_ref_target" }, "cron_pattern": { "type": "string", "description": "The cron expression with second precision (7 fields) that the schedule applies. For example, for expression: 0 0 12 * * ? *, will execute at 12pm UTC every day." }, "created_on": { "type": "string", "format": "date-time", "description": "The timestamp when the schedule was created." }, "updated_on": { "type": "string", "format": "date-time", "description": "The timestamp when the schedule was updated." } } } ] }, "pipeline_schedule_post_request_body": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Request body for Pipeline Schedule POST request", "properties": { "target": { "type": "object", "description": "The target on which the schedule will be executed.", "properties": { "selector": { "$ref": "#/components/schemas/pipeline_selector" }, "ref_name": { "type": "string", "description": "The name of the reference." }, "ref_type": { "type": "string", "description": "The type of reference (branch only).", "enum": [ "branch" ] } }, "required": [ "selector", "ref_name", "ref_type" ] }, "enabled": { "type": "boolean", "description": "Whether the schedule is enabled." }, "cron_pattern": { "type": "string", "description": "The cron expression with second precision (7 fields) that the schedule applies. For example, for expression: 0 0 12 * * ? *, will execute at 12pm UTC every day." } }, "required": [ "target", "cron_pattern" ] } ] }, "pipeline_schedule_put_request_body": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Request body for Pipeline Schedule PUT request", "properties": { "enabled": { "type": "boolean", "description": "Whether the schedule is enabled." } } } ] }, "paginated_pipeline_schedules": { "type": "object", "title": "Paginated Pipeline Schedule", "description": "A paged list of schedules", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_schedule" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "pipeline_schedule_execution": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Schedule Execution", "description": "A Pipelines schedule execution.", "properties": {} } ] }, "pipeline_schedule_execution_executed": { "allOf": [ { "$ref": "#/components/schemas/pipeline_schedule_execution" }, { "additionalProperties": true, "type": "object", "description": "A Pipelines executed schedule execution.", "properties": { "pipeline": { "$ref": "#/components/schemas/pipeline" } } } ] }, "pipeline_schedule_execution_errored": { "allOf": [ { "$ref": "#/components/schemas/pipeline_schedule_execution" }, { "additionalProperties": true, "type": "object", "description": "A Pipelines schedule execution that failed to be executed.", "properties": { "error": { "$ref": "#/components/schemas/pipeline_error" } } } ] }, "paginated_pipeline_schedule_executions": { "type": "object", "title": "Paginated Pipeline Schedule Executions", "description": "A paged list of the executions of a schedule.", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_schedule_execution" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "pipeline_build_number": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Build Number", "description": "A Pipelines build number.", "properties": { "next": { "type": "integer", "description": "The next number that will be used as build number." } } } ] }, "pipeline_variable": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Variable", "description": "A Pipelines variable.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the variable." }, "key": { "type": "string", "description": "The unique name of the variable." }, "value": { "type": "string", "description": "The value of the variable. If the variable is secured, this will be empty." }, "secured": { "type": "boolean", "description": "If true, this variable will be treated as secured. The value will never be exposed in the logs or the REST API." } } } ] }, "pipeline_step": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Step", "description": "A step of a Bitbucket pipeline. This represents the actual result of the step execution.", "properties": { "uuid": { "type": "string", "description": "The UUID identifying the step." }, "started_on": { "type": "string", "format": "date-time", "description": "The timestamp when the step execution was started. This is not set when the step hasn't executed yet." }, "completed_on": { "type": "string", "format": "date-time", "description": "The timestamp when the step execution was completed. This is not set if the step is still in progress." }, "state": { "$ref": "#/components/schemas/pipeline_step_state" }, "image": { "$ref": "#/components/schemas/pipeline_image" }, "setup_commands": { "type": "array", "items": { "$ref": "#/components/schemas/pipeline_command" }, "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." }, "script_commands": { "type": "array", "items": { "$ref": "#/components/schemas/pipeline_command" }, "description": "The list of build commands. These commands are executed in the build container." } } } ], "x-bb-default-fields": [ "uuid" ], "x-bb-url": "/rest/1.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/pipelines/{pipeline.uuid}/steps/{uuid}", "x-bb-batch-url": "/rest/1.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/pipelines/steps_batch", "x-bb-batch-max-size": 100 }, "pipeline_step_state": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Step State", "description": "The representation of the progress state of a pipeline step.", "properties": {} } ] }, "pipeline_step_state_pending": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines PENDING pipeline step state.", "properties": { "name": { "enum": [ "PENDING" ], "type": "string", "description": "The name of pipeline step state (PENDING)." } } } ] }, "pipeline_step_state_ready": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines READY pipeline step state.", "properties": { "name": { "enum": [ "READY" ], "type": "string", "description": "The name of pipeline step state (READY)." } } } ] }, "pipeline_step_state_in_progress": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines IN_PROGRESS pipeline step state.", "properties": { "name": { "enum": [ "IN_PROGRESS" ], "type": "string", "description": "The name of pipeline step state (IN_PROGRESS)." } } } ] }, "pipeline_step_state_completed": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines COMPLETED pipeline step state.", "properties": { "name": { "enum": [ "COMPLETED" ], "type": "string", "description": "The name of pipeline step state (COMPLETED)." }, "result": { "$ref": "#/components/schemas/pipeline_step_state_completed_result" } } } ] }, "pipeline_step_state_completed_result": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Completed Step Result", "description": "A result of a completed pipeline step state.", "properties": {} } ] }, "pipeline_step_state_completed_error": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines ERROR pipeline step result.", "properties": { "name": { "enum": [ "ERROR" ], "type": "string", "description": "The name of the result (ERROR)" }, "error": { "$ref": "#/components/schemas/pipeline_step_error" } } } ] }, "pipeline_step_state_completed_failed": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines FAILED pipeline step result.", "properties": { "name": { "enum": [ "FAILED" ], "type": "string", "description": "The name of the result (FAILED)" } } } ] }, "pipeline_step_state_completed_stopped": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines STOPPED pipeline step result.", "properties": { "name": { "enum": [ "STOPPED" ], "type": "string", "description": "The name of the result (STOPPED)" } } } ] }, "pipeline_step_state_completed_not_run": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines NOT_RUN pipeline step result.", "properties": { "name": { "enum": [ "NOT_RUN" ], "type": "string", "description": "The name of the result (NOT_RUN)" } } } ] }, "pipeline_step_state_completed_expired": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines EXPIRED pipeline step result.", "properties": { "name": { "enum": [ "EXPIRED" ], "type": "string", "description": "The name of the result (EXPIRED)" } } } ] }, "pipeline_step_state_completed_successful": { "allOf": [ { "$ref": "#/components/schemas/pipeline_step_state_completed_result" }, { "additionalProperties": true, "type": "object", "description": "A Bitbucket Pipelines SUCCESSFUL pipeline step result.", "properties": { "name": { "enum": [ "SUCCESSFUL" ], "type": "string", "description": "The name of the result (SUCCESSFUL)" } } } ] }, "pipeline_step_error": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "additionalProperties": true, "type": "object", "title": "Pipeline Step Error", "description": "An error causing a step failure.", "properties": { "key": { "type": "string", "description": "The error key." }, "message": { "type": "string", "description": "The error message." } } } ] }, "pipeline_image": { "type": "object", "title": "Pipeline Image", "description": "The definition of a Docker image that can be used for a Bitbucket Pipelines step execution context.", "properties": { "name": { "type": "string", "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." }, "username": { "type": "string", "description": "The username needed to authenticate with the Docker registry. Only required when using a private Docker image." }, "password": { "type": "string", "description": "The password needed to authenticate with the Docker registry. Only required when using a private Docker image." }, "email": { "type": "string", "description": "The email needed to authenticate with the Docker registry. Only required when using a private Docker image." } } }, "pipeline_command": { "type": "object", "title": "Pipeline Command", "description": "An executable pipeline command.", "properties": { "name": { "type": "string", "description": "The name of the command." }, "command": { "type": "string", "description": "The executable command." } } }, "paginated_pipelines": { "type": "object", "title": "Paginated Pipelines", "description": "A paged list of pipelines", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "paginated_pipeline_known_hosts": { "type": "object", "title": "Paginated Pipeline Known Hosts", "description": "A paged list of known hosts.", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_known_host" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "paginated_pipeline_variables": { "type": "object", "title": "Paginated Pipeline Variables", "description": "A paged list of variables.", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_variable" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "paginated_pipeline_steps": { "type": "object", "title": "Paginated Pipeline Steps", "description": "A paged list of pipeline steps.", "properties": { "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses." }, "values": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/pipeline_step" }, "description": "The values of the current page." }, "size": { "type": "integer", "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." }, "pagelen": { "type": "integer", "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." }, "next": { "type": "string", "format": "uri", "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." }, "previous": { "type": "string", "format": "uri", "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." } } }, "pipeline_configuration_source": { "type": "object", "description": "Information about the source of the pipeline configuration", "properties": { "source": { "type": "string", "description": "Identifier of the configuration source" }, "uri": { "type": "string", "format": "uri", "description": "Link to the configuration source view or its immediate content" } }, "required": [ "source", "uri" ] }, "search_code_search_result": { "type": "object", "properties": { "type": { "type": "string", "readOnly": true }, "content_match_count": { "type": "integer", "format": "int64", "readOnly": true }, "content_matches": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/search_content_match" } }, "path_matches": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/search_segment" } }, "file": { "$ref": "#/components/schemas/commit_file" } } }, "search_content_match": { "type": "object", "properties": { "lines": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/search_line" } } } }, "search_line": { "type": "object", "properties": { "line": { "type": "integer", "format": "int32", "readOnly": true }, "segments": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/search_segment" } } } }, "search_result_page": { "type": "object", "properties": { "size": { "type": "integer", "format": "int64", "readOnly": true }, "page": { "type": "integer", "format": "int32", "readOnly": true }, "pagelen": { "type": "integer", "format": "int32", "readOnly": true }, "query_substituted": { "type": "boolean", "readOnly": true }, "next": { "type": "string", "format": "uri", "readOnly": true }, "previous": { "type": "string", "format": "uri", "readOnly": true }, "values": { "type": "array", "readOnly": true, "items": { "$ref": "#/components/schemas/search_code_search_result" } } } }, "search_segment": { "type": "object", "properties": { "text": { "type": "string", "readOnly": true }, "match": { "type": "boolean", "readOnly": true } } }, "object": { "type": "object", "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": { "type": { "type": "string" } }, "required": [ "type" ], "additionalProperties": true, "discriminator": { "propertyName": "type" } }, "issue_job_status": { "type": "object", "title": "Issue Job Status", "description": "The status of an import or export job", "properties": { "type": { "type": "string" }, "status": { "type": "string", "description": "The status of the import/export job", "enum": [ "ACCEPTED", "STARTED", "RUNNING", "FAILURE" ] }, "phase": { "type": "string", "description": "The phase of the import/export job" }, "total": { "type": "integer", "description": "The total number of issues being imported/exported" }, "count": { "type": "integer", "description": "The total number of issues already imported/exported" }, "pct": { "type": "number", "description": "The percentage of issues already imported/exported", "minimum": 0, "maximum": 100 } }, "additionalProperties": false }, "bitbucket.apps.permissions.serializers.ProjectPermissionUpdateSchema": { "type": "object", "properties": { "permission": { "type": "string", "enum": [ "read", "write", "create-repo", "admin" ] } }, "required": [ "permission" ], "additionalProperties": false }, "bitbucket.apps.permissions.serializers.RepoPermissionUpdateSchema": { "type": "object", "properties": { "permission": { "type": "string", "enum": [ "read", "write", "admin" ] } }, "required": [ "permission" ], "additionalProperties": false }, "pullrequest_task_create": { "type": "object", "title": "Pull Request Task Create", "description": "A pullrequest task create", "properties": { "content": { "type": "object", "title": "Task Raw Content", "description": "task raw content", "properties": { "raw": { "type": "string", "description": "The task contents" } }, "required": [ "raw" ], "additionalProperties": false }, "comment": { "$ref": "#/components/schemas/comment" }, "pending": { "type": "boolean" } }, "required": [ "content" ], "additionalProperties": false }, "pullrequest_task_update": { "type": "object", "title": "Pull Request Task Update", "description": "A pullrequest task update", "properties": { "content": { "type": "object", "title": "Task Raw Content", "description": "task raw content", "properties": { "raw": { "type": "string", "description": "The task contents" } }, "required": [ "raw" ], "additionalProperties": false }, "state": { "type": "string", "enum": [ "RESOLVED", "UNRESOLVED" ] } }, "additionalProperties": false }, "task": { "type": "object", "title": "Task", "description": "A task object.", "properties": { "id": { "type": "integer" }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" }, "state": { "type": "string", "enum": [ "RESOLVED", "UNRESOLVED" ] }, "content": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false }, "creator": { "$ref": "#/components/schemas/account" }, "pending": { "type": "boolean" }, "resolved_on": { "type": "string", "description": "The ISO8601 timestamp for when the task was resolved.", "format": "date-time" }, "resolved_by": { "$ref": "#/components/schemas/account" } }, "required": [ "created_on", "updated_on", "state", "content", "creator" ], "additionalProperties": false }, "subject_types": { "type": "object", "title": "Subject Types", "description": "The mapping of resource/subject types pointing to their individual event types.", "properties": { "repository": { "type": "object", "properties": { "events": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "workspace": { "type": "object", "properties": { "events": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": false }, "error": { "type": "object", "title": "Error", "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": { "type": { "type": "string" }, "error": { "type": "object", "properties": { "message": { "type": "string" }, "detail": { "type": "string" }, "data": { "type": "object", "description": "Optional structured data that is endpoint-specific.", "properties": {}, "additionalProperties": true } }, "required": [ "message" ], "additionalProperties": false } }, "required": [ "type" ], "additionalProperties": true }, "link": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "account_links": { "type": "object", "title": "Account Links", "description": "Links related to an Account.", "properties": { "avatar": { "$ref": "#/components/schemas/link" } }, "additionalProperties": true }, "account": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Account", "description": "An account object.", "properties": { "links": { "$ref": "#/components/schemas/account_links" }, "created_on": { "type": "string", "format": "date-time" }, "display_name": { "type": "string" }, "uuid": { "type": "string" } }, "additionalProperties": true } ] }, "paginated_accounts": { "type": "object", "title": "Paginated Accounts", "description": "A paginated list of accounts.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/account" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_repositories": { "type": "object", "title": "Paginated Repositories", "description": "A paginated list of repositories.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/repository" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "repository_inheritance_state": { "type": "object", "title": "Repository Inheritance State", "description": "A json object representing the repository's inheritance state values", "properties": { "type": { "type": "string" }, "override_settings": { "type": "object" } }, "required": [ "type" ], "additionalProperties": true }, "repository": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Repository", "description": "A Bitbucket repository.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "avatar": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "pullrequests": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "commits": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "forks": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "watchers": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "downloads": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "clone": { "type": "array", "items": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "hooks": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "uuid": { "type": "string", "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." }, "full_name": { "type": "string", "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." }, "is_private": { "type": "boolean" }, "parent": { "$ref": "#/components/schemas/repository" }, "scm": { "type": "string", "enum": [ "git" ] }, "owner": { "$ref": "#/components/schemas/account" }, "name": { "type": "string" }, "description": { "type": "string" }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" }, "size": { "type": "integer" }, "language": { "type": "string" }, "has_issues": { "type": "boolean", "description": "\nThe issue tracker for this repository is enabled. Issue Tracker\nfeatures are not supported for repositories in workspaces\nadministered through admin.atlassian.com.\n" }, "has_wiki": { "type": "boolean", "description": "\nThe wiki for this repository is enabled. Wiki\nfeatures are not supported for repositories in workspaces\nadministered through admin.atlassian.com.\n" }, "fork_policy": { "type": "string", "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" ] }, "project": { "$ref": "#/components/schemas/project" }, "mainbranch": { "$ref": "#/components/schemas/branch" } }, "additionalProperties": true } ] }, "project_branching_model": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Project Branching Model", "description": "A project's branching model", "properties": { "branch_types": { "type": "array", "description": "The active branch types.", "items": { "type": "object", "properties": { "kind": { "type": "string", "description": "The kind of branch.", "enum": [ "feature", "bugfix", "release", "hotfix" ] }, "prefix": { "type": "string", "description": "The prefix for this branch type. A branch with this prefix will be classified as per `kind`. The prefix must be a valid prefix for a branch and must always exist. It cannot be blank, empty or `null`." } }, "required": [ "kind", "prefix" ], "additionalProperties": false }, "minItems": 0, "maxItems": 4, "uniqueItems": true }, "development": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the target branch. If inherited by a repository, it will default to the main branch if the specified branch does not exist." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`)." } }, "required": [ "name", "use_mainbranch" ], "additionalProperties": false }, "production": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the target branch. If inherited by a repository, it will default to the main branch if the specified branch does not exist." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`)." } }, "required": [ "name", "use_mainbranch" ], "additionalProperties": false } }, "additionalProperties": true } ] }, "branching_model": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Branching Model", "description": "A repository's branching model", "properties": { "branch_types": { "type": "array", "description": "The active branch types.", "items": { "type": "object", "properties": { "kind": { "type": "string", "description": "The kind of branch.", "enum": [ "feature", "bugfix", "release", "hotfix" ] }, "prefix": { "type": "string", "description": "The prefix for this branch type. A branch with this prefix will be classified as per `kind`. The prefix must be a valid prefix for a branch and must always exist. It cannot be blank, empty or `null`." } }, "required": [ "kind", "prefix" ], "additionalProperties": false }, "minItems": 0, "maxItems": 4, "uniqueItems": true }, "development": { "type": "object", "properties": { "branch": { "$ref": "#/components/schemas/branch" }, "name": { "type": "string", "description": "Name of the target branch. Will be listed here even when the target branch does not exist. Will be `null` if targeting the main branch and the repository is empty." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`)." } }, "required": [ "name", "use_mainbranch" ], "additionalProperties": false }, "production": { "type": "object", "properties": { "branch": { "$ref": "#/components/schemas/branch" }, "name": { "type": "string", "description": "Name of the target branch. Will be listed here even when the target branch does not exist. Will be `null` if targeting the main branch and the repository is empty." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`)." } }, "required": [ "name", "use_mainbranch" ], "additionalProperties": false } }, "additionalProperties": true } ] }, "branching_model_settings": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Branching Model Settings", "description": "A repository's branching model settings", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "branch_types": { "type": "array", "items": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether the branch type is enabled or not. A disabled branch type may contain an invalid `prefix`." }, "kind": { "type": "string", "description": "The kind of the branch type.", "enum": [ "feature", "bugfix", "release", "hotfix" ] }, "prefix": { "type": "string", "description": "The prefix for this branch type. A branch with this prefix will be classified as per `kind`. The `prefix` of an enabled branch type must be a valid branch prefix.Additionally, it cannot be blank, empty or `null`. The `prefix` for a disabled branch type can be empty or invalid." } }, "required": [ "kind" ], "additionalProperties": false }, "minItems": 0, "maxItems": 4, "uniqueItems": true }, "development": { "type": "object", "properties": { "is_valid": { "type": "boolean", "description": "Indicates if the configured branch is valid, that is, if the configured branch actually exists currently. Is always `true` when `use_mainbranch` is `true` (even if the main branch does not exist). This field is read-only. This field is ignored when updating/creating settings." }, "name": { "type": "string", "description": "The configured branch. It must be `null` when `use_mainbranch` is `true`. Otherwise it must be a non-empty value. It is possible for the configured branch to not exist (e.g. it was deleted after the settings are set). In this case `is_valid` will be `false`. The branch must exist when updating/setting the `name` or an error will occur." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`). When `true` the `name` must be `null` or not provided. When `false` the `name` must contain a non-empty branch name." } }, "additionalProperties": false }, "production": { "type": "object", "properties": { "is_valid": { "type": "boolean", "description": "Indicates if the configured branch is valid, that is, if the configured branch actually exists currently. Is always `true` when `use_mainbranch` is `true` (even if the main branch does not exist). This field is read-only. This field is ignored when updating/creating settings." }, "name": { "type": "string", "description": "The configured branch. It must be `null` when `use_mainbranch` is `true`. Otherwise it must be a non-empty value. It is possible for the configured branch to not exist (e.g. it was deleted after the settings are set). In this case `is_valid` will be `false`. The branch must exist when updating/setting the `name` or an error will occur." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`). When `true` the `name` must be `null` or not provided. When `false` the `name` must contain a non-empty branch name." }, "enabled": { "type": "boolean", "description": "Indicates if branch is enabled or not." } }, "additionalProperties": false } }, "additionalProperties": true } ] }, "effective_repo_branching_model": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Effective Repository Branching Model", "description": "A repository's effective branching model", "properties": { "branch_types": { "type": "array", "description": "The active branch types.", "items": { "type": "object", "properties": { "kind": { "type": "string", "description": "The kind of branch.", "enum": [ "feature", "bugfix", "release", "hotfix" ] }, "prefix": { "type": "string", "description": "The prefix for this branch type. A branch with this prefix will be classified as per `kind`. The prefix must be a valid prefix for a branch and must always exist. It cannot be blank, empty or `null`." } }, "required": [ "kind", "prefix" ], "additionalProperties": false }, "minItems": 0, "maxItems": 4, "uniqueItems": true }, "development": { "type": "object", "properties": { "branch": { "$ref": "#/components/schemas/branch" }, "name": { "type": "string", "description": "Name of the target branch. Will be listed here even when the target branch does not exist. Will be `null` if targeting the main branch and the repository is empty." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`)." } }, "required": [ "name", "use_mainbranch" ], "additionalProperties": false }, "production": { "type": "object", "properties": { "branch": { "$ref": "#/components/schemas/branch" }, "name": { "type": "string", "description": "Name of the target branch. Will be listed here even when the target branch does not exist. Will be `null` if targeting the main branch and the repository is empty." }, "use_mainbranch": { "type": "boolean", "description": "Indicates if the setting points at an explicit branch (`false`) or tracks the main branch (`true`)." } }, "required": [ "name", "use_mainbranch" ], "additionalProperties": false } }, "additionalProperties": true } ] }, "paginated_branchrestrictions": { "type": "object", "title": "Paginated Branch Restrictions", "description": "A paginated list of branch restriction rules.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/branchrestriction" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "comment": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Comment", "description": "The base type for all comments. This type should be considered abstract. Each of the \"commentable\" resources defines its own subtypes (e.g. `issue_comment`).", "properties": { "id": { "type": "integer" }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" }, "content": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false }, "user": { "$ref": "#/components/schemas/account" }, "deleted": { "type": "boolean" }, "parent": { "$ref": "#/components/schemas/comment" }, "inline": { "type": "object", "properties": { "from": { "type": "integer", "description": "The comment's anchor line in the old version of the file.", "minimum": 1 }, "to": { "type": "integer", "description": "The comment's anchor line in the new version of the file. If the 'from' line is also provided, this value will be removed.", "minimum": 1 }, "path": { "type": "string", "description": "The path of the file this comment is anchored to." } }, "required": [ "path" ], "additionalProperties": false }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "code": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": true } ] }, "commitstatus": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Commit Status", "description": "A commit status object.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "commit": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "uuid": { "type": "string", "description": "The commit status' id." }, "key": { "type": "string", "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" }, "refname": { "type": "string", "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)." }, "url": { "type": "string", "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." }, "state": { "type": "string", "description": "Provides some indication of the status of this commit", "enum": [ "FAILED", "INPROGRESS", "STOPPED", "SUCCESSFUL" ] }, "name": { "type": "string", "description": "An identifier for the build itself, e.g. BB-DEPLOY-1" }, "description": { "type": "string", "description": "A description of the build (e.g. \"Unit tests in Bamboo\")" }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" } }, "additionalProperties": true } ] }, "paginated_commitstatuses": { "type": "object", "title": "Paginated Commit Statuses", "description": "A paginated list of commit status objects.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/commitstatus" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "export_options": { "type": "object", "title": "Export Options", "description": "Options for issue export.", "properties": { "type": { "type": "string" }, "project_key": { "type": "string" }, "project_name": { "type": "string" }, "send_email": { "type": "boolean" }, "include_attachments": { "type": "boolean" } }, "required": [ "type" ], "additionalProperties": true }, "issue_change": { "type": "object", "title": "Issue Change", "description": "An issue change.", "properties": { "type": { "type": "string" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "issue": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "name": { "type": "string" }, "created_on": { "type": "string", "format": "date-time" }, "user": { "$ref": "#/components/schemas/account" }, "issue": { "$ref": "#/components/schemas/issue" }, "changes": { "type": "object", "properties": { "assignee": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "state": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "title": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "kind": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "milestone": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "component": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "priority": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "version": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false }, "content": { "type": "object", "properties": { "old": { "type": "string" }, "new": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "message": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false } }, "required": [ "type" ], "additionalProperties": true }, "issue": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Issue", "description": "An issue.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "comments": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "attachments": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "watch": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "vote": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "id": { "type": "integer" }, "repository": { "$ref": "#/components/schemas/repository" }, "title": { "type": "string" }, "reporter": { "$ref": "#/components/schemas/account" }, "assignee": { "$ref": "#/components/schemas/account" }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" }, "edited_on": { "type": "string", "format": "date-time" }, "state": { "type": "string", "enum": [ "submitted", "new", "open", "resolved", "on hold", "invalid", "duplicate", "wontfix", "closed" ] }, "kind": { "type": "string", "enum": [ "bug", "enhancement", "proposal", "task" ] }, "priority": { "type": "string", "enum": [ "trivial", "minor", "major", "critical", "blocker" ] }, "milestone": { "$ref": "#/components/schemas/milestone" }, "version": { "$ref": "#/components/schemas/version" }, "component": { "$ref": "#/components/schemas/component" }, "votes": { "type": "integer" }, "content": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false } }, "additionalProperties": true } ] }, "paginated_components": { "type": "object", "title": "Paginated Components", "description": "A paginated list of issue tracker components.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/component" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "issue_attachment": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Issue Attachment", "description": "An issue file attachment's meta data. Note this does not contain the file's actual contents.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "name": { "type": "string" } }, "additionalProperties": true } ] }, "paginated_issue_attachments": { "type": "object", "title": "Paginated Issue Attachment", "description": "A paginated list of issue attachments.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/issue_attachment" }, "minItems": 0 } }, "additionalProperties": false }, "paginated_log_entries": { "type": "object", "title": "Paginated Log Entries", "description": "A paginated list of issue changes.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/issue_change" }, "minItems": 0 } }, "additionalProperties": false }, "paginated_issue_comments": { "type": "object", "title": "Paginated Issue Comments", "description": "A paginated list of issue comments.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/issue_comment" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_issues": { "type": "object", "title": "Paginated Issues", "description": "A paginated list of issues.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/issue" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_milestones": { "type": "object", "title": "Paginated Milestones", "description": "A paginated list of issue tracker milestones.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/milestone" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_versions": { "type": "object", "title": "Paginated Versions", "description": "A paginated list of issue tracker versions.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/version" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "group": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Group", "description": "A group object", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "owner": { "$ref": "#/components/schemas/account" }, "workspace": { "$ref": "#/components/schemas/workspace" }, "name": { "type": "string" }, "slug": { "type": "string", "description": "The \"sluggified\" version of the group's name. This contains only ASCII\ncharacters and can therefore be slightly different than the name" }, "full_slug": { "type": "string", "description": "The concatenation of the workspace's slug and the group's slug,\nseparated with a colon (e.g. `acme:developers`)\n" } }, "additionalProperties": true } ] }, "project_group_permission": { "type": "object", "title": "Project Group Permission", "description": "A group's permission for a given project.", "properties": { "type": { "type": "string" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "permission": { "type": "string", "enum": [ "read", "write", "create-repo", "admin", "none" ] }, "group": { "$ref": "#/components/schemas/group" }, "project": { "$ref": "#/components/schemas/project" } }, "required": [ "type" ], "additionalProperties": true }, "repository_group_permission": { "type": "object", "title": "Repository Group Permission", "description": "A group's permission for a given repository.", "properties": { "type": { "type": "string" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "permission": { "type": "string", "enum": [ "read", "write", "admin", "none" ] }, "group": { "$ref": "#/components/schemas/group" }, "repository": { "$ref": "#/components/schemas/repository" } }, "required": [ "type" ], "additionalProperties": true }, "paginated_project_group_permissions": { "type": "object", "title": "Paginated Project Group Permissions", "description": "A paginated list of project group permissions.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/project_group_permission" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_project_user_permissions": { "type": "object", "title": "Paginated Project User Permissions", "description": "A paginated list of project user permissions.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/project_user_permission" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_repository_group_permissions": { "type": "object", "title": "Paginated Repository Group Permissions", "description": "A paginated list of repository group permissions.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/repository_group_permission" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_repository_permissions": { "type": "object", "title": "Paginated Repository Permissions", "description": "A paginated list of repository permissions.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/repository_permission" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_repository_user_permissions": { "type": "object", "title": "Paginated Repository User Permissions", "description": "A paginated list of repository user permissions.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/repository_user_permission" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "repository_permission": { "type": "object", "title": "Repository Permission", "description": "A user's permission for a given repository.", "properties": { "type": { "type": "string" }, "permission": { "type": "string", "enum": [ "read", "write", "admin", "none" ] }, "user": { "$ref": "#/components/schemas/user" }, "repository": { "$ref": "#/components/schemas/repository" } }, "required": [ "type" ], "additionalProperties": true }, "project_user_permission": { "type": "object", "title": "Project User Permission", "description": "A user's direct permission for a given project.", "properties": { "type": { "type": "string" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "permission": { "type": "string", "enum": [ "read", "write", "create-repo", "admin", "none" ] }, "user": { "$ref": "#/components/schemas/user" }, "project": { "$ref": "#/components/schemas/project" } }, "required": [ "type" ], "additionalProperties": true }, "paginated_projects": { "type": "object", "title": "Paginated Projects", "description": "A paginated list of projects", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/project" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "team_links": { "allOf": [ { "$ref": "#/components/schemas/account_links" }, { "type": "object", "title": "Team Links", "description": "Links related to a Team.", "properties": { "self": { "$ref": "#/components/schemas/link" }, "html": { "$ref": "#/components/schemas/link" }, "members": { "$ref": "#/components/schemas/link" }, "projects": { "$ref": "#/components/schemas/link" }, "repositories": { "$ref": "#/components/schemas/link" } }, "additionalProperties": true } ] }, "team": { "allOf": [ { "$ref": "#/components/schemas/account" }, { "type": "object", "title": "Team", "description": "A team object.", "properties": { "links": { "$ref": "#/components/schemas/team_links" } }, "additionalProperties": true } ] }, "project": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Project", "description": "A Bitbucket project.\n Projects are used by teams to organize repositories.", "properties": { "links": { "type": "object", "properties": { "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "avatar": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "uuid": { "type": "string", "description": "The project's immutable id." }, "key": { "type": "string", "description": "The project's key." }, "owner": { "$ref": "#/components/schemas/team" }, "name": { "type": "string", "description": "The name of the project." }, "description": { "type": "string" }, "is_private": { "type": "boolean", "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." }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" }, "has_publicly_visible_repos": { "type": "boolean", "description": "\nIndicates whether the project contains publicly visible repositories.\nNote that private projects cannot contain public repositories." } }, "additionalProperties": true } ] }, "comment_resolution": { "type": "object", "title": "Comment Resolution", "description": "The resolution object for a Comment.", "properties": { "type": { "type": "string" }, "user": { "$ref": "#/components/schemas/account" }, "created_on": { "type": "string", "description": "The ISO8601 timestamp the resolution was created.", "format": "date-time" } }, "required": [ "type" ], "additionalProperties": true }, "default_reviewer_and_type": { "type": "object", "title": "Default Reviewer and Type", "description": "Object containing a user that is a default reviewer and the type of reviewer", "properties": { "type": { "type": "string" }, "reviewer_type": { "type": "string" }, "user": { "$ref": "#/components/schemas/user" } }, "required": [ "type" ], "additionalProperties": true }, "paginated_default_reviewer_and_type": { "type": "object", "title": "Paginated Default Reviewer and Type", "description": "A paginated list of default reviewers with reviewer type.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/default_reviewer_and_type" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_pullrequest_comments": { "type": "object", "title": "Paginated Pull Request Comments", "description": "A paginated list of pullrequest comments.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/pullrequest_comment" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_tasks": { "type": "object", "title": "Paginated Tasks", "description": "A paginated list of tasks.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/pullrequest_comment_task" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "participant": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Participant", "description": "Object describing a user's role on resources like commits or pull requests.", "properties": { "user": { "$ref": "#/components/schemas/account" }, "role": { "type": "string", "enum": [ "PARTICIPANT", "REVIEWER" ] }, "approved": { "type": "boolean" }, "state": { "type": "string", "enum": [ "approved", "changes_requested", null ] }, "participated_on": { "type": "string", "description": "The ISO8601 timestamp of the participant's action. For approvers, this is the time of their approval. For commenters and pull request reviewers who are not approvers, this is the time they last commented, or null if they have not commented.", "format": "date-time" } }, "additionalProperties": true } ] }, "pullrequest_merge_parameters": { "type": "object", "title": "Pull Request Merge Parameters", "description": "The metadata that describes a pull request merge.", "properties": { "type": { "type": "string" }, "message": { "type": "string", "description": "The commit message that will be used on the resulting commit. Note that the size of the message is limited to 128 KiB." }, "close_source_branch": { "type": "boolean", "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" }, "merge_strategy": { "type": "string", "description": "The merge strategy that will be used to merge the pull request.", "enum": [ "merge_commit", "squash", "fast_forward", "squash_fast_forward", "rebase_fast_forward", "rebase_merge" ], "default": "merge_commit" } }, "required": [ "type" ], "additionalProperties": true }, "pullrequest_endpoint": { "type": "object", "title": "Pull Request Endpoint", "properties": { "repository": { "$ref": "#/components/schemas/repository" }, "branch": { "type": "object", "title": "Pull Request Branch", "properties": { "name": { "type": "string" }, "merge_strategies": { "type": "array", "description": "Available merge strategies, when this endpoint is the destination of the pull request.", "items": { "type": "string", "enum": [ "merge_commit", "squash", "fast_forward", "squash_fast_forward", "rebase_fast_forward", "rebase_merge" ] } }, "default_merge_strategy": { "type": "string", "description": "The default merge strategy, when this endpoint is the destination of the pull request." } }, "additionalProperties": false }, "commit": { "type": "object", "title": "Pull Request Commit", "properties": { "hash": { "type": "string", "pattern": "[0-9a-f]{7,}?" } }, "additionalProperties": false } }, "additionalProperties": false }, "pullrequest": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Pull Request", "description": "A pull request object.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "commits": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "approve": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "diff": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "diffstat": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "comments": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "activity": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "merge": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "decline": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "id": { "type": "integer", "description": "The pull request's unique ID. Note that pull request IDs are only unique within their associated repository." }, "title": { "type": "string", "description": "Title of the pull request." }, "rendered": { "type": "object", "title": "Rendered Pull Request Markup", "description": "User provided pull request text, interpreted in a markup language and rendered in HTML", "properties": { "title": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false }, "description": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false }, "reason": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false } }, "additionalProperties": false }, "summary": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false }, "state": { "type": "string", "description": "The pull request's current status.", "enum": [ "OPEN", "MERGED", "DECLINED", "SUPERSEDED" ] }, "author": { "$ref": "#/components/schemas/account" }, "source": { "$ref": "#/components/schemas/pullrequest_endpoint" }, "destination": { "$ref": "#/components/schemas/pullrequest_endpoint" }, "merge_commit": { "type": "object", "title": "Pull Request Commit", "properties": { "hash": { "type": "string", "pattern": "[0-9a-f]{7,}?" } }, "additionalProperties": false }, "comment_count": { "type": "integer", "description": "The number of comments for a specific pull request.", "minimum": 0 }, "task_count": { "type": "integer", "description": "The number of open tasks for a specific pull request.", "minimum": 0 }, "close_source_branch": { "type": "boolean", "description": "A boolean flag indicating if merging the pull request closes the source branch." }, "closed_by": { "$ref": "#/components/schemas/account" }, "reason": { "type": "string", "description": "Explains why a pull request was declined. This field is only applicable to pull requests in rejected state." }, "created_on": { "type": "string", "description": "The ISO8601 timestamp the request was created.", "format": "date-time" }, "updated_on": { "type": "string", "description": "The ISO8601 timestamp the request was last updated.", "format": "date-time" }, "reviewers": { "type": "array", "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": "#/components/schemas/account" } }, "participants": { "type": "array", "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": "#/components/schemas/participant" } } }, "additionalProperties": true } ] }, "pullrequest_task": { "allOf": [ { "$ref": "#/components/schemas/task" }, { "type": "object", "title": "Pull Request Task", "description": "A pull request task.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "author": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Author", "description": "The author of a change in a repository", "properties": { "raw": { "type": "string", "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." }, "user": { "$ref": "#/components/schemas/account" } }, "additionalProperties": true } ] }, "committer": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Committer", "description": "The committer of a change in a repository", "properties": { "raw": { "type": "string", "description": "The raw committer value from the repository. This may be the only value available if the committer does not match a user in Bitbucket." }, "user": { "$ref": "#/components/schemas/account" } }, "additionalProperties": true } ] }, "base_commit": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Base Commit", "description": "The common base type for both repository and snippet commits.", "properties": { "hash": { "type": "string", "pattern": "[0-9a-f]{7,}?" }, "date": { "type": "string", "format": "date-time" }, "author": { "$ref": "#/components/schemas/author" }, "committer": { "$ref": "#/components/schemas/committer" }, "message": { "type": "string" }, "summary": { "type": "object", "properties": { "raw": { "type": "string", "description": "The text as it was typed by a user." }, "markup": { "type": "string", "description": "The type of markup language the raw content is to be interpreted in.", "enum": [ "markdown", "creole", "plaintext" ] }, "html": { "type": "string", "description": "The user's content rendered as HTML." } }, "additionalProperties": false }, "parents": { "type": "array", "items": { "$ref": "#/components/schemas/base_commit" }, "minItems": 0 } }, "additionalProperties": true } ] }, "paginated_changeset": { "type": "object", "title": "Page", "description": "A paginated list of commits.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/base_commit" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_commit_comments": { "type": "object", "title": "Paginated Commit Comments", "description": "A paginated list of commit comments.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/commit_comment" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "commit_file": { "type": "object", "title": "Commit File", "description": "A file object, representing a file at a commit in a repository", "properties": { "type": { "type": "string" }, "path": { "type": "string", "description": "The path in the repository" }, "commit": { "$ref": "#/components/schemas/commit" }, "attributes": { "type": "string", "enum": [ "link", "executable", "subrepository", "binary", "lfs" ] }, "escaped_path": { "type": "string", "description": "The escaped version of the path as it appears in a diff. If the path does not require escaping this will be the same as path." } }, "required": [ "type" ], "additionalProperties": true }, "diffstat": { "type": "object", "title": "Diff Stat", "description": "A diffstat object that includes a summary of changes made to a file between two commits.", "properties": { "type": { "type": "string" }, "status": { "type": "string", "enum": [ "added", "removed", "modified", "renamed" ] }, "lines_added": { "type": "integer" }, "lines_removed": { "type": "integer" }, "old": { "$ref": "#/components/schemas/commit_file" }, "new": { "$ref": "#/components/schemas/commit_file" } }, "required": [ "type" ], "additionalProperties": true }, "paginated_diffstats": { "type": "object", "title": "Paginated Diff Stat", "description": "A paginated list of diffstats.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "description": "Current number of objects on the existing page. The default value is 500 with 5000 being the maximum allowed value.", "minimum": 1 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/diffstat" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_files": { "type": "object", "title": "Paginated Files", "description": "A paginated list of commit_file objects.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/commit_file" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_refs": { "type": "object", "title": "Paginated Refs", "description": "A paginated list of refs.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/ref" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "treeentry": { "type": "object", "title": "Tree Entry", "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": { "type": { "type": "string" }, "path": { "type": "string", "description": "The path in the repository" }, "commit": { "$ref": "#/components/schemas/commit" } }, "required": [ "type" ], "additionalProperties": true }, "paginated_treeentries": { "type": "object", "title": "Paginated Tree Entry", "description": "A paginated list of commit_file and/or commit_directory objects.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/treeentry" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "ref": { "type": "object", "title": "Ref", "description": "A ref object, representing a branch or tag in a repository.", "properties": { "type": { "type": "string" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "commits": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "name": { "type": "string", "description": "The name of the ref." }, "target": { "$ref": "#/components/schemas/commit" } }, "required": [ "type" ], "additionalProperties": true }, "paginated_snippet_commit": { "type": "object", "title": "Paginated Snippet Commits", "description": "A paginated list of snippet commits.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/snippet_commit" }, "minItems": 0 } }, "additionalProperties": false }, "paginated_snippet_comments": { "type": "object", "title": "Paginated Snippet Comments", "description": "A paginated list of snippet comments.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/snippet_comment" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_snippets": { "type": "object", "title": "Paginated Snippets", "description": "A paginated list of snippets.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/snippet" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "snippet_comment": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Snippet Comment", "description": "A comment on a snippet.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "snippet": { "$ref": "#/components/schemas/snippet" } }, "additionalProperties": true } ] }, "snippet": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Snippet", "description": "A snippet object.", "properties": { "id": { "type": "integer", "minimum": 0 }, "title": { "type": "string" }, "scm": { "type": "string", "description": "The DVCS used to store the snippet.", "enum": [ "git" ] }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" }, "owner": { "$ref": "#/components/schemas/account" }, "creator": { "$ref": "#/components/schemas/account" }, "is_private": { "type": "boolean" } }, "additionalProperties": true } ] }, "deploy_key": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Deploy Key", "description": "Represents deploy key for a repository.", "properties": { "key": { "type": "string", "description": "The deploy key value." }, "repository": { "$ref": "#/components/schemas/repository" }, "comment": { "type": "string", "description": "The comment parsed from the deploy key (if present)" }, "label": { "type": "string", "description": "The user-defined label for the deploy key" }, "added_on": { "type": "string", "format": "date-time" }, "last_used": { "type": "string", "format": "date-time" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "owner": { "$ref": "#/components/schemas/account" } }, "additionalProperties": true } ] }, "GPG_account_key": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "GPG Account Key", "description": "Represents a GPG public key for a user.", "properties": { "owner": { "$ref": "#/components/schemas/account" }, "key": { "type": "string", "description": "The GPG key value in X format." }, "key_id": { "type": "string", "description": "The unique identifier for the GPG key" }, "fingerprint": { "type": "string", "description": "The GPG key fingerprint." }, "parent_fingerprint": { "type": "string", "description": "The fingerprint of the parent key. This value is null unless the current key is a subkey." }, "comment": { "type": "string", "description": "The comment parsed from the GPG key (if present)" }, "name": { "type": "string", "description": "The user-defined label for the GPG key" }, "expires_on": { "type": "string", "format": "date-time" }, "created_on": { "type": "string", "format": "date-time" }, "added_on": { "type": "string", "format": "date-time" }, "last_used": { "type": "string", "format": "date-time" }, "subkeys": { "type": "array", "items": { "$ref": "#/components/schemas/GPG_account_key" }, "minItems": 0, "uniqueItems": true }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": true } ] }, "paginated_deploy_keys": { "type": "object", "title": "Paginated Deploy Keys", "description": "A paginated list of deploy keys.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/deploy_key" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_gpg_user_keys": { "type": "object", "title": "Paginated GPG User Keys", "description": "A paginated list of GPG keys.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/GPG_account_key" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_project_deploy_keys": { "type": "object", "title": "Paginated Project Deploy Keys", "description": "A paginated list of project deploy keys.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/project_deploy_key" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_ssh_user_keys": { "type": "object", "title": "Paginated SSH User Keys", "description": "A paginated list of SSH keys.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/ssh_account_key" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "project_deploy_key": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Project Deploy Key", "description": "Represents deploy key for a project.", "properties": { "key": { "type": "string", "description": "The deploy key value." }, "project": { "$ref": "#/components/schemas/project" }, "comment": { "type": "string", "description": "The comment parsed from the deploy key (if present)" }, "label": { "type": "string", "description": "The user-defined label for the deploy key" }, "added_on": { "type": "string", "format": "date-time" }, "last_used": { "type": "string", "format": "date-time" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "created_by": { "$ref": "#/components/schemas/account" } }, "additionalProperties": true } ] }, "ssh_key": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "SSH Key", "description": "Base type for representing SSH public keys.", "properties": { "uuid": { "type": "string", "description": "The SSH key's immutable ID." }, "key": { "type": "string", "description": "The SSH public key value in OpenSSH format." }, "comment": { "type": "string", "description": "The comment parsed from the SSH key (if present)" }, "label": { "type": "string", "description": "The user-defined label for the SSH key" }, "created_on": { "type": "string", "format": "date-time" }, "last_used": { "type": "string", "format": "date-time" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": true } ] }, "hook_event": { "type": "object", "title": "Hook Event", "description": "An event, associated with a resource or subject type.", "properties": { "event": { "type": "string", "description": "The event identifier.", "enum": [ "issue:comment_created", "issue:created", "issue:updated", "project:updated", "pullrequest:approved", "pullrequest:changes_request_created", "pullrequest:changes_request_removed", "pullrequest:comment_created", "pullrequest:comment_deleted", "pullrequest:comment_reopened", "pullrequest:comment_resolved", "pullrequest:comment_updated", "pullrequest:created", "pullrequest:fulfilled", "pullrequest:push", "pullrequest:rejected", "pullrequest:unapproved", "pullrequest:updated", "repo:commit_comment_created", "repo:commit_status_created", "repo:commit_status_updated", "repo:created", "repo:deleted", "repo:fork", "repo:imported", "repo:push", "repo:transfer", "repo:updated" ] }, "category": { "type": "string", "description": "The category this event belongs to." }, "label": { "type": "string", "description": "Summary of the webhook event type." }, "description": { "type": "string", "description": "More detailed description of the webhook event type." } }, "additionalProperties": false }, "paginated_hook_events": { "type": "object", "title": "Paginated Hook Events", "description": "A paginated list of webhook types available to subscribe on.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/hook_event" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "webhook_subscription": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Webhook Subscription", "description": "A Webhook subscription.", "properties": { "uuid": { "type": "string", "description": "The webhook's id" }, "url": { "type": "string", "description": "The URL events get delivered to.", "format": "uri" }, "description": { "type": "string", "description": "A user-defined description of the webhook." }, "subject_type": { "type": "string", "description": "The type of entity. Set to either `repository` or `workspace` based on where the subscription is defined.", "enum": [ "repository", "workspace" ] }, "subject": { "$ref": "#/components/schemas/object" }, "active": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "events": { "type": "array", "description": "The events this webhook is subscribed to.", "items": { "type": "string", "enum": [ "issue:comment_created", "issue:created", "issue:updated", "project:updated", "pullrequest:approved", "pullrequest:changes_request_created", "pullrequest:changes_request_removed", "pullrequest:comment_created", "pullrequest:comment_deleted", "pullrequest:comment_reopened", "pullrequest:comment_resolved", "pullrequest:comment_updated", "pullrequest:created", "pullrequest:fulfilled", "pullrequest:push", "pullrequest:rejected", "pullrequest:unapproved", "pullrequest:updated", "repo:commit_comment_created", "repo:commit_status_created", "repo:commit_status_updated", "repo:created", "repo:deleted", "repo:fork", "repo:imported", "repo:push", "repo:transfer", "repo:updated" ] }, "minItems": 1, "uniqueItems": true }, "secret_set": { "type": "boolean", "description": "Indicates whether or not the hook has an associated secret. It is not possible to see the hook's secret. This field is ignored during updates." }, "secret": { "type": "string", "description": "The secret to associate with the hook. The secret is never returned via the API. As such, this field is only used during updates. The secret can be set to `null` or \"\" to remove the secret (or create a hook with no secret). Leaving out the secret field during updates will leave the secret unchanged. Leaving out the secret during creation will create a hook with no secret.", "minLength": 0, "maxLength": 128 } }, "additionalProperties": true } ] }, "paginated_webhook_subscriptions": { "type": "object", "title": "Paginated Webhook Subscriptions", "description": "A paginated list of webhook subscriptions", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/webhook_subscription" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_workspace_memberships": { "type": "object", "title": "Paginated Workspace Memberships", "description": "A paginated list of workspace memberships.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/workspace_membership" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_workspaces": { "type": "object", "title": "Paginated Workspaces", "description": "A paginated list of workspaces.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/workspace" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "workspace_membership": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Workspace Membership", "description": "A Bitbucket workspace membership.\n Links a user to a workspace.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "user": { "$ref": "#/components/schemas/account" }, "workspace": { "$ref": "#/components/schemas/workspace" } }, "additionalProperties": true } ] }, "workspace": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Workspace", "description": "A Bitbucket workspace.\n Workspaces are used to organize repositories.", "properties": { "links": { "type": "object", "properties": { "avatar": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "members": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "owners": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "projects": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "repositories": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "snippets": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "uuid": { "type": "string", "description": "The workspace's immutable id." }, "name": { "type": "string", "description": "The name of the workspace." }, "slug": { "type": "string", "description": "The short label that identifies this workspace." }, "is_private": { "type": "boolean", "description": "Indicates whether the workspace is publicly accessible, or whether it is\nprivate to the members and consequently only visible to members." }, "is_privacy_enforced": { "type": "boolean", "description": "Indicates whether the workspace enforces private content, or whether it allows public content." }, "forking_mode": { "type": "string", "description": "Controls the rules for forking repositories within this workspace.\n\n* **allow_forks**: unrestricted forking\n* **internal_only**: prevents forking of private repositories outside the workspace or to public repositories\n", "enum": [ "allow_forks", "internal_only" ] }, "created_on": { "type": "string", "format": "date-time" }, "updated_on": { "type": "string", "format": "date-time" } }, "additionalProperties": true } ] }, "app_user": { "allOf": [ { "$ref": "#/components/schemas/account" }, { "type": "object", "title": "App User", "description": "An app user object.", "properties": { "account_id": { "type": "string", "description": "The user's Atlassian account ID." }, "account_status": { "type": "string", "description": "The status of the account. Currently the only possible value is \"active\", but more values may be added in the future." }, "kind": { "type": "string", "description": "The kind of App User." } }, "additionalProperties": true } ] }, "user_links": { "allOf": [ { "$ref": "#/components/schemas/account_links" }, { "type": "object", "title": "User Links", "description": "Links related to a User.", "properties": { "self": { "$ref": "#/components/schemas/link" }, "html": { "$ref": "#/components/schemas/link" }, "repositories": { "$ref": "#/components/schemas/link" } }, "additionalProperties": true } ] }, "user": { "allOf": [ { "$ref": "#/components/schemas/account" }, { "type": "object", "title": "User", "description": "A user object.", "properties": { "links": { "$ref": "#/components/schemas/user_links" }, "account_id": { "type": "string", "description": "The user's Atlassian account ID." }, "account_status": { "type": "string", "description": "The status of the account. Currently the only possible value is \"active\", but more values may be added in the future." }, "has_2fa_enabled": { "type": "boolean" }, "nickname": { "type": "string", "description": "Account name defined by the owner. Should be used instead of the \"username\" field. Note that \"nickname\" cannot be used in place of \"username\" in URLs and queries, as \"nickname\" is not guaranteed to be unique." }, "is_staff": { "type": "boolean" } }, "additionalProperties": true } ] }, "branchrestriction": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Branch Restriction", "description": "A branch restriction rule.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "id": { "type": "integer", "description": "The branch restriction status' id." }, "kind": { "type": "string", "description": "The type of restriction that is being applied.", "enum": [ "push", "delete", "force", "restrict_merges", "require_tasks_to_be_completed", "require_approvals_to_merge", "require_review_group_approvals_to_merge", "require_default_reviewer_approvals_to_merge", "require_no_changes_requested", "require_passing_builds_to_merge", "require_commits_behind", "reset_pullrequest_approvals_on_change", "smart_reset_pullrequest_approvals", "reset_pullrequest_changes_requested_on_change", "require_all_dependencies_merged", "enforce_merge_checks", "allow_auto_merge_when_builds_pass", "require_all_comments_resolved" ] }, "branch_match_kind": { "type": "string", "description": "Indicates how the restriction is matched against a branch. The default is `glob`.", "enum": [ "branching_model", "glob" ] }, "branch_type": { "type": "string", "description": "Apply the restriction to branches of this type. Active when `branch_match_kind` is `branching_model`. The branch type will be calculated using the branching model configured for the repository.", "enum": [ "feature", "bugfix", "release", "hotfix", "development", "production" ] }, "pattern": { "type": "string", "description": "Apply the restriction to branches that match this pattern. Active when `branch_match_kind` is `glob`. Will be empty when `branch_match_kind` is `branching_model`." }, "value": { "type": "integer", "description": "Value with kind-specific semantics:\n\n* `require_approvals_to_merge` uses it to require a minimum number of approvals on a PR.\n\n* `require_default_reviewer_approvals_to_merge` uses it to require a minimum number of approvals from default reviewers on a PR.\n\n* `require_passing_builds_to_merge` uses it to require a minimum number of passing builds.\n\n* `require_commits_behind` uses it to require the current branch is up to a maximum number of commits behind it destination." }, "users": { "type": "array", "items": { "$ref": "#/components/schemas/account" }, "minItems": 0 }, "groups": { "type": "array", "items": { "$ref": "#/components/schemas/group" }, "minItems": 0 } }, "required": [ "kind", "branch_match_kind", "pattern" ], "additionalProperties": true } ] }, "component": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Component", "description": "A component as defined in a repository's issue tracker.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "name": { "type": "string" }, "id": { "type": "integer" } }, "additionalProperties": true } ] }, "issue_comment": { "allOf": [ { "$ref": "#/components/schemas/comment" }, { "type": "object", "title": "Issue Comment", "description": "A issue comment.", "properties": { "issue": { "$ref": "#/components/schemas/issue" } }, "additionalProperties": true } ] }, "milestone": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Milestone", "description": "A milestone as defined in a repository's issue tracker.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "name": { "type": "string" }, "id": { "type": "integer" } }, "additionalProperties": true } ] }, "version": { "allOf": [ { "$ref": "#/components/schemas/object" }, { "type": "object", "title": "Version", "description": "A version as defined in a repository's issue tracker.", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "name": { "type": "string" }, "id": { "type": "integer" } }, "additionalProperties": true } ] }, "repository_user_permission": { "type": "object", "title": "Repository User Permission", "description": "A user's direct permission for a given repository.", "properties": { "type": { "type": "string" }, "permission": { "type": "string", "enum": [ "read", "write", "admin", "none" ] }, "user": { "$ref": "#/components/schemas/user" }, "repository": { "$ref": "#/components/schemas/repository" }, "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "required": [ "type" ], "additionalProperties": true }, "pullrequest_comment": { "allOf": [ { "$ref": "#/components/schemas/comment" }, { "type": "object", "title": "Pull Request Comment", "description": "A pullrequest comment.", "properties": { "pullrequest": { "$ref": "#/components/schemas/pullrequest" }, "resolution": { "$ref": "#/components/schemas/comment_resolution" }, "pending": { "type": "boolean" } }, "additionalProperties": true } ] }, "pullrequest_comment_task": { "allOf": [ { "$ref": "#/components/schemas/pullrequest_task" }, { "type": "object", "title": "Pull Request Comment Task", "description": "A pullrequest comment task", "properties": { "comment": { "$ref": "#/components/schemas/comment" } }, "additionalProperties": false } ] }, "branch": { "allOf": [ { "$ref": "#/components/schemas/ref" }, { "type": "object", "title": "Branch", "description": "A branch object, representing a branch in a repository.", "properties": { "merge_strategies": { "type": "array", "description": "Available merge strategies for pull requests targeting this branch.", "items": { "type": "string", "enum": [ "merge_commit", "squash", "fast_forward", "squash_fast_forward", "rebase_fast_forward", "rebase_merge" ] } }, "default_merge_strategy": { "type": "string", "description": "The default merge strategy for pull requests targeting this branch." } }, "additionalProperties": true } ] }, "commit_comment": { "allOf": [ { "$ref": "#/components/schemas/comment" }, { "type": "object", "title": "Commit Comment", "description": "A commit comment.", "properties": { "commit": { "$ref": "#/components/schemas/commit" } }, "additionalProperties": true } ] }, "paginated_branches": { "type": "object", "title": "Paginated Branches", "description": "A paginated list of branches.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/branch" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "paginated_tags": { "type": "object", "title": "Paginated Tags", "description": "A paginated list of tags.", "properties": { "size": { "type": "integer", "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 }, "page": { "type": "integer", "description": "Page number of the current results. This is an optional element that is not provided in all responses.", "minimum": 1 }, "pagelen": { "type": "integer", "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 }, "next": { "type": "string", "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" }, "previous": { "type": "string", "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" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/tag" }, "minItems": 0, "uniqueItems": true } }, "additionalProperties": false }, "commit": { "allOf": [ { "$ref": "#/components/schemas/base_commit" }, { "type": "object", "title": "Commit", "description": "A repository commit object.", "properties": { "repository": { "$ref": "#/components/schemas/repository" }, "participants": { "type": "array", "items": { "$ref": "#/components/schemas/participant" }, "minItems": 0 } }, "additionalProperties": true } ] }, "tag": { "allOf": [ { "$ref": "#/components/schemas/ref" }, { "type": "object", "title": "Tag", "description": "A tag object, representing a tag in a repository.", "properties": { "message": { "type": "string", "description": "The message associated with the tag, if available." }, "date": { "type": "string", "description": "The date that the tag was created, if available", "format": "date-time" }, "tagger": { "$ref": "#/components/schemas/author" } }, "additionalProperties": true } ] }, "snippet_commit": { "allOf": [ { "$ref": "#/components/schemas/base_commit" }, { "type": "object", "title": "Snippet Commit", "description": "", "properties": { "links": { "type": "object", "properties": { "self": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "html": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false }, "diff": { "type": "object", "title": "Link", "description": "A link to a resource related to this object.", "properties": { "href": { "type": "string", "format": "uri" }, "name": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "snippet": { "$ref": "#/components/schemas/snippet" } }, "additionalProperties": true } ] }, "ssh_account_key": { "allOf": [ { "$ref": "#/components/schemas/ssh_key" }, { "type": "object", "title": "SSH Account Key", "description": "Represents an SSH public key for a user.", "properties": { "owner": { "$ref": "#/components/schemas/account" } }, "additionalProperties": true } ] } } } }