{"files":{"SKILL.md":"---\nname: azure-container-registry\ndescription: \"Azure Container Registry API skill. Use when working with Azure Container Registry for v2, {name}, {nextBlobUuidLink}. Covers 26 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Azure Container Registry\nAPI version: 2019-08-15-preview\n\n## Auth\nbasic | ApiKey Authorization in header\n\n## Base URL\nNot specified.\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /v2/ -- tells whether this docker registry instance supports docker registry http api v2\n3. POST /v2/{name}/blobs/uploads/ -- create first upload\n\n## Endpoints\n26 endpoints across 5 groups. See references/api-spec.lap for full details.\n\n### V2\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/ | Tells whether this Docker Registry instance supports Docker Registry HTTP API v2 |\n\n### {name}\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/{name}/manifests/{reference} | Get the manifest identified by `name` and `reference` where `reference` can be a tag or digest. |\n| PUT | /v2/{name}/manifests/{reference} | Put the manifest identified by `name` and `reference` where `reference` can be a tag or digest. |\n| DELETE | /v2/{name}/manifests/{reference} | Delete the manifest identified by `name` and `reference`. Note that a manifest can _only_ be deleted by `digest`. |\n| GET | /v2/{name}/blobs/{digest} | Retrieve the blob from the registry identified by digest. |\n| HEAD | /v2/{name}/blobs/{digest} | Same as GET, except only the headers are returned. |\n| DELETE | /v2/{name}/blobs/{digest} | Removes an already uploaded blob. |\n| POST | /v2/{name}/blobs/uploads/ | Mount a blob identified by the `mount` parameter from another repository. |\n\n### {nextBlobUuidLink}\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /{nextBlobUuidLink} | Retrieve status of upload identified by uuid. The primary purpose of this endpoint is to resolve the current status of a resumable upload. |\n| PATCH | /{nextBlobUuidLink} | Upload a stream of data without completing the upload. |\n| PUT | /{nextBlobUuidLink} | Complete the upload, providing all the data in the body, if necessary. A request without a body will just complete the upload with previously uploaded content. |\n| DELETE | /{nextBlobUuidLink} | Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout. |\n\n### Acr\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /acr/v1/_catalog | List repositories |\n| GET | /acr/v1/{name} | Get repository attributes |\n| DELETE | /acr/v1/{name} | Delete the repository identified by `name` |\n| PATCH | /acr/v1/{name} | Update the attribute identified by `name` where `reference` is the name of the repository. |\n| GET | /acr/v1/{name}/_tags | List tags of a repository |\n| GET | /acr/v1/{name}/_tags/{reference} | Get tag attributes by tag |\n| PATCH | /acr/v1/{name}/_tags/{reference} | Update tag attributes |\n| DELETE | /acr/v1/{name}/_tags/{reference} | Delete tag |\n| GET | /acr/v1/{name}/_manifests | List manifests of a repository |\n| GET | /acr/v1/{name}/_manifests/{reference} | Get manifest attributes |\n| PATCH | /acr/v1/{name}/_manifests/{reference} | Update attributes of a manifest |\n\n### Oauth2\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /oauth2/exchange | Exchange AAD tokens for an ACR refresh Token |\n| POST | /oauth2/token | Exchange ACR Refresh token for an ACR Access Token |\n| GET | /oauth2/token | Exchange Username, Password and Scope an ACR Access Token |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all v2?\" -> GET /v2/\n- \"Get manifest details?\" -> GET /v2/{name}/manifests/{reference}\n- \"Update a manifest?\" -> PUT /v2/{name}/manifests/{reference}\n- \"Delete a manifest?\" -> DELETE /v2/{name}/manifests/{reference}\n- \"Get blob details?\" -> GET /v2/{name}/blobs/{digest}\n- \"Delete a blob?\" -> DELETE /v2/{name}/blobs/{digest}\n- \"Create a upload?\" -> POST /v2/{name}/blobs/uploads/\n- \"Get {nextBlobUuidLink} details?\" -> GET /{nextBlobUuidLink}\n- \"Partially update a {nextBlobUuidLink}?\" -> PATCH /{nextBlobUuidLink}\n- \"Update a {nextBlobUuidLink}?\" -> PUT /{nextBlobUuidLink}\n- \"Delete a {nextBlobUuidLink}?\" -> DELETE /{nextBlobUuidLink}\n- \"List all _catalog?\" -> GET /acr/v1/_catalog\n- \"Get acr details?\" -> GET /acr/v1/{name}\n- \"Delete a acr?\" -> DELETE /acr/v1/{name}\n- \"Partially update a acr?\" -> PATCH /acr/v1/{name}\n- \"List all _tags?\" -> GET /acr/v1/{name}/_tags\n- \"Get _tag details?\" -> GET /acr/v1/{name}/_tags/{reference}\n- \"Partially update a _tag?\" -> PATCH /acr/v1/{name}/_tags/{reference}\n- \"Delete a _tag?\" -> DELETE /acr/v1/{name}/_tags/{reference}\n- \"List all _manifests?\" -> GET /acr/v1/{name}/_manifests\n- \"Get _manifest details?\" -> GET /acr/v1/{name}/_manifests/{reference}\n- \"Partially update a _manifest?\" -> PATCH /acr/v1/{name}/_manifests/{reference}\n- \"Create a exchange?\" -> POST /oauth2/exchange\n- \"Create a token?\" -> POST /oauth2/token\n- \"List all token?\" -> GET /oauth2/token\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Azure Container Registry\n@version 2019-08-15-preview\n@auth basic | ApiKey Authorization in header\n@endpoints 26\n@hint download_for_search\n@toc v2(1), {name}(7), {nextBlobUuidLink}(4), acr(11), oauth2(3)\n\n@group v2\n@endpoint GET /v2/\n@desc Tells whether this Docker Registry instance supports Docker Registry HTTP API v2\n@returns(200) Successful response. API v2 supported\n\n@endgroup\n\n@group {name}\n@endpoint GET /v2/{name}/manifests/{reference}\n@desc Get the manifest identified by `name` and `reference` where `reference` can be a tag or digest.\n@required {name: any # Name of the image (including the namespace), reference: any # A tag or a digest, pointing to a specific image}\n@optional {accept: any # Accept header string delimited by comma. For example, application/vnd.docker.distribution.manifest.v2+json}\n@returns(200) Returns the requested manifest file in a larger combined group\n\n@endpoint PUT /v2/{name}/manifests/{reference}\n@desc Put the manifest identified by `name` and `reference` where `reference` can be a tag or digest.\n@required {name: any # Name of the image (including the namespace), reference: any # A tag or a digest, pointing to a specific image, payload: any # Manifest body, can take v1 or v2 values depending on accept header}\n@returns(201) The manifest is updated\n\n@endpoint DELETE /v2/{name}/manifests/{reference}\n@desc Delete the manifest identified by `name` and `reference`. Note that a manifest can _only_ be deleted by `digest`.\n@required {name: any # Name of the image (including the namespace), reference: any # A tag or a digest, pointing to a specific image}\n@returns(202) The manifest has been deleted\n\n@endpoint GET /v2/{name}/blobs/{digest}\n@desc Retrieve the blob from the registry identified by digest.\n@required {name: any # Name of the image (including the namespace), digest: any # Digest of a BLOB}\n@returns(200) The blob identified by digest is available. The blob content will be present in the body of the response.\n@errors {307: The blob identified by digest is available at the provided location.}\n\n@endpoint HEAD /v2/{name}/blobs/{digest}\n@desc Same as GET, except only the headers are returned.\n@required {name: any # Name of the image (including the namespace), digest: any # Digest of a BLOB}\n@returns(200) The blob identified by digest is available. The blob content will be present in the body of the response.\n@errors {307: The blob identified by digest is available at the provided location.}\n\n@endpoint DELETE /v2/{name}/blobs/{digest}\n@desc Removes an already uploaded blob.\n@required {name: any # Name of the image (including the namespace), digest: any # Digest of a BLOB}\n@returns(202) The blob identified by digest is available. The blob content will be present in the body of the response.\n\n@endpoint POST /v2/{name}/blobs/uploads/\n@desc Mount a blob identified by the `mount` parameter from another repository.\n@required {name: any # Name of the image (including the namespace), from: any # Name of the source repository., mount: any # Digest of blob to mount from the source repository.}\n@returns(201) The blob has been created in the registry and is available at the provided location.\n\n@endgroup\n\n@group {nextBlobUuidLink}\n@endpoint GET /{nextBlobUuidLink}\n@desc Retrieve status of upload identified by uuid. The primary purpose of this endpoint is to resolve the current status of a resumable upload.\n@required {nextBlobUuidLink: any # Link acquired from upload start or previous chunk. Note, do not include initial / (must do substring(1) )}\n@returns(204) The upload is known and in progress. The last received offset is available in the Range header.\n\n@endpoint PATCH /{nextBlobUuidLink}\n@desc Upload a stream of data without completing the upload.\n@required {value: map # Raw data of blob, nextBlobUuidLink: any # Link acquired from upload start or previous chunk. Note, do not include initial / (must do substring(1) )}\n@returns(202) The stream of data has been accepted and the current progress is available in the range header. The updated upload location is available in the Location header.\n\n@endpoint PUT /{nextBlobUuidLink}\n@desc Complete the upload, providing all the data in the body, if necessary. A request without a body will just complete the upload with previously uploaded content.\n@required {digest: any # Digest of a BLOB, nextBlobUuidLink: any # Link acquired from upload start or previous chunk. Note, do not include initial / (must do substring(1) )}\n@optional {value: map # Optional raw data of blob}\n@returns(201) The upload has been completed and accepted by the registry.\n\n@endpoint DELETE /{nextBlobUuidLink}\n@desc Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout.\n@required {nextBlobUuidLink: any # Link acquired from upload start or previous chunk. Note, do not include initial / (must do substring(1) )}\n@returns(204) The upload has been successfully deleted.\n\n@endgroup\n\n@group acr\n@endpoint GET /acr/v1/_catalog\n@desc List repositories\n@optional {last: any # Query parameter for the last item in previous query. Result set will include values lexically after last., n: any # query parameter for max number of items}\n@returns(200) Returns a list of repositories\n\n@endpoint GET /acr/v1/{name}\n@desc Get repository attributes\n@required {name: any # Name of the image (including the namespace)}\n@returns(200) Returns a list of attributes\n\n@endpoint DELETE /acr/v1/{name}\n@desc Delete the repository identified by `name`\n@required {name: any # Name of the image (including the namespace)}\n@returns(202) The repository is deleted\n\n@endpoint PATCH /acr/v1/{name}\n@desc Update the attribute identified by `name` where `reference` is the name of the repository.\n@required {name: any # Name of the image (including the namespace)}\n@optional {value: any # Repository attribute value}\n@returns(200) The attributes are updated\n\n@endpoint GET /acr/v1/{name}/_tags\n@desc List tags of a repository\n@required {name: any # Name of the image (including the namespace)}\n@optional {last: any # Query parameter for the last item in previous query. Result set will include values lexically after last., n: any # query parameter for max number of items, orderby: any # orderby query parameter, digest: any # filter by digest}\n@returns(200) Tag details of a repository\n\n@endpoint GET /acr/v1/{name}/_tags/{reference}\n@desc Get tag attributes by tag\n@required {name: any # Name of the image (including the namespace), reference: any # Tag name}\n@returns(200) Tag attributes\n\n@endpoint PATCH /acr/v1/{name}/_tags/{reference}\n@desc Update tag attributes\n@required {name: any # Name of the image (including the namespace), reference: any # Tag name}\n@optional {value: any # Tag attribute value}\n@returns(200) The attributes are updated\n\n@endpoint DELETE /acr/v1/{name}/_tags/{reference}\n@desc Delete tag\n@required {name: any # Name of the image (including the namespace), reference: any # Tag name}\n@returns(202) The tag is deleted\n\n@endpoint GET /acr/v1/{name}/_manifests\n@desc List manifests of a repository\n@required {name: any # Name of the image (including the namespace)}\n@optional {last: any # Query parameter for the last item in previous query. Result set will include values lexically after last., n: any # query parameter for max number of items, orderby: any # orderby query parameter}\n@returns(200) Returns a list of manifests\n\n@endpoint GET /acr/v1/{name}/_manifests/{reference}\n@desc Get manifest attributes\n@required {name: any # Name of the image (including the namespace), reference: any # A tag or a digest, pointing to a specific image}\n@returns(200) List of attributes\n\n@endpoint PATCH /acr/v1/{name}/_manifests/{reference}\n@desc Update attributes of a manifest\n@required {name: any # Name of the image (including the namespace), reference: any # A tag or a digest, pointing to a specific image}\n@optional {value: any # Manifest attribute value}\n@returns(200) The attributes are updated\n\n@endgroup\n\n@group oauth2\n@endpoint POST /oauth2/exchange\n@desc Exchange AAD tokens for an ACR refresh Token\n@required {grant_type: any # Can take a value of access_token_refresh_token, or access_token, or refresh_token, service: any # Indicates the name of your Azure container registry.}\n@optional {tenant: any # AAD tenant associated to the AAD credentials., refresh_token: any # AAD refresh token, mandatory when grant_type is access_token_refresh_token or refresh_token, access_token: any # AAD access token, mandatory when grant_type is access_token_refresh_token or access_token.}\n@returns(200) Refresh token acquired\n\n@endpoint POST /oauth2/token\n@desc Exchange ACR Refresh token for an ACR Access Token\n@required {grant_type: any # Grant type is expected to be refresh_token, service: any # Indicates the name of your Azure container registry., scope: any # Which is expected to be a valid scope, and can be specified more than once for multiple scope requests. You obtained this from the Www-Authenticate response header from the challenge., refresh_token: any # Must be a valid ACR refresh token}\n@returns(200) Access token acquired\n\n@endpoint GET /oauth2/token\n@desc Exchange Username, Password and Scope an ACR Access Token\n@required {service: any # Indicates the name of your Azure container registry., scope: any # Expected to be a valid scope, and can be specified more than once for multiple scope requests. You can obtain this from the Www-Authenticate response header from the challenge.}\n@returns(200) Access token acquired\n\n@endgroup\n\n@end\n"}}