Azure Container Registry icon

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"
                }
              }
            }
          }
        }
      }
    }
  }
}