Azure Container Registry
Metadata API definition for the Azure Container Registry runtime
COMMUNITYAPI KEY0 INSTALLS
OpenAPI Specificationv3.0
{
"swagger": "2.0",
"schemes": [
"https"
],
"host": "azure.local",
"info": {
"description": "Metadata API definition for the Azure Container Registry runtime",
"title": "Azure Container Registry",
"version": "2019-08-15-preview",
"x-apisguru-categories": [
"cloud"
],
"x-logo": {
"url": "https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png"
},
"x-origin": [
{
"format": "swagger",
"url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/containerregistry/data-plane/Microsoft.ContainerRegistry/preview/2019-08-15/containerregistry.json",
"version": "2.0"
}
],
"x-preferred": true,
"x-providerName": "azure.com",
"x-serviceName": "containerregistry",
"x-tags": [
"Azure",
"Microsoft"
]
},
"produces": [
"application/json"
],
"securityDefinitions": {
"registry_auth": {
"type": "basic"
},
"registry_oauth2": {
"in": "header",
"name": "Authorization",
"type": "apiKey"
}
},
"security": [
{
"registry_auth": [],
"registry_oauth2": []
}
],
"parameters": {
"AccessToken": {
"description": "AAD access token, mandatory when grant_type is access_token_refresh_token or access_token.",
"in": "formData",
"name": "access_token",
"required": false,
"type": "string",
"x-ms-parameter-location": "method"
},
"BlobQueryDigest": {
"description": "Digest of a BLOB",
"in": "query",
"name": "digest",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"Content-Range": {
"description": "Range of bytes identifying the desired block of content represented by the body. Start must the end offset retrieved via status check plus one. Note that this is a non-standard use of the `Content-Range` header.",
"in": "header",
"name": "Content-Range",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"Digest": {
"description": "Digest of a BLOB",
"in": "path",
"name": "digest",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"From": {
"description": "Name of the source repository.",
"in": "query",
"name": "from",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"Grant_type": {
"description": "Can take a value of access_token_refresh_token, or access_token, or refresh_token",
"enum": [
"access_token_refresh_token",
"access_token",
"refresh_token"
],
"in": "formData",
"name": "grant_type",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"ImageName": {
"description": "Name of the image (including the namespace)",
"in": "path",
"name": "name",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"ImageReference": {
"description": "A tag or a digest, pointing to a specific image",
"in": "path",
"name": "reference",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"ManifestBody": {
"description": "Manifest body, can take v1 or v2 values depending on accept header",
"in": "body",
"name": "payload",
"required": true,
"schema": {
"$ref": "#/definitions/Manifest"
},
"x-ms-parameter-location": "method"
},
"ManifestReference": {
"description": "Tag or digest of the target manifest",
"in": "path",
"name": "reference",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"Mount": {
"description": "Digest of blob to mount from the source repository.",
"in": "query",
"name": "mount",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"NextLink": {
"description": "Link acquired from upload start or previous chunk. Note, do not include initial / (must do substring(1) )",
"in": "path",
"name": "nextBlobUuidLink",
"required": true,
"type": "string",
"x-ms-client-name": "location",
"x-ms-parameter-location": "method",
"x-ms-skip-url-encoding": true
},
"NoUploadCache": {
"description": "Acquired from NextLink",
"in": "query",
"name": "_nouploadcache",
"required": false,
"type": "boolean",
"x-ms-parameter-location": "method"
},
"QueryDigest": {
"description": "filter by digest",
"in": "query",
"name": "digest",
"required": false,
"type": "string",
"x-ms-parameter-location": "method"
},
"QueryLast": {
"description": "Query parameter for the last item in previous query. Result set will include values lexically after last.",
"in": "query",
"name": "last",
"required": false,
"type": "string",
"x-ms-parameter-location": "method"
},
"QueryNum": {
"description": "query parameter for max number of items",
"in": "query",
"name": "n",
"required": false,
"type": "integer",
"x-ms-parameter-location": "method"
},
"QueryOrderBy": {
"description": "orderby query parameter",
"in": "query",
"name": "orderby",
"required": false,
"type": "string",
"x-ms-parameter-location": "method"
},
"Range": {
"description": "Format : bytes=<start>-<end>, HTTP Range header specifying blob chunk.",
"in": "header",
"name": "Range",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"RawData": {
"description": "Raw data of blob",
"in": "body",
"name": "value",
"required": true,
"schema": {
"format": "file",
"type": "object"
},
"x-ms-parameter-location": "method"
},
"RawDataOptional": {
"description": "Optional raw data of blob",
"in": "body",
"name": "value",
"required": false,
"schema": {
"format": "file",
"type": "object"
},
"x-ms-parameter-location": "method"
},
"RefreshToken": {
"description": "AAD refresh token, mandatory when grant_type is access_token_refresh_token or refresh_token",
"in": "formData",
"name": "refresh_token",
"required": false,
"type": "string",
"x-ms-parameter-location": "method"
},
"RepoValue": {
"description": "Repository attribute value",
"in": "body",
"name": "value",
"required": false,
"schema": {
"$ref": "#/definitions/ChangeableAttributes"
},
"x-ms-parameter-location": "method"
},
"Scope": {
"description": "Which is 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.",
"in": "formData",
"name": "scope",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"Service": {
"description": "Indicates the name of your Azure container registry.",
"in": "formData",
"name": "service",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"State": {
"description": "Acquired from NextLink",
"in": "query",
"name": "_state",
"required": false,
"type": "string",
"x-ms-parameter-location": "method"
},
"TagReference": {
"description": "Tag name",
"in": "path",
"name": "reference",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
},
"Tenant": {
"description": "AAD tenant associated to the AAD credentials.",
"in": "formData",
"name": "tenant",
"required": false,
"type": "string",
"x-ms-parameter-location": "method"
},
"Url": {
"description": "Registry login URL",
"in": "path",
"name": "url",
"required": true,
"type": "string",
"x-ms-client-name": "loginUri",
"x-ms-parameter-location": "client",
"x-ms-skip-url-encoding": true
},
"Uuid": {
"description": "A uuid identifying the upload.",
"in": "path",
"name": "uuid",
"required": true,
"type": "string",
"x-ms-parameter-location": "method"
}
},
"tags": [
{
"description": "Root API",
"name": "v2"
},
{
"description": "Everything about manifests",
"name": "Manifest"
},
{
"description": "Everything about tags",
"name": "Tag"
},
{
"description": "Everything about layers",
"name": "Layer"
},
{
"description": "Everything about repository",
"name": "Repository"
},
{
"description": "ACR APIs related to repositories",
"name": "AcrRepository"
},
{
"description": "ACR APIs related to manifests",
"name": "AcrManifest"
},
{
"description": "ACR APIs related to tags",
"name": "AcrTag"
}
],
"paths": {
"/acr/v1/_catalog": {
"get": {
"description": "List repositories",
"operationId": "Repository_GetList",
"parameters": [
{
"$ref": "#/parameters/QueryLast"
},
{
"$ref": "#/parameters/QueryNum"
}
],
"responses": {
"200": {
"description": "Returns a list of repositories",
"headers": {
"Link": {
"description": "next paginated result",
"type": "string"
}
},
"schema": {
"$ref": "#/definitions/Repositories"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrRepository"
],
"x-ms-examples": {
"Get repositories in a registry": {
"parameters": {
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"repositories": [
"production/alpine",
"testing/alpine"
]
}
}
}
}
}
}
},
"/acr/v1/{name}": {
"delete": {
"description": "Delete the repository identified by `name`",
"operationId": "Repository_Delete",
"parameters": [
{
"$ref": "#/parameters/ImageName"
}
],
"responses": {
"202": {
"description": "The repository is deleted",
"schema": {
"$ref": "#/definitions/DeletedRepository"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrRepository"
],
"x-ms-examples": {
"Delete a repository": {
"parameters": {
"name": "nanoserver",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"202": {
"body": {
"manifestsDeleted": [
"sha256:e31831d63f77a0a6d74ef5b16df619a50808dac842190d07ae24e8b520d159fa"
],
"tagsDeleted": [
"4.7.2-20180814-windowsservercore-1709"
]
}
}
}
}
}
},
"get": {
"description": "Get repository attributes",
"operationId": "Repository_GetAttributes",
"parameters": [
{
"$ref": "#/parameters/ImageName"
}
],
"responses": {
"200": {
"description": "Returns a list of attributes",
"schema": {
"$ref": "#/definitions/RepositoryAttributes"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrRepository",
"AcrMetadata"
],
"x-ms-examples": {
"Get details of repository": {
"parameters": {
"name": "nanoserver",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2018-09-06T06:17:20.9531248Z",
"imageName": "nanoserver",
"lastUpdateTime": "2018-09-07T16:30:46.6583219Z",
"manifestCount": 2,
"registry": "acrapi.azurecr-test.io",
"tagCount": 2
}
}
}
}
}
},
"patch": {
"consumes": [
"application/json"
],
"description": "Update the attribute identified by `name` where `reference` is the name of the repository.",
"operationId": "Repository_UpdateAttributes",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"description": "Repository attribute value",
"in": "body",
"name": "value",
"required": false,
"schema": {
"$ref": "#/definitions/ChangeableAttributes"
}
}
],
"responses": {
"200": {
"description": "The attributes are updated"
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrRepository",
"AcrMetadata"
],
"x-ms-examples": {
"Update repository attributes": {
"parameters": {
"name": "nanoserver",
"url": "acrapi.azurecr-test.io",
"value": {
"writeEnabled": false
}
},
"responses": {
"200": {}
}
}
}
}
},
"/acr/v1/{name}/_manifests": {
"get": {
"description": "List manifests of a repository",
"operationId": "Manifests_GetList",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/QueryLast"
},
{
"$ref": "#/parameters/QueryNum"
},
{
"$ref": "#/parameters/QueryOrderBy"
}
],
"responses": {
"200": {
"description": "Returns a list of manifests",
"schema": {
"$ref": "#/definitions/AcrManifests"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrManifest",
"AcrMetadata"
],
"x-ms-examples": {
"Get list of available manifests": {
"parameters": {
"name": "nanoserver",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"imageName": "nanoserver",
"manifests": [
{
"architecture": "amd64",
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"configMediaType": "application/vnd.docker.container.image.v1+json",
"createdTime": "2018-09-06T06:17:20.9983915Z",
"digest": "sha256:110d2b6c84592561338aa040b1b14b7ab81c2f9edbd564c2285dd7d70d777086",
"imageSize": 2401606,
"lastUpdateTime": "2018-09-06T06:17:20.9983915Z",
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"os": "windows",
"tags": [
"4.7.2-20180905-nanoserver-1803"
]
},
{
"architecture": "amd64",
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"configMediaType": "application/vnd.docker.container.image.v1+json",
"createdTime": "2018-09-07T16:30:46.5651701Z",
"digest": "sha256:7af5cd1dde3e8f5c2c9103860afa4ca871a6075373b6564b0e7b1b47866dab52",
"imageSize": 4135121,
"lastUpdateTime": "2018-09-07T16:30:46.5651701Z",
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"os": "windows",
"tags": [
"4.7.2-20180906-nanoserver-1803"
]
}
],
"registry": "acrapi.azurecr-test.io"
}
}
}
}
}
}
},
"/acr/v1/{name}/_manifests/{reference}": {
"get": {
"description": "Get manifest attributes",
"operationId": "Manifests_GetAttributes",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/ImageReference"
}
],
"responses": {
"200": {
"description": "List of attributes",
"schema": {
"$ref": "#/definitions/ManifestAttributes"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrManifest",
"AcrMetadata"
],
"x-ms-examples": {
"Get manifest attributes": {
"parameters": {
"name": "nanoserver",
"reference": "sha256:110d2b6c84592561338aa040b1b14b7ab81c2f9edbd564c2285dd7d70d777086",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"imageName": "nanoserver",
"manifest": {
"architecture": "amd64",
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"configMediaType": "application/vnd.docker.container.image.v1+json",
"createdTime": "2018-09-06T06:17:20.9983915Z",
"digest": "sha256:110d2b6c84592561338aa040b1b14b7ab81c2f9edbd564c2285dd7d70d777086",
"imageSize": 2401606,
"lastUpdateTime": "2018-09-06T06:17:20.9983915Z",
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"os": "windows",
"tags": [
"4.7.2-20180905-nanoserver-1803"
]
},
"registry": "acrapi.azurecr-test.io"
}
}
}
}
}
},
"patch": {
"consumes": [
"application/json"
],
"description": "Update attributes of a manifest",
"operationId": "Manifests_UpdateAttributes",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/ImageReference"
},
{
"$ref": "#/parameters/RepoValue"
}
],
"responses": {
"200": {
"description": "The attributes are updated"
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrManifest",
"AcrMetadata"
],
"x-ms-examples": {
"Update attributes of a manifest": {
"parameters": {
"name": "nanoserver",
"reference": "sha256:110d2b6c84592561338aa040b1b14b7ab81c2f9edbd564c2285dd7d70d777086",
"url": "acrapi.azurecr-test.io",
"value": "{\"writeEnabled\": false}"
},
"responses": {
"200": {}
}
}
}
}
},
"/acr/v1/{name}/_tags": {
"get": {
"description": "List tags of a repository",
"operationId": "Tag_GetList",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/QueryLast"
},
{
"$ref": "#/parameters/QueryNum"
},
{
"$ref": "#/parameters/QueryOrderBy"
},
{
"$ref": "#/parameters/QueryDigest"
}
],
"responses": {
"200": {
"description": "Tag details of a repository",
"schema": {
"$ref": "#/definitions/TagList"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrTag",
"AcrMetadata"
],
"x-ms-examples": {
"Get tags of a repository": {
"parameters": {
"name": "nanoserver",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"imageName": "nanoserver",
"registry": "acrapi.azurecr-test.io",
"tags": [
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2018-09-06T06:17:21.0856539Z",
"digest": "sha256:110d2b6c84592561338aa040b1b14b7ab81c2f9edbd564c2285dd7d70d777086",
"lastUpdateTime": "2018-09-06T06:17:21.0856539Z",
"name": "4.7.2-20180905-nanoserver-1803",
"signed": false
},
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2018-09-06T16:30:43.3860166Z",
"digest": "sha256:7af5cd1dde3e8f5c2c9103860afa4ca871a6075373b6564b0e7b1b47866dab52",
"lastUpdateTime": "2018-09-07T16:30:46.7022734Z",
"name": "4.7.2-20180906-nanoserver-1803",
"signed": false
}
]
}
}
}
}
}
}
},
"/acr/v1/{name}/_tags/{reference}": {
"delete": {
"consumes": [
"application/json"
],
"description": "Delete tag",
"operationId": "Tag_Delete",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/TagReference"
}
],
"responses": {
"202": {
"description": "The tag is deleted"
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrTag",
"AcrMetadata"
],
"x-ms-examples": {
"Delete a tag": {
"parameters": {
"name": "nanoserver",
"reference": "4.7.2-20180905-nanoserver-1803",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"202": {}
}
}
}
},
"get": {
"description": "Get tag attributes by tag",
"operationId": "Tag_GetAttributes",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/TagReference"
}
],
"responses": {
"200": {
"description": "Tag attributes",
"schema": {
"$ref": "#/definitions/TagAttributes"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrTag",
"AcrMetadata"
],
"x-ms-examples": {
"Get tag attributes": {
"parameters": {
"name": "test/bash",
"reference": "sha256:eabe547f78d4c18c708dd97ec3166cf7464cc651f1cbb67e7afas407405b7ad7b6",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"imageName": "test/bash",
"registry": "acrapi.azurecr-test.io",
"tag": {
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": false
},
"createdTime": "2018-10-05T20:54:24.1286047Z",
"digest": "sha256:eabe547f78d4c18c708dd97ec3166cf7464cc651f1cbb67e70d407405b7ad7b6",
"lastUpdateTime": "2018-10-05T20:54:24.1286047Z",
"name": "tagName",
"signed": false
}
}
}
}
}
}
},
"patch": {
"consumes": [
"application/json"
],
"description": "Update tag attributes",
"operationId": "Tag_UpdateAttributes",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/TagReference"
},
{
"$ref": "#/parameters/RepoValue"
}
],
"responses": {
"200": {
"description": "The attributes are updated"
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"AcrTag",
"AcrMetadata"
],
"x-ms-examples": {
"Update attributes of a tag": {
"parameters": {
"name": "nanoserver",
"reference": "4.7.2-20180905-nanoserver-1803",
"url": "acrapi.azurecr-test.io",
"value": "{\"writeEnabled\": false}"
},
"responses": {
"200": {}
}
}
}
}
},
"/oauth2/exchange": {
"post": {
"consumes": [
"application/x-www-form-urlencoded"
],
"description": "Exchange AAD tokens for an ACR refresh Token",
"operationId": "RefreshTokens_GetFromExchange",
"parameters": [
{
"$ref": "#/parameters/Grant_type"
},
{
"$ref": "#/parameters/Service"
},
{
"$ref": "#/parameters/Tenant"
},
{
"$ref": "#/parameters/RefreshToken"
},
{
"$ref": "#/parameters/AccessToken"
}
],
"responses": {
"200": {
"description": "Refresh token acquired",
"schema": {
"$ref": "#/definitions/RefreshToken"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"security": [],
"tags": [
"AcrToken",
"RefreshToken"
],
"x-ms-examples": {
"Exchange AAD Token for ACR Refresh": {
"parameters": {
"accessToken": "eyJ0eXAiOiJKJhbGci1dCI6IkN0ZlFDOExlLTMejlnIiwidGlkIjoiNzJmOTgWItMmQ3Y2QwMTFkYjQ3Ii...",
"grant_type": "access_token",
"service": "someregistry.azurecr.io",
"tenant": "02f900bf-86f1-31af-p1ab-2b7cd0nndb47",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"refresh_token": "eyJ0eXAiOiJKJhbGcigdCI6IkN0ZlFaOExlLTMejlnIiwidGlkIjoiNzbmOTgWItMmQ3Y2QwMTFkYjQ3Ii..."
}
}
}
}
}
}
},
"/oauth2/token": {
"get": {
"description": "Exchange Username, Password and Scope an ACR Access Token",
"operationId": "AccessTokens_GetFromLogin",
"parameters": [
{
"description": "Indicates the name of your Azure container registry.",
"in": "query",
"name": "service",
"required": true,
"type": "string"
},
{
"description": "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.",
"in": "query",
"name": "scope",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Access token acquired",
"schema": {
"$ref": "#/definitions/AccessToken"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"security": [
{
"registry_auth": []
}
],
"tags": [
"AcrToken",
"AccessToken",
"userLogin"
],
"x-ms-examples": {
"Get Access Token with username and password": {
"parameters": {
"scope": "registry:catalog:*",
"service": "someregistry.azurecr.io",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"access_token": "eyJ0eXAiOiJKJhbGcigdCI6IkN0ZlFaOExlLTMejlnIiwidGlkIjoiNzbmOTgWItMmQ3Y2QwMTFkYjQ3Ii..."
}
}
}
}
}
},
"post": {
"consumes": [
"application/x-www-form-urlencoded"
],
"description": "Exchange ACR Refresh token for an ACR Access Token",
"operationId": "AccessTokens_Get",
"parameters": [
{
"description": "Grant type is expected to be refresh_token",
"enum": [
"refresh_token"
],
"in": "formData",
"name": "grant_type",
"required": true,
"type": "string"
},
{
"$ref": "#/parameters/Service"
},
{
"description": "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.",
"in": "formData",
"name": "scope",
"required": true,
"type": "string"
},
{
"description": "Must be a valid ACR refresh token",
"in": "formData",
"name": "refresh_token",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Access token acquired",
"schema": {
"$ref": "#/definitions/AccessToken"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"security": [],
"tags": [
"AcrToken",
"AccessToken"
],
"x-ms-examples": {
"Get Access Token with Refresh Token": {
"parameters": {
"grant_type": "refresh_token",
"refresh_token": "eyJ0eXAiOiJKJhbGci1dCI6IkN0ZlFDOExlLTMejlnIiwidGlkIjoiNzJmOTgWItMmQ3Y2QwMTFkYjQ3Ii...",
"scope": "registry:catalog:*",
"service": "someregistry.azurecr.io",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"access_token": "eyJ0eXAiOiJKJhbGcigdCI6IkN0ZlFaOExlLTMejlnIiwidGlkIjoiNzbmOTgWItMmQ3Y2QwMTFkYjQ3Ii..."
}
}
}
}
}
}
},
"/v2/": {
"get": {
"description": "Tells whether this Docker Registry instance supports Docker Registry HTTP API v2",
"operationId": "V2Support_Check",
"responses": {
"200": {
"description": "Successful response. API v2 supported"
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"v2"
],
"x-ms-examples": {
"Check Docker Registry V2 Support": {
"parameters": {
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {}
}
}
}
}
},
"/v2/{name}/blobs/uploads/": {
"post": {
"description": "Mount a blob identified by the `mount` parameter from another repository.",
"operationId": "Blob_Mount",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/From"
},
{
"$ref": "#/parameters/Mount"
}
],
"responses": {
"201": {
"description": "The blob has been created in the registry and is available at the provided location.",
"headers": {
"Docker-Content-Digest": {
"description": "Digest of the targeted content for the request.",
"type": "string"
},
"Docker-Upload-UUID": {
"description": "Identifies the docker upload uuid for the current request.",
"type": "string"
},
"Location": {
"description": "Provided location for blob",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Mount a blob from repository": {
"parameters": {
"from": "sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39",
"mount": "prod/bash",
"name": "newimage",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"201": {
"headers": {
"Docker-Content-Digest": "sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39",
"Location": "/v2/somethingnew/blobs/sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39"
}
}
}
}
}
}
},
"/v2/{name}/blobs/{digest}": {
"delete": {
"description": "Removes an already uploaded blob.",
"operationId": "Blob_Delete",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/Digest"
}
],
"produces": [
"application/octet-stream"
],
"responses": {
"202": {
"description": "The blob identified by digest is available. The blob content will be present in the body of the response.",
"headers": {
"Docker-Content-Digest": {
"description": "Digest of the targeted content for the request.",
"type": "string"
}
},
"schema": {
"description": "blob binary data",
"format": "file",
"type": "file"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Delete a blob": {
"parameters": {
"digest": "sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39",
"name": "prod/bash",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"202": {
"body": ""
}
}
}
}
},
"get": {
"description": "Retrieve the blob from the registry identified by digest.",
"operationId": "Blob_Get",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/Digest"
}
],
"produces": [
"application/octet-stream"
],
"responses": {
"200": {
"description": "The blob identified by digest is available. The blob content will be present in the body of the response.",
"headers": {
"Content-Length": {
"description": "The length of the requested blob content.",
"format": "int64",
"type": "integer"
},
"Docker-Content-Digest": {
"description": "Digest of the targeted content for the request.",
"type": "string"
}
},
"schema": {
"description": "blob binary data",
"format": "file",
"type": "file"
}
},
"307": {
"description": "The blob identified by digest is available at the provided location.",
"headers": {
"Location": {
"description": "The location where the layer should be accessible.",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Get a blob from digest": {
"parameters": {
"digest": "sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39",
"name": "prod/bash",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": "eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLCJfQkFTSF9HUEdfS0VZPTdDMDEzNUZCMDg4QUFGNkM2NkM2NTBCOUJCNTg2OUYwNjRFQTc0QUIiLCJfQkFTSF9WRVJTSU9OPTUuMCIsIl9CQVNIX1BBVENIX0xFVkVMPTAiLCJfQkFTSF9MQVRFU1RfUEFUQ0g9NyJdLCJDbWQiOlsiYmFzaCJdLCJBcmdzRXNjYXBlZCI6dHJ1ZSwiSW1hZ2UiOiJzaGEyNTY6MzhhZDJmYmM5ZjljMGE4N2RmZTBhMmIxOWJkY2E5NGJlNDVmNDY2M2Y3M2ZkMDlmZWZlZTQ5MmFmZDJjMDE0NCIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpbImRvY2tlci1lbnRyeXBvaW50LnNoIl0sIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6bnVsbH0sImNvbnRhaW5lciI6IjRiMDU0NmZhNDlkZjVkY2FlZDViNjYzNzE3ZjQ0MmNlZjcxYTFiOTVjMGZmYjQyYzhjNWNlNzIzMWI5MGMwMjYiLCJjb250YWluZXJfY29uZmlnIjp7Ikhvc3RuYW1lIjoiNGIwNTQ2ZmE0OWRmIiwiRG9tYWlubmFtZSI6IiIsIlVzZXIiOiIiLCJBdHRhY2hTdGRpbiI6ZmFsc2UsIkF0dGFjaFN0ZG91dCI6ZmFsc2UsIkF0dGFjaFN0ZGVyciI6ZmFsc2UsIlR0eSI6ZmFsc2UsIk9wZW5TdGRpbiI6ZmFsc2UsIlN0ZGluT25jZSI6ZmFsc2UsIkVudiI6WyJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbiIsIl9CQVNIX0dQR19LRVk9N0MwMTM1RkIwODhBQUY2QzY2QzY1MEI5QkI1ODY5RjA2NEVBNzRBQiIsIl9CQVNIX1ZFUlNJT049NS4wIiwiX0JBU0hfUEFUQ0hfTEVWRUw9MCIsIl9CQVNIX0xBVEVTVF9QQVRDSD03Il0sIkNtZCI6WyIvYmluL3NoIiwiLWMiLCIjKG5vcCkgIiwiQ01EIFtcImJhc2hcIl0iXSwiQXJnc0VzY2FwZWQiOnRydWUsIkltYWdlIjoic2hhMjU2OjM4YWQyZmJjOWY5YzBhODdkZmUwYTJiMTliZGNhOTRiZTQ1ZjQ2NjNmNzNmZDA5ZmVmZWU0OTJhZmQyYzAxNDQiLCJWb2x1bWVzIjpudWxsLCJXb3JraW5nRGlyIjoiIiwiRW50cnlwb2ludCI6WyJkb2NrZXItZW50cnlwb2ludC5zaCJdLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOnt9fSwiY3JlYXRlZCI6IjIwMTktMDctMTNUMDE6MTY6MDYuNTI3NTE1OTAyWiIsImRvY2tlcl92ZXJzaW9uIjoiMTguMDYuMS1jZSIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDE5LTA3LTExVDIyOjIwOjUyLjEzOTcwOTM1NVoiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgQUREIGZpbGU6MGViNWVhMzU3NDFkMjNmZTM5Y2JhYzI0NWIzYTVkODQ4NTZlZDYzODRmNGZmMDdkNDk2MzY5ZWU2ZDk2MGJhZCBpbiAvICJ9LHsiY3JlYXRlZCI6IjIwMTktMDctMTFUMjI6MjA6NTIuMzc1Mjg2NDA0WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgQ01EIFtcIi9iaW4vc2hcIl0iLCJlbXB0eV9sYXllciI6dHJ1ZX0seyJjcmVhdGVkIjoiMjAxOS0wNy0xM1QwMToxNToxMy41Njc2Njk4MTJaIiwiY3JlYXRlZF9ieSI6Ii9iaW4vc2ggLWMgIyhub3ApICBFTlYgX0JBU0hfR1BHX0tFWT03QzAxMzVGQjA4OEFBRjZDNjZDNjUwQjlCQjU4NjlGMDY0RUE3NEFCIiwiZW1wdHlfbGF5ZXIiOnRydWV9LHsiY3JlYXRlZCI6IjIwMTktMDctMTNUMDE6MTU6MTMuNzQ1NjUyMDk4WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgRU5WIF9CQVNIX1ZFUlNJT049NS4wIiwiZW1wdHlfbGF5ZXIiOnRydWV9LHsiY3JlYXRlZCI6IjIwMTktMDctMTNUMDE6MTU6MTMuOTQwNDU1NDE5WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgRU5WIF9CQVNIX1BBVENIX0xFVkVMPTAiLCJlbXB0eV9sYXllciI6dHJ1ZX0seyJjcmVhdGVkIjoiMjAxOS0wNy0xM1QwMToxNToxNC4wOTkzMDAwNzVaIiwiY3JlYXRlZF9ieSI6Ii9iaW4vc2ggLWMgIyhub3ApICBFTlYgX0JBU0hfTEFURVNUX1BBVENIPTciLCJlbXB0eV9sYXllciI6dHJ1ZX0seyJjcmVhdGVkIjoiMjAxOS0wNy0xM1QwMToxNjowNS45Mjg0MjkyNjJaIiwiY3JlYXRlZF9ieSI6Ii9iaW4vc2ggLWMgc2V0IC1ldXg7IFx0XHRhcGsgYWRkIC0tbm8tY2FjaGUgLS12aXJ0dWFsIC5idWlsZC1kZXBzIFx0XHRiaXNvbiBcdFx0Y29yZXV0aWxzIFx0XHRkcGtnLWRldiBkcGtnIFx0XHRnY2MgXHRcdGdudXBnIFx0XHRsaWJjLWRldiBcdFx0bWFrZSBcdFx0bmN1cnNlcy1kZXYgXHRcdHBhdGNoIFx0XHR0YXIgXHQ7IFx0XHR2ZXJzaW9uPVwiJF9CQVNIX1ZFUlNJT05cIjsgXHRpZiBbIFwiJF9CQVNIX1BBVENIX0xFVkVMXCIgLWd0IDAgXTsgdGhlbiBcdFx0dmVyc2lvbj1cIiR2ZXJzaW9uLiRfQkFTSF9QQVRDSF9MRVZFTFwiOyBcdGZpOyBcdHdnZXQgLU8gYmFzaC50YXIuZ3ogXCJodHRwczovL2Z0cC5nbnUub3JnL2dudS9iYXNoL2Jhc2gtJHZlcnNpb24udGFyLmd6XCI7IFx0d2dldCAtTyBiYXNoLnRhci5nei5zaWcgXCJodHRwczovL2Z0cC5nbnUub3JnL2dudS9iYXNoL2Jhc2gtJHZlcnNpb24udGFyLmd6LnNpZ1wiOyBcdFx0aWYgWyBcIiRfQkFTSF9MQVRFU1RfUEFUQ0hcIiAtZ3QgXCIkX0JBU0hfUEFUQ0hfTEVWRUxcIiBdOyB0aGVuIFx0XHRta2RpciAtcCBiYXNoLXBhdGNoZXM7IFx0XHRmaXJzdD1cIiQocHJpbnRmICclMDNkJyBcIiQoKCBfQkFTSF9QQVRDSF9MRVZFTCArIDEgKSlcIilcIjsgXHRcdGxhc3Q9XCIkKHByaW50ZiAnJTAzZCcgXCIkX0JBU0hfTEFURVNUX1BBVENIXCIpXCI7IFx0XHRmb3IgcGF0Y2ggaW4gJChzZXEgLXcgXCIkZmlyc3RcIiBcIiRsYXN0XCIpOyBkbyBcdFx0XHR1cmw9XCJodHRwczovL2Z0cC5nbnUub3JnL2dudS9iYXNoL2Jhc2gtJF9CQVNIX1ZFUlNJT04tcGF0Y2hlcy9iYXNoJHtfQkFTSF9WRVJTSU9OLy8uL30tJHBhdGNoXCI7IFx0XHRcdHdnZXQgLU8gXCJiYXNoLXBhdGNoZXMvJHBhdGNoXCIgXCIkdXJsXCI7IFx0XHRcdHdnZXQgLU8gXCJiYXNoLXBhdGNoZXMvJHBhdGNoLnNpZ1wiIFwiJHVybC5zaWdcIjsgXHRcdGRvbmU7IFx0Zmk7IFx0XHRleHBvcnQgR05VUEdIT01FPVwiJChta3RlbXAgLWQpXCI7IFx0Z3BnIC0tYmF0Y2ggLS1rZXlzZXJ2ZXIgaGEucG9vbC5za3Mta2V5c2VydmVycy5uZXQgLS1yZWN2LWtleXMgXCIkX0JBU0hfR1BHX0tFWVwiOyBcdGdwZyAtLWJhdGNoIC0tdmVyaWZ5IGJhc2gudGFyLmd6LnNpZyBiYXNoLnRhci5nejsgXHRncGdjb25mIC0ta2lsbCBhbGw7IFx0cm0gYmFzaC50YXIuZ3ouc2lnOyBcdGlmIFsgLWQgYmFzaC1wYXRjaGVzIF07IHRoZW4gXHRcdGZvciBzaWcgaW4gYmFzaC1wYXRjaGVzLyouc2lnOyBkbyBcdFx0XHRwPVwiJHtzaWclLnNpZ31cIjsgXHRcdFx0Z3BnIC0tYmF0Y2ggLS12ZXJpZnkgXCIkc2lnXCIgXCIkcFwiOyBcdFx0XHRybSBcIiRzaWdcIjsgXHRcdGRvbmU7IFx0Zmk7IFx0cm0gLXJmIFwiJEdOVVBHSE9NRVwiOyBcdFx0bWtkaXIgLXAgL3Vzci9zcmMvYmFzaDsgXHR0YXIgXHRcdC0tZXh0cmFjdCBcdFx0LS1maWxlPWJhc2gudGFyLmd6IFx0XHQtLXN0cmlwLWNvbXBvbmVudHM9MSBcdFx0LS1kaXJlY3Rvcnk9L3Vzci9zcmMvYmFzaCBcdDsgXHRybSBiYXNoLnRhci5nejsgXHRcdGlmIFsgLWQgYmFzaC1wYXRjaGVzIF07IHRoZW4gXHRcdGZvciBwIGluIGJhc2gtcGF0Y2hlcy8qOyBkbyBcdFx0XHRwYXRjaCBcdFx0XHRcdC0tZGlyZWN0b3J5PS91c3Ivc3JjL2Jhc2ggXHRcdFx0XHQtLWlucHV0PVwiJChyZWFkbGluayAtZiBcIiRwXCIpXCIgXHRcdFx0XHQtLXN0cmlwPTAgXHRcdFx0OyBcdFx0XHRybSBcIiRwXCI7IFx0XHRkb25lOyBcdFx0cm1kaXIgYmFzaC1wYXRjaGVzOyBcdGZpOyBcdFx0Y2QgL3Vzci9zcmMvYmFzaDsgXHRnbnVBcmNoPVwiJChkcGtnLWFyY2hpdGVjdHVyZSAtLXF1ZXJ5IERFQl9CVUlMRF9HTlVfVFlQRSlcIjsgXHQuL2NvbmZpZ3VyZSBcdFx0LS1idWlsZD1cIiRnbnVBcmNoXCIgXHRcdC0tZW5hYmxlLXJlYWRsaW5lIFx0XHQtLXdpdGgtY3Vyc2VzIFx0XHQtLXdpdGhvdXQtYmFzaC1tYWxsb2MgXHR8fCB7IFx0XHRjYXQgXHUwMDNlXHUwMDI2MiBjb25maWcubG9nOyBcdFx0ZmFsc2U7IFx0fTsgXHRtYWtlIC1qIFwiJChucHJvYylcIjsgXHRtYWtlIGluc3RhbGw7IFx0Y2QgLzsgXHRybSAtciAvdXNyL3NyYy9iYXNoOyBcdFx0cm0gLXIgXHRcdC91c3IvbG9jYWwvc2hhcmUvZG9jL2Jhc2gvKi5odG1sIFx0XHQvdXNyL2xvY2FsL3NoYXJlL2luZm8gXHRcdC91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIFx0XHQvdXNyL2xvY2FsL3NoYXJlL21hbiBcdDsgXHRcdHJ1bkRlcHM9XCIkKCBcdFx0c2NhbmVsZiAtLW5lZWRlZCAtLW5vYmFubmVyIC0tZm9ybWF0ICclbiNwJyAtLXJlY3Vyc2l2ZSAvdXNyL2xvY2FsIFx0XHRcdHwgdHIgJywnICdcXG4nIFx0XHRcdHwgc29ydCAtdSBcdFx0XHR8IGF3ayAnc3lzdGVtKFwiWyAtZSAvdXNyL2xvY2FsL2xpYi9cIiAkMSBcIiBdXCIpID09IDAgeyBuZXh0IH0geyBwcmludCBcInNvOlwiICQxIH0nIFx0KVwiOyBcdGFwayBhZGQgLS1uby1jYWNoZSAtLXZpcnR1YWwgLmJhc2gtcnVuZGVwcyAkcnVuRGVwczsgXHRhcGsgZGVsIC5idWlsZC1kZXBzOyBcdFx0WyBcIiQod2hpY2ggYmFzaClcIiA9ICcvdXNyL2xvY2FsL2Jpbi9iYXNoJyBdOyBcdGJhc2ggLS12ZXJzaW9uOyBcdFsgXCIkKGJhc2ggLWMgJ2VjaG8gXCIke0JBU0hfVkVSU0lPTiUlW14wLTkuXSp9XCInKVwiID0gXCIke19CQVNIX1ZFUlNJT04lJS0qfS4kX0JBU0hfTEFURVNUX1BBVENIXCIgXTsifSx7ImNyZWF0ZWQiOiIyMDE5LTA3LTEzVDAxOjE2OjA2LjE2NDEyODQxMloiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgQ09QWSBmaWxlOjY1MWIzYmViZWJhOGJlOTE2MmM1NmIzZWI1NjExOTk5MDUyMzVmM2UxYzc4MTEyMzJiNmM5ZjQ4YWMzMzM2NTEgaW4gL3Vzci9sb2NhbC9iaW4vICJ9LHsiY3JlYXRlZCI6IjIwMTktMDctMTNUMDE6MTY6MDYuMzE5Mzc1ODg0WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgRU5UUllQT0lOVCBbXCJkb2NrZXItZW50cnlwb2ludC5zaFwiXSIsImVtcHR5X2xheWVyIjp0cnVlfSx7ImNyZWF0ZWQiOiIyMDE5LTA3LTEzVDAxOjE2OjA2LjUyNzUxNTkwMloiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgIENNRCBbXCJiYXNoXCJdIiwiZW1wdHlfbGF5ZXIiOnRydWV9XSwib3MiOiJsaW51eCIsInJvb3RmcyI6eyJ0eXBlIjoibGF5ZXJzIiwiZGlmZl9pZHMiOlsic2hhMjU2OjFiZmVlYmQ2NTMyM2I4ZGRmNWJkNmE1MWNjNzA5N2I3Mjc4OGJjOTgyZTlhYjMyODBkNTNkM2M2MTNhZGZmYTciLCJzaGEyNTY6NDgzYzk4MGFjNmFiZjYzZmM0ZDcyNjJiMTdhMTk1NGQ2MjI2NmRhYzMwMjliNWJlMzg0ZDAzYjM5MjI5ODAzZSIsInNoYTI1Njo1ZjVmOTNhOTMzMDUyMTBhOTZjYzQxN2Y1NzlkNzBhNDk2YmJmMGRiOGU4MGVhMWU5NDM2NjgyYzM3OWYyNWQ5Il19fQ==",
"headers": {
"Content-Length": 5635
}
},
"307": {
"headers": {
"Location": "https://csharpsdktest.azurecr.io/v2/prod/bash/blobs/sha256:3131d2b2b3352091117a3abe745d01a3fed472b7327c3183602247937800e3a6"
}
}
}
}
}
},
"head": {
"description": "Same as GET, except only the headers are returned.",
"operationId": "Blob_Check",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/Digest"
}
],
"responses": {
"200": {
"description": "The blob identified by digest is available. The blob content will be present in the body of the response.",
"headers": {
"Content-Length": {
"description": "The length of the requested blob content.",
"format": "int64",
"type": "integer"
},
"Docker-Content-Digest": {
"description": "Digest of the targeted content for the request.",
"type": "string"
}
}
},
"307": {
"description": "The blob identified by digest is available at the provided location.",
"headers": {
"Location": {
"description": "The location where the layer should be accessible.",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Head for a Blob Chunk": {
"parameters": {
"digest": "sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39",
"name": "prod/bash",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"headers": {
"Content-Length": 5635
}
},
"307": {
"headers": {
"Location": "https://csharpsdktest.azurecr.io/v2/prod/bash/blobs/sha256:3131d2b2b3352091117a3abe745d01a3fed472b7327c3183602247937800e3a6"
}
}
}
}
}
}
},
"/v2/{name}/manifests/{reference}": {
"delete": {
"description": "Delete the manifest identified by `name` and `reference`. Note that a manifest can _only_ be deleted by `digest`.",
"operationId": "Manifests_Delete",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/ImageReference"
}
],
"responses": {
"202": {
"description": "The manifest has been deleted"
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Manifest"
],
"x-ms-examples": {
"Delete manifest": {
"parameters": {
"name": "alpine",
"reference": "3.7",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"202": {}
}
}
}
},
"get": {
"description": "Get the manifest identified by `name` and `reference` where `reference` can be a tag or digest.",
"operationId": "Manifests_Get",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/ImageReference"
},
{
"description": "Accept header string delimited by comma. For example, application/vnd.docker.distribution.manifest.v2+json",
"in": "header",
"name": "accept",
"required": false,
"type": "string"
}
],
"responses": {
"200": {
"description": "Returns the requested manifest file in a larger combined group",
"schema": {
"$ref": "#/definitions/ManifestWrapper"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Manifest"
],
"x-ms-examples": {
"Get manifest": {
"parameters": {
"accept": "application/vnd.docker.distribution.manifest.v2+json",
"name": "hello-world-dangling",
"reference": "20190628-033033z",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"body": {
"config": {
"digest": "sha256:691fbc2d44fff48357bba69ab0505b9bf12b2b250a925a84a0b8e8e7eed390b2",
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 5824
},
"layers": [
{
"digest": "sha256:a073c86ecf9e0f29180e80e9638d4c741970695851ea48247276c32c57e40282",
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 2014658
},
{
"digest": "sha256:0e28711eb56d78f1e3dfde1807eba529d1346222bcd07d1cb1e436a18a0388bd",
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 19778035
},
{
"digest": "sha256:e460dd483fddb555911f7ed188c319fd97542c60e36843dcb1c5d753f733e1fa",
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 1074044
},
{
"digest": "sha256:6aa301222093bfb8cf424ccb387f59e2c9510c3a30cca7fbcf8c954f88e6600c",
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 5827
},
{
"digest": "sha256:9c5d80083a57d565f684e0155707204d497a5ad965279f92927452f15dae17e6",
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 568
}
],
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"schemaVersion": 2
}
}
}
}
}
},
"put": {
"consumes": [
"application/vnd.docker.distribution.manifest.v2+json"
],
"description": "Put the manifest identified by `name` and `reference` where `reference` can be a tag or digest.",
"operationId": "Manifests_Create",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/ImageReference"
},
{
"$ref": "#/parameters/ManifestBody"
}
],
"responses": {
"201": {
"description": "The manifest is updated",
"headers": {
"Content-Length": {
"description": "The length of the requested blob content.",
"format": "int64",
"type": "integer"
},
"Docker-Content-Digest": {
"description": "Identifies the docker upload uuid for the current request.",
"type": "string"
},
"Location": {
"description": "The canonical location url of the uploaded manifest.",
"type": "string"
}
},
"schema": {}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Manifest"
],
"x-ms-examples": {
"Put manifest": {
"parameters": {
"name": "hello-world",
"payload": "{\"schemaVersion\":2,\"mediaType\":\"application/vnd.docker.distribution.manifest.v2+json\",\"config\":{\"mediaType\":\"application/vnd.docker.container.image.v1+json\",\"size\":1512,\"digest\":\"sha256:6d1ef012b5674ad8a127ecfa9b5e6f5178d171b90ee462846974177fd9bdd39f\"},\"layers\":[{\"mediaType\":\"application/vnd.docker.image.rootfs.diff.tar.gzip\",\"size\":2107098,\"digest\":\"sha256:5d20c808ce198565ff70b3ed23a991dd49afac45dece63474b27ce6ed036adc6\"}]}",
"reference": "a20190628-081044z",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"201": {
"body": {},
"headers": {
"Content-Length": 0,
"Docker-Content-Digest": "sha256:15685c48490175b7dde62e6bfcfb54d9420c6495ea6404776e2facca3da93cd8",
"Location": "/v2/hello-world/manifests/sha256:15685c48490175b7dde62e6bfcfb54d9420c6495ea6404776e2facca3da93cd8"
}
}
}
}
},
"x-ms-long-running-operation": false
}
},
"/{nextBlobUuidLink}": {
"delete": {
"description": "Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout.",
"operationId": "Blob_CancelUpload",
"parameters": [
{
"$ref": "#/parameters/NextLink"
}
],
"responses": {
"204": {
"description": "The upload has been successfully deleted."
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"End a blob upload": {
"parameters": {
"nextBlobUuidLink": "v2/blobland/blobs/uploads/2b28c60d-d296-44b7-b2b4-1f01c63195c6?_nouploadcache=false&_state=VYABvUSCNW2yY5e5VabLHppXqwU0K7cvT0YUdq57KBt7Ik5hbWUiOiJibG9ibGFuZCIsIlVVSUQiOiIyYjI4YzYwZC1kMjk2LTQ0YjctYjJiNC0xZjAxYzYzMTk1YzYiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDgtMjdUMjM6NTI6NDcuMDUzNjU2Mjg1WiJ9",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"204": {}
}
}
}
},
"get": {
"description": "Retrieve status of upload identified by uuid. The primary purpose of this endpoint is to resolve the current status of a resumable upload.",
"operationId": "Blob_GetStatus",
"parameters": [
{
"$ref": "#/parameters/NextLink"
}
],
"responses": {
"204": {
"description": "The upload is known and in progress. The last received offset is available in the Range header.",
"headers": {
"Docker-Upload-UUID": {
"description": "Identifies the docker upload uuid for the current request.",
"type": "string"
},
"Range": {
"description": "Range indicating the current progress of the upload.",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Get blob status": {
"parameters": {
"nextBlobUuidLink": "v2/blobland/blobs/uploads/2b28c60d-d296-44b7-b2b4-1f01c63195c6?_nouploadcache=false&_state=VYABvUSCNW2yY5e5VabLHppXqwU0K7cvT0YUdq57KBt7Ik5hbWUiOiJibG9ibGFuZCIsIlVVSUQiOiIyYjI4YzYwZC1kMjk2LTQ0YjctYjJiNC0xZjAxYzYzMTk1YzYiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDgtMjdUMjM6NTI6NDcuMDUzNjU2Mjg1WiJ9",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"204": {
"headers": {
"Docker-Upload-Uuid": "2b28c60d-d296-44b7-b2b4-1f01c63195c6",
"Range": "0-0"
}
}
}
}
}
},
"patch": {
"consumes": [
"application/octet-stream"
],
"description": "Upload a stream of data without completing the upload.",
"operationId": "Blob_Upload",
"parameters": [
{
"$ref": "#/parameters/RawData"
},
{
"$ref": "#/parameters/NextLink"
}
],
"responses": {
"202": {
"description": "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.",
"headers": {
"Docker-Upload-UUID": {
"description": "Identifies the docker upload uuid for the current request.",
"type": "string"
},
"Location": {
"description": "Provided location for blob",
"type": "string"
},
"Range": {
"description": "Range indicating the current progress of the upload.",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"security": [
{
"registry_auth": [],
"registry_oauth2": []
}
],
"tags": [
"Layer"
],
"x-ms-examples": {
"Upload Blob": {
"parameters": {
"nextBlobUuidLink": "v2/blobland/blobs/uploads/2b28c60d-d296-44b7-b2b4-1f01c63195c6?_nouploadcache=false&_state=VYABvUSCNW2yY5e5VabLHppXqwU0K7cvT0YUdq57KBt7Ik5hbWUiOiJibG9ibGFuZCIsIlVVSUQiOiIyYjI4YzYwZC1kMjk2LTQ0YjctYjJiNC0xZjAxYzYzMTk1YzYiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDgtMjdUMjM6NTI6NDcuMDUzNjU2Mjg1WiJ9",
"url": "acrapi.azurecr-test.io",
"value": "U29tZXRoaW5nRWxzZQ=="
},
"responses": {
"202": {
"headers": {
"Docker-Upload-Uuid": "f6d3451c-3352-43ff-b67c-fd0cfc793066",
"Location": "/v2/blobland/blobs/uploads/f6d3451c-3352-43ff-b67c-fd0cfc793066?_nouploadcache=false&_state=9G2t2KQOw-ANeo5TrnwVb5OeAUIe0NaEJ2jxwLT6Y1J7Ik5hbWUiOiJibG9ibGFuZCIsIlVVSUQiOiJmNmQzNDUxYy0zMzUyLTQzZmYtYjY3Yy1mZDBjZmM3OTMwNjYiLCJPZmZzZXQiOjEzLCJTdGFydGVkQXQiOiIyMDE5LTA4LTI3VDIzOjUyOjU0WiJ9",
"Range": "0-12"
}
}
}
}
}
},
"put": {
"consumes": [
"application/octet-stream"
],
"description": "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.",
"operationId": "Blob_EndUpload",
"parameters": [
{
"$ref": "#/parameters/BlobQueryDigest"
},
{
"$ref": "#/parameters/RawDataOptional"
},
{
"$ref": "#/parameters/NextLink"
}
],
"responses": {
"201": {
"description": "The upload has been completed and accepted by the registry.",
"headers": {
"Docker-Content-Digest": {
"description": "Digest of the targeted content for the request.",
"type": "string"
},
"Location": {
"description": "Provided location for blob",
"type": "string"
},
"Range": {
"description": "Range indicating the current progress of the upload.",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"End a blob upload": {
"parameters": {
"digest": "sha256:a05a7abc31b0caadd5058069eaa623cdd0538512dbddacc7ca5bad73c3957c5e",
"nextBlobUuidLink": "v2/blobland/blobs/uploads/2b28c60d-d296-44b7-b2b4-1f01c63195c6?_nouploadcache=false&_state=VYABvUSCNW2yY5e5VabLHppXqwU0K7cvT0YUdq57KBt7Ik5hbWUiOiJibG9ibGFuZCIsIlVVSUQiOiIyYjI4YzYwZC1kMjk2LTQ0YjctYjJiNC0xZjAxYzYzMTk1YzYiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDgtMjdUMjM6NTI6NDcuMDUzNjU2Mjg1WiJ9",
"url": "acrapi.azurecr-test.io",
"value": "usuallyEmpty"
},
"responses": {
"201": {
"headers": {
"Docker-Content-Digest": "sha256:a05a7abc31b0caadd5058069eaa623cdd0538512dbddacc7ca5bad73c3957c5e",
"Location": "/v2/blobland/blobs/sha256:a05a7abc31b0caadd5058069eaa623cdd0538512dbddacc7ca5bad73c3957c5e"
}
}
}
}
}
}
}
},
"definitions": {
"AccessToken": {
"properties": {
"access_token": {
"description": "The access token for performing authenticated requests",
"type": "string"
}
},
"type": "object"
},
"AcrErrorInfo": {
"description": "Error information",
"properties": {
"code": {
"description": "Error code",
"type": "string"
},
"detail": {
"description": "Error details",
"type": "object"
},
"message": {
"description": "Error message",
"type": "string"
}
}
},
"AcrErrors": {
"description": "Acr error response describing why the operation failed",
"properties": {
"errors": {
"description": "Array of detailed error",
"items": {
"$ref": "#/definitions/AcrErrorInfo"
},
"type": "array"
}
}
},
"AcrManifests": {
"description": "Manifest attributes",
"example": {
"imageName": "imageName",
"manifests": [
{
"architecture": "architecture",
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"quarantineDetails": "quarantineDetails",
"quarantineState": "quarantineState",
"readEnabled": true,
"writeEnabled": true
},
"configMediaType": "configMediaType",
"createdTime": "createdTime",
"digest": "digest",
"imageSize": 2401606,
"lastUpdateTime": "lastUpdateTime",
"mediaType": "mediaType",
"os": "os",
"tags": [
"tags",
"tags"
]
},
{
"architecture": "architecture",
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"quarantineDetails": "quarantineDetails",
"quarantineState": "quarantineState",
"readEnabled": true,
"writeEnabled": true
},
"configMediaType": "configMediaType",
"createdTime": "createdTime",
"digest": "digest",
"imageSize": 2401606,
"lastUpdateTime": "lastUpdateTime",
"mediaType": "mediaType",
"os": "os",
"tags": [
"tags",
"tags"
]
}
],
"registry": "registry"
},
"properties": {
"imageName": {
"description": "Image name",
"type": "string"
},
"manifests": {
"description": "List of manifests",
"items": {
"$ref": "#/definitions/ManifestAttributesBase",
"description": "Manifest details"
},
"type": "array",
"x-ms-client-name": "ManifestsAttributes"
},
"registry": {
"description": "Registry name",
"type": "string"
}
}
},
"Annotations": {
"additionalProperties": {
"type": "object"
},
"description": "Additional information provided through arbitrary metadata.",
"properties": {
"org.opencontainers.image.authors": {
"description": "Contact details of the people or organization responsible for the image.",
"type": "string",
"x-ms-client-name": "Authors"
},
"org.opencontainers.image.created": {
"description": "Date and time on which the image was built (string, date-time as defined by https://tools.ietf.org/html/rfc3339#section-5.6)",
"format": "date-time",
"type": "string",
"x-ms-client-name": "Created"
},
"org.opencontainers.image.description": {
"description": "Human-readable description of the software packaged in the image",
"type": "string",
"x-ms-client-name": "Description"
},
"org.opencontainers.image.documentation": {
"description": "URL to get documentation on the image.",
"type": "string",
"x-ms-client-name": "Documentation"
},
"org.opencontainers.image.licenses": {
"description": "License(s) under which contained software is distributed as an SPDX License Expression.",
"type": "string",
"x-ms-client-name": "Licenses"
},
"org.opencontainers.image.ref.name": {
"description": "Name of the reference for a target.",
"type": "string",
"x-ms-client-name": "Name"
},
"org.opencontainers.image.revision": {
"description": "Source control revision identifier for the packaged software.",
"type": "string",
"x-ms-client-name": "Revision"
},
"org.opencontainers.image.source": {
"description": "URL to get source code for building the image.",
"type": "string",
"x-ms-client-name": "Source"
},
"org.opencontainers.image.title": {
"description": "Human-readable title of the image",
"type": "string",
"x-ms-client-name": "Title"
},
"org.opencontainers.image.url": {
"description": "URL to find more information on the image.",
"type": "string",
"x-ms-client-name": "Url"
},
"org.opencontainers.image.vendor": {
"description": "Name of the distributing entity, organization or individual.",
"type": "string",
"x-ms-client-name": "Vendor"
},
"org.opencontainers.image.version": {
"description": "Version of the packaged software. The version MAY match a label or tag in the source code repository, may also be Semantic versioning-compatible",
"type": "string",
"x-ms-client-name": "Version"
}
},
"type": "object",
"x-nullable": true
},
"ChangeableAttributes": {
"example": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"properties": {
"deleteEnabled": {
"description": "Delete enabled",
"type": "boolean"
},
"listEnabled": {
"description": "List enabled",
"type": "boolean"
},
"readEnabled": {
"description": "Read enabled",
"type": "boolean"
},
"writeEnabled": {
"description": "Write enabled",
"type": "boolean"
}
}
},
"DeletedRepository": {
"description": "Deleted repository",
"properties": {
"manifestsDeleted": {
"description": "SHA of the deleted image",
"items": {
"type": "string"
},
"type": "array"
},
"tagsDeleted": {
"description": "Tag of the deleted image",
"items": {
"type": "string"
},
"type": "array"
}
}
},
"Descriptor": {
"description": "Docker V2 image layer descriptor including config and layers",
"example": {
"digest": "sha256:5d20c808ce198565ff70b3ed23a991dd49afac45dece63474b27ce6ed036adc6",
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 2107098
},
"properties": {
"annotations": {
"$ref": "#/definitions/Annotations"
},
"digest": {
"description": "Layer digest",
"type": "string"
},
"mediaType": {
"description": "Layer media type",
"type": "string"
},
"size": {
"description": "Layer size",
"format": "int64",
"type": "integer"
},
"urls": {
"description": "Specifies a list of URIs from which this object may be downloaded.",
"items": {
"description": "Must conform to RFC 3986. Entries should use the http and https schemes, as defined in RFC 7230.",
"type": "string"
},
"type": "array"
}
}
},
"FsLayer": {
"description": "Image layer information",
"example": {
"blobSum": "sha256:1f7d468f830cb0ed4beb8edc9438f18096e8c682e56a35242f60e6c61b718b30"
},
"properties": {
"blobSum": {
"description": "SHA of an image layer",
"type": "string"
}
}
},
"History": {
"description": "A list of unstructured historical data for v1 compatibility",
"example": {
"v1Compatibility": "v1 compatibility info"
},
"properties": {
"v1Compatibility": {
"description": "The raw v1 compatibility information",
"type": "string"
}
}
},
"ImageSignature": {
"description": "Signature of a signed manifest",
"example": {
"header": {
"alg": "ES256",
"jwk": {
"crv": "P-256",
"kid": "WGXM:EYWQ:DA53:LQUP:BCWG:5RDG:S3ZM:ETH7:VMQS:WWKZ:EWDG:V74Q",
"kty": "EC",
"x": "OxZ9k5BVjPZ7jb3BmBD4X0d8MVPJqfF4NeSe8reoqnY",
"y": "EaCqTe4-vYwhk7qU6Bs2-AeLGOVtCe_-IY2MdE0Vfyc"
}
},
"protected": "eyJmb3JtYXRMZW5ndGgiOjI5ODYsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAxOC0wOS0yMFQyMzo0MTo1MloifQ",
"signature": "p73LfotMGD8nNXz2g9YX2XtSllb4GI5-b3vjqP5N0nkv8QXg-r5z_omGiVbOZE2BYG1X_4TIN23l1KSEqsXxOg"
},
"properties": {
"header": {
"$ref": "#/definitions/JWK",
"description": "A JSON web signature"
},
"protected": {
"description": "The signed protected header",
"type": "string"
},
"signature": {
"description": "A signature for the image manifest, signed by a libtrust private key",
"type": "string"
}
}
},
"JWK": {
"description": "A JSON web signature",
"properties": {
"alg": {
"description": "The algorithm used to sign or encrypt the JWT",
"type": "string"
},
"jwk": {
"$ref": "#/definitions/JWKHeader"
}
}
},
"JWKHeader": {
"description": "JSON web key parameter",
"properties": {
"crv": {
"description": "crv value",
"type": "string"
},
"kid": {
"description": "kid value",
"type": "string"
},
"kty": {
"description": "kty value",
"type": "string"
},
"x": {
"description": "x value",
"type": "string"
},
"y": {
"description": "y value",
"type": "string"
}
}
},
"Manifest": {
"description": "Returns the requested manifest file",
"properties": {
"schemaVersion": {
"description": "Schema version",
"type": "integer"
}
}
},
"ManifestAttributes": {
"description": "Manifest attributes details",
"example": {
"imageName": "nanoserver",
"manifest": {
"architecture": "amd64",
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"configMediaType": "application/vnd.docker.container.image.v1+json",
"createdTime": "2018-09-06T06:17:20.9983915Z",
"digest": "sha256:110d2b6c84592561338aa040b1b14b7ab81c2f9edbd564c2285dd7d70d777086",
"imageSize": 2401606,
"lastUpdateTime": "2018-09-06T06:17:20.9983915Z",
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"os": "windows",
"tags": [
"4.7.2-20180905-nanoserver-1803"
]
},
"registry": "acrapi.azurecr-test.io"
},
"properties": {
"imageName": {
"description": "Image name",
"type": "string"
},
"manifest": {
"$ref": "#/definitions/ManifestAttributesBase",
"description": "Manifest attributes",
"x-ms-client-name": "attributes"
},
"registry": {
"description": "Registry name",
"type": "string"
}
}
},
"ManifestAttributesBase": {
"description": "Manifest details",
"example": {
"architecture": "architecture",
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"configMediaType": "configMediaType",
"createdTime": "createdTime",
"digest": "digest",
"imageSize": 2401606,
"lastUpdateTime": "lastUpdateTime",
"mediaType": "mediaType",
"os": "os",
"tags": [
"tags",
"tags"
]
},
"properties": {
"architecture": {
"description": "CPU architecture",
"type": "string"
},
"changeableAttributes": {
"$ref": "#/definitions/ChangeableAttributes",
"description": "Changeable attributes"
},
"configMediaType": {
"description": "Config blob media type",
"type": "string"
},
"createdTime": {
"description": "Created time",
"type": "string"
},
"digest": {
"description": "Manifest",
"type": "string"
},
"imageSize": {
"description": "Image size",
"format": "int64",
"type": "integer"
},
"lastUpdateTime": {
"description": "Last update time",
"type": "string"
},
"mediaType": {
"description": "Media type",
"type": "string"
},
"os": {
"description": "Operating system",
"type": "string"
},
"tags": {
"description": "List of tags",
"items": {
"description": "Tag name",
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"ManifestAttributes_manifest": {
"description": "List of manifest attributes",
"example": {
"quarantineTag": "quarantineTag",
"references": [
{
"architecture": "architecture",
"digest": "digest",
"os": "os"
},
{
"architecture": "architecture",
"digest": "digest",
"os": "os"
}
]
},
"properties": {
"quarantineTag": {
"description": "Quarantine tag name",
"type": "string"
},
"references": {
"description": "List of manifest attributes details",
"items": {
"$ref": "#/definitions/ManifestAttributes_manifest_references",
"description": "Manifest attributes details"
},
"type": "array"
}
}
},
"ManifestAttributes_manifest_references": {
"description": "Manifest attributes details",
"example": {
"architecture": "architecture",
"digest": "digest",
"os": "os"
},
"properties": {
"architecture": {
"description": "CPU architecture",
"type": "string"
},
"digest": {
"description": "Manifest digest",
"type": "string"
},
"os": {
"description": "Operating system",
"type": "string"
}
}
},
"ManifestChangeableAttributes": {
"description": "Changeable attributes",
"example": {
"deleteEnabled": true,
"listEnabled": true,
"quarantineDetails": "quarantineDetails",
"quarantineState": "quarantineState",
"readEnabled": true,
"writeEnabled": true
},
"properties": {
"deleteEnabled": {
"description": "Delete enabled",
"type": "boolean"
},
"listEnabled": {
"description": "List enabled",
"type": "boolean"
},
"quarantineDetails": {
"description": "Quarantine details",
"type": "string"
},
"quarantineState": {
"description": "Quarantine state",
"type": "string"
},
"readEnabled": {
"description": "Read enabled",
"type": "boolean"
},
"writeEnabled": {
"description": "Write enabled",
"type": "boolean"
}
}
},
"ManifestList": {
"allOf": [
{
"$ref": "#/definitions/Manifest"
}
],
"description": "Returns the requested Docker multi-arch-manifest file",
"properties": {
"manifests": {
"description": "List of V2 image layer information",
"items": {
"$ref": "#/definitions/ManifestListAttributes"
},
"type": "array"
},
"mediaType": {
"description": "Media type for this Manifest",
"type": "string"
}
},
"x-ms-discriminator-value": "application/vnd.docker.distribution.manifest.list.v2+json"
},
"ManifestListAttributes": {
"properties": {
"digest": {
"description": "The digest of the content, as defined by the Registry V2 HTTP API Specification",
"type": "string"
},
"mediaType": {
"description": "The MIME type of the referenced object. This will generally be application/vnd.docker.image.manifest.v2+json, but it could also be application/vnd.docker.image.manifest.v1+json",
"type": "string"
},
"platform": {
"$ref": "#/definitions/Platform"
},
"size": {
"description": "The size in bytes of the object",
"format": "int64",
"type": "integer"
}
}
},
"ManifestWrapper": {
"allOf": [
{
"$ref": "#/definitions/Manifest"
}
],
"description": "Returns the requested manifest file",
"properties": {
"annotations": {
"$ref": "#/definitions/Annotations",
"description": "(OCI, OCIIndex) Additional metadata"
},
"architecture": {
"description": "(V1) CPU architecture",
"type": "string"
},
"config": {
"$ref": "#/definitions/Descriptor",
"description": "(V2, OCI) Image config descriptor"
},
"fsLayers": {
"description": "(V1) List of layer information",
"items": {
"$ref": "#/definitions/FsLayer"
},
"type": "array"
},
"history": {
"description": "(V1) Image history",
"items": {
"$ref": "#/definitions/History"
},
"type": "array"
},
"layers": {
"description": "(V2, OCI) List of V2 image layer information",
"items": {
"$ref": "#/definitions/Descriptor"
},
"type": "array"
},
"manifests": {
"description": "(ManifestList, OCIIndex) List of V2 image layer information",
"items": {
"$ref": "#/definitions/ManifestListAttributes"
},
"type": "array"
},
"mediaType": {
"description": "Media type for this Manifest",
"type": "string"
},
"name": {
"description": "(V1) Image name",
"type": "string"
},
"signatures": {
"description": "(V1) Image signature",
"items": {
"$ref": "#/definitions/ImageSignature"
},
"type": "array"
},
"tag": {
"description": "(V1) Image tag",
"type": "string"
}
}
},
"OCIIndex": {
"allOf": [
{
"$ref": "#/definitions/Manifest"
}
],
"description": "Returns the requested OCI index file",
"properties": {
"annotations": {
"$ref": "#/definitions/Annotations"
},
"manifests": {
"description": "List of OCI image layer information",
"items": {
"$ref": "#/definitions/ManifestListAttributes"
},
"type": "array"
}
},
"x-ms-discriminator-value": "application/vnd.oci.image.index.v1+json"
},
"OCIManifest": {
"allOf": [
{
"$ref": "#/definitions/Manifest"
}
],
"description": "Returns the requested OCI Manifest file",
"properties": {
"annotations": {
"$ref": "#/definitions/Annotations"
},
"config": {
"$ref": "#/definitions/Descriptor",
"description": "V2 image config descriptor"
},
"layers": {
"description": "List of V2 image layer information",
"items": {
"$ref": "#/definitions/Descriptor"
},
"type": "array"
}
},
"x-ms-discriminator-value": "application/vnd.oci.image.manifest.v1+json"
},
"Platform": {
"description": "The platform object describes the platform which the image in the manifest runs on. A full list of valid operating system and architecture values are listed in the Go language documentation for $GOOS and $GOARCH",
"properties": {
"architecture": {
"description": "Specifies the CPU architecture, for example amd64 or ppc64le.",
"type": "string"
},
"features": {
"description": "The optional features field specifies an array of strings, each listing a required CPU feature (for example sse4 or aes",
"items": {
"type": "string"
},
"type": "array"
},
"os": {
"description": "The os field specifies the operating system, for example linux or windows.",
"type": "string"
},
"os.features": {
"description": "The optional os.features field specifies an array of strings, each listing a required OS feature (for example on Windows win32k",
"items": {
"type": "string"
},
"type": "array"
},
"os.version": {
"description": "The optional os.version field specifies the operating system version, for example 10.0.10586.",
"type": "string"
},
"variant": {
"description": "The optional variant field specifies a variant of the CPU, for example armv6l to specify a particular CPU variant of the ARM CPU.",
"type": "string"
}
}
},
"RefreshToken": {
"properties": {
"refresh_token": {
"description": "The refresh token to be used for generating access tokens",
"type": "string"
}
},
"type": "object"
},
"Repositories": {
"description": "List of repositories",
"example": {
"repositories": [
"production/alpine",
"testing/alpine"
]
},
"properties": {
"repositories": {
"description": "Repository names",
"items": {
"type": "string"
},
"type": "array",
"x-ms-client-name": "Names"
}
}
},
"RepositoryAttributes": {
"description": "Repository attributes",
"example": {
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2018-09-07T16:30:46.6583219Z",
"imageName": "imageName",
"lastUpdateTime": "2018-09-07T16:30:46.6583219Z",
"manifestCount": 2,
"registry": "registryname.azurecr.io",
"tagCount": 6
},
"properties": {
"changeableAttributes": {
"$ref": "#/definitions/ChangeableAttributes",
"description": "Changeable attributes"
},
"createdTime": {
"description": "Image created time",
"type": "string"
},
"imageName": {
"description": "Image name",
"type": "string"
},
"lastUpdateTime": {
"description": "Image last update time",
"type": "string"
},
"manifestCount": {
"description": "Number of the manifests",
"type": "integer"
},
"registry": {
"description": "Registry name",
"type": "string"
},
"tagCount": {
"description": "Number of the tags",
"type": "integer"
}
},
"type": "object"
},
"RepositoryTags": {
"description": "Result of the request to list tags of the image",
"example": {
"name": "name",
"tags": [
"tags",
"tags"
]
},
"properties": {
"name": {
"description": "Name of the image",
"type": "string"
},
"tags": {
"description": "List of tags",
"items": {
"description": "Tag name",
"type": "string"
},
"type": "array"
}
}
},
"TagAttributes": {
"description": "Tag attributes",
"example": {
"imageName": "imageName",
"registry": "registry",
"tag": {
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "createdTime",
"digest": "digest",
"lastUpdateTime": "lastUpdateTime",
"name": "name",
"signed": true
}
},
"properties": {
"imageName": {
"description": "Image name",
"type": "string"
},
"registry": {
"description": "Registry name",
"type": "string"
},
"tag": {
"$ref": "#/definitions/TagAttributesBase",
"description": "List of tag attribute details",
"x-ms-client-name": "attributes"
}
}
},
"TagAttributesBase": {
"description": "Tag attribute details",
"example": {
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2018-08-10T17:28:44.1082945Z",
"digest": "sha256:0873c923e00e0fd2ba78041bfb64a105e1ecb7678916d1f7776311e45bf5634b",
"lastUpdateTime": "2018-08-10T17:28:44.1082945Z",
"name": "tagname",
"signed": true
},
"properties": {
"changeableAttributes": {
"$ref": "#/definitions/ChangeableAttributes",
"description": "Changeable attributes"
},
"createdTime": {
"description": "Tag created time",
"type": "string"
},
"digest": {
"description": "Tag digest",
"type": "string"
},
"lastUpdateTime": {
"description": "Tag last update time",
"type": "string"
},
"name": {
"description": "Tag name",
"type": "string"
},
"signed": {
"description": "Is signed",
"type": "boolean"
}
}
},
"TagAttributes_tag": {
"description": "Tag",
"example": {
"signatureRecord": "signatureRecord"
},
"properties": {
"signatureRecord": {
"description": "SignatureRecord value",
"type": "string"
}
}
},
"TagList": {
"description": "List of tag details",
"example": {
"imageName": "imageName",
"registry": "registry",
"tags": [
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "createdTime",
"digest": "digest",
"lastUpdateTime": "lastUpdateTime",
"name": "name",
"signed": true
},
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "createdTime",
"digest": "digest",
"lastUpdateTime": "lastUpdateTime",
"name": "name",
"signed": true
}
]
},
"properties": {
"imageName": {
"description": "Image name",
"type": "string"
},
"registry": {
"description": "Registry name",
"type": "string"
},
"tags": {
"description": "List of tag attribute details",
"items": {
"$ref": "#/definitions/TagAttributesBase"
},
"type": "array"
}
}
},
"V1Manifest": {
"allOf": [
{
"$ref": "#/definitions/Manifest"
}
],
"description": "Returns the requested V1 manifest file",
"properties": {
"architecture": {
"description": "CPU architecture",
"type": "string"
},
"fsLayers": {
"description": "List of layer information",
"items": {
"$ref": "#/definitions/FsLayer"
},
"type": "array"
},
"history": {
"description": "Image history",
"items": {
"$ref": "#/definitions/History"
},
"type": "array"
},
"name": {
"description": "Image name",
"type": "string"
},
"signatures": {
"description": "Image signature",
"items": {
"$ref": "#/definitions/ImageSignature"
},
"type": "array"
},
"tag": {
"description": "Image tag",
"type": "string"
}
},
"x-ms-discriminator-value": "application/vnd.oci.image.manifest.v1+json"
},
"V2Manifest": {
"allOf": [
{
"$ref": "#/definitions/Manifest"
}
],
"description": "Returns the requested Docker V2 Manifest file",
"example": {
"config": {
"digest": "sha256:6d1ef012b5674ad8a127ecfa9b5e6f5178d171b90ee462846974177fd9bdd39f",
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1512
},
"layers": [
{
"digest": "sha256:5d20c808ce198565ff70b3ed23a991dd49afac45dece63474b27ce6ed036adc6",
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 2107098
}
],
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"schemaVersion": 2
},
"properties": {
"config": {
"$ref": "#/definitions/Descriptor",
"description": "V2 image config descriptor"
},
"layers": {
"description": "List of V2 image layer information",
"items": {
"$ref": "#/definitions/Descriptor"
},
"type": "array"
},
"mediaType": {
"description": "Media type for this Manifest",
"type": "string"
}
},
"x-ms-discriminator-value": "application/vnd.docker.distribution.manifest.v2+json"
}
},
"x-ms-parameterized-host": {
"hostTemplate": "{url}",
"parameters": [
{
"$ref": "#/parameters/Url"
}
],
"positionInOperation": "first",
"useSchemePrefix": false
},
"x-ms-paths": {
"/v2/{name}/blobs/uploads/?mode=resumable": {
"post": {
"description": "Initiate a resumable blob upload with an empty request body.",
"operationId": "Blob_StartUpload",
"parameters": [
{
"$ref": "#/parameters/ImageName"
}
],
"responses": {
"202": {
"description": "The upload has been created. The Location header must be used to complete the upload. The response should be identical to a GET request on the contents of the returned Location header.",
"headers": {
"Docker-Upload-UUID": {
"description": "Identifies the docker upload uuid for the current request.",
"type": "string"
},
"Location": {
"description": "Provided location for blob",
"type": "string"
},
"Range": {
"description": "Range indicating the current progress of the upload.",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Start a blob upload": {
"parameters": {
"name": "newimg",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"202": {
"headers": {
"Docker-Upload-Uuid": "f6d3451c-3352-43ff-b67c-fd0cfc793066",
"Location": "/v2/blobland/blobs/uploads/f6d3451c-3352-43ff-b67c-fd0cfc793066?_nouploadcache=false&_state=iWTaVpaWiz23JTt8ZsYFPEU5JwLOFgdumWOmqGxIYGt7Ik5hbWUiOiJibG9ibGFuZCIsIlVVSUQiOiJmNmQzNDUxYy0zMzUyLTQzZmYtYjY3Yy1mZDBjZmM3OTMwNjYiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDgtMjdUMjM6NTI6NTQuNTM1MDQ5ODY1WiJ9",
"Range": "0-0"
}
}
}
}
}
}
},
"/v2/{name}/blobs/{digest}?mode=chunk": {
"get": {
"description": "Retrieve the blob from the registry identified by `digest`. This endpoint may also support RFC7233 compliant range requests. Support can be detected by issuing a HEAD request. If the header `Accept-Range: bytes` is returned, range requests can be used to fetch partial content.",
"operationId": "Blob_GetChunk",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/Digest"
},
{
"$ref": "#/parameters/Range"
}
],
"produces": [
"application/octet-stream"
],
"responses": {
"206": {
"description": "The blob identified by digest is available. The specified chunk of blob content will be present in the body of the request.",
"headers": {
"Content-Length": {
"description": "The length of the requested blob content.",
"format": "int64",
"type": "integer"
},
"Content-Range": {
"description": "Content range of blob chunk.",
"type": "string"
}
},
"schema": {
"description": "blob binary data",
"format": "file",
"type": "file"
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Get a blob Chunk": {
"parameters": {
"Range": "bytes=0-299",
"digest": "sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39",
"name": "prod/bash",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"206": {
"body": "eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLCJfQkFTSF9HUEdfS0VZPTdDMDEzNUZCMDg4QUFGNkM2NkM2NTBCOUJC",
"headers": {
"Content-Length": "300",
"Content-Range": "bytes 0-299/5635"
}
}
}
}
}
},
"head": {
"description": "Same as GET, except only the headers are returned.",
"operationId": "Blob_CheckChunk",
"parameters": [
{
"$ref": "#/parameters/ImageName"
},
{
"$ref": "#/parameters/Digest"
},
{
"$ref": "#/parameters/Range"
}
],
"responses": {
"200": {
"description": "The blob identified by digest is available. The specified chunk of blob content will be present in the body of the request.",
"headers": {
"Content-Length": {
"description": "The length of the requested blob content.",
"format": "int64",
"type": "integer"
},
"Content-Range": {
"description": "Content range of blob chunk.",
"type": "string"
}
}
},
"default": {
"description": "ACR error response describing why the operation failed.",
"schema": {
"$ref": "#/definitions/AcrErrors"
}
}
},
"tags": [
"Layer"
],
"x-ms-examples": {
"Get headers without blob Chunk": {
"parameters": {
"Range": "bytes=0-299",
"digest": "sha256:16463e0c481e161aabb735437d30b3c9c7391c2747cc564bb927e843b73dcb39",
"name": "prod/bash",
"url": "acrapi.azurecr-test.io"
},
"responses": {
"200": {
"headers": {
"Content-Length": "300",
"Content-Range": "bytes 0-299/5635"
}
}
}
}
}
}
}
}
}