{ "swagger": "2.0", "info": { "description": "APIs for Open Container Initiative Distribution Specification", "title": "Open Container Initiative Distribution Specification", "contact": {}, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "v1.1.0-dev" }, "paths": { "/oras/artifacts/v1/{name}/manifests/{digest}/referrers": { "get": { "description": "Get references for an image given a digest and artifact type", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Get references for an image", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "image digest", "name": "digest", "in": "path", "required": true }, { "type": "string", "description": "artifact type", "name": "artifactType", "in": "query", "required": true } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } } }, "/v2/": { "get": { "description": "Check if this API version is supported", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Check API support", "responses": { "200": { "description": "ok\".", "schema": { "type": "string" } } } } }, "/v2/_catalog": { "get": { "description": "List all image repositories", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "List image repositories", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.RepositoryList" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } } }, "/v2/_oci/ext/discover": { "get": { "description": "List all extensions present on registry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "List Registry level extensions", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ExtensionList" } } } } }, "/v2/_zot/ext/cosign": { "post": { "description": "Upload cosign public keys for verifying signatures", "consumes": [ "application/octet-stream" ], "produces": [ "application/json" ], "summary": "Upload cosign public keys for verifying signatures", "parameters": [ { "description": "Public key content", "name": "requestBody", "in": "body", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" } }, "400": { "description": "bad request\".", "schema": { "type": "string" } }, "500": { "description": "internal server error\".", "schema": { "type": "string" } } } } }, "/v2/_zot/ext/mgmt": { "get": { "description": "Get current server configuration", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Get current server configuration", "parameters": [ { "enum": [ "config" ], "type": "string", "description": "specify resource", "name": "resource", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/extensions.StrippedConfig" } }, "500": { "description": "internal server error\".", "schema": { "type": "string" } } } } }, "/v2/_zot/ext/notation": { "post": { "description": "Upload notation certificates for verifying signatures", "consumes": [ "application/octet-stream" ], "produces": [ "application/json" ], "summary": "Upload notation certificates for verifying signatures", "parameters": [ { "type": "string", "description": "truststore type", "name": "truststoreType", "in": "query" }, { "description": "Certificate content", "name": "requestBody", "in": "body", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" } }, "400": { "description": "bad request\".", "schema": { "type": "string" } }, "500": { "description": "internal server error\".", "schema": { "type": "string" } } } } }, "/v2/_zot/ext/userprefs": { "put": { "description": "Add bookmarks/stars info", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Add bookmarks/stars info", "parameters": [ { "enum": [ "toggleBookmark", "toggleStar" ], "type": "string", "description": "specify action", "name": "action", "in": "query", "required": true }, { "type": "string", "description": "repository name", "name": "repo", "in": "query", "required": true } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" } }, "400": { "description": "bad request\".", "schema": { "type": "string" } }, "403": { "description": "forbidden", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } } }, "/v2/{name}/blobs/uploads": { "post": { "description": "Create a new image blob/layer upload", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Create image blob/layer upload", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true } ], "responses": { "202": { "description": "accepted", "schema": { "type": "string" }, "headers": { "Location": { "type": "string", "description": "/v2/{name}/blobs/uploads/{session_id}" }, "Range": { "type": "string", "description": "0-0" } } }, "401": { "description": "unauthorized", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } } }, "/v2/{name}/blobs/uploads/{session_id}": { "get": { "description": "Get an image's blob/layer upload given a session_id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Get image blob/layer upload", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "upload session_id", "name": "session_id", "in": "path", "required": true } ], "responses": { "204": { "description": "no content", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } }, "put": { "description": "Update and finish an image's blob/layer upload given a digest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Update image blob/layer upload", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "upload session_id", "name": "session_id", "in": "path", "required": true }, { "type": "string", "description": "blob/layer digest", "name": "digest", "in": "query", "required": true } ], "responses": { "201": { "description": "created", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } }, "delete": { "description": "Delete an image's blob/layer given a digest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Delete image blob/layer", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "upload session_id", "name": "session_id", "in": "path", "required": true } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } }, "patch": { "description": "Resume an image's blob/layer upload given an session_id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Resume image blob/layer upload", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "upload session_id", "name": "session_id", "in": "path", "required": true } ], "responses": { "202": { "description": "accepted", "schema": { "type": "string" }, "headers": { "Location": { "type": "string", "description": "/v2/{name}/blobs/uploads/{session_id}" }, "Range": { "type": "string", "description": "0-128" } } }, "400": { "description": "bad request", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "416": { "description": "range not satisfiable", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } } }, "/v2/{name}/blobs/{digest}": { "get": { "description": "Get an image's blob/layer given a digest", "consumes": [ "application/json" ], "produces": [ "application/vnd.oci.image.layer.v1.tar+gzip" ], "summary": "Get image blob/layer", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "blob/layer digest", "name": "digest", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ImageManifest" } } } }, "delete": { "description": "Delete an image's blob/layer given a digest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Delete image blob/layer", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "blob/layer digest", "name": "digest", "in": "path", "required": true } ], "responses": { "202": { "description": "accepted", "schema": { "type": "string" } } } }, "head": { "description": "Check an image's blob/layer given a digest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Check image blob/layer", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "blob/layer digest", "name": "digest", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ImageManifest" }, "headers": { "constants.DistContentDigestKey": { "type": "object" } } } } } }, "/v2/{name}/manifests/{reference}": { "get": { "description": "Get an image's manifest given a reference or a digest", "consumes": [ "application/json" ], "produces": [ "application/vnd.oci.image.manifest.v1+json" ], "summary": "Get image manifest", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "image reference or digest", "name": "reference", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ImageManifest" }, "headers": { "constants.DistContentDigestKey": { "type": "object" } } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } }, "put": { "description": "Update an image's manifest given a reference or a digest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Update image manifest", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "image reference or digest", "name": "reference", "in": "path", "required": true } ], "responses": { "201": { "description": "created", "schema": { "type": "string" } }, "400": { "description": "bad request", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } }, "delete": { "description": "Delete an image's manifest given a reference or a digest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Delete image manifest", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "image reference or digest", "name": "reference", "in": "path", "required": true } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" } } } }, "head": { "description": "Check an image's manifest given a reference or a digest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Check image manifest", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "image reference or digest", "name": "reference", "in": "path", "required": true } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" }, "headers": { "constants.DistContentDigestKey": { "type": "object" } } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error\".", "schema": { "type": "string" } } } } }, "/v2/{name}/referrers/{digest}": { "get": { "description": "Get referrers given a digest", "consumes": [ "application/json" ], "produces": [ "application/vnd.oci.image.index.v1+json" ], "summary": "Get referrers for a given digest", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "string", "description": "digest", "name": "digest", "in": "path", "required": true }, { "type": "string", "description": "artifact type", "name": "artifactType", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/api.ImageIndex" } }, "404": { "description": "not found", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } } }, "/v2/{name}/tags/list": { "get": { "description": "List all image tags in a repository", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "List image tags", "parameters": [ { "type": "string", "description": "repository name", "name": "name", "in": "path", "required": true }, { "type": "integer", "description": "limit entries for pagination", "name": "n", "in": "query", "required": true }, { "type": "string", "description": "last tag value for pagination", "name": "last", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/common.ImageTags" } }, "400": { "description": "bad request\".", "schema": { "type": "string" } }, "404": { "description": "not found", "schema": { "type": "string" } } } } }, "/zot/auth/apikey": { "get": { "description": "Get list of all API keys for a logged in user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Get list of API keys for the current user", "responses": { "200": { "description": "ok", "schema": { "type": "string" } }, "401": { "description": "unauthorized", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } }, "post": { "description": "Can create an api key for a logged in user, based on the provided label and scopes.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Create an API key for the current user", "parameters": [ { "description": "api token id (UUID)", "name": "id", "in": "body", "required": true, "schema": { "$ref": "#/definitions/api.APIKeyPayload" } } ], "responses": { "201": { "description": "created", "schema": { "type": "string" } }, "400": { "description": "bad request", "schema": { "type": "string" } }, "401": { "description": "unauthorized", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } }, "delete": { "description": "Revokes one current user API key based on given key ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Revokes one current user API key", "parameters": [ { "type": "string", "description": "api token id (UUID)", "name": "id", "in": "query", "required": true } ], "responses": { "200": { "description": "ok", "schema": { "type": "string" } }, "400": { "description": "bad request", "schema": { "type": "string" } }, "401": { "description": "unauthorized", "schema": { "type": "string" } }, "500": { "description": "internal server error", "schema": { "type": "string" } } } } }, "/zot/auth/logout": { "post": { "description": "Logout by removing current session", "consumes": [ "application/json" ], "produces": [ "application/json" ], "summary": "Logout by removing current session", "responses": { "200": { "description": "ok\".", "schema": { "type": "string" } }, "500": { "description": "internal server error\".", "schema": { "type": "string" } } } } } }, "definitions": { "api.APIKeyPayload": { "type": "object", "properties": { "expirationDate": { "type": "string" }, "label": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string" } } } }, "api.ExtensionList": { "type": "object", "properties": { "extensions": { "type": "array", "items": { "$ref": "#/definitions/extensions.Extension" } } } }, "api.ImageIndex": { "type": "object", "properties": { "annotations": { "description": "Annotations contains arbitrary metadata for the image index.", "type": "object", "additionalProperties": { "type": "string" } }, "artifactType": { "description": "ArtifactType specifies the IANA media type of artifact when the manifest is used for an artifact.", "type": "string" }, "manifests": { "description": "Manifests references platform specific manifests.", "type": "array", "items": { "$ref": "#/definitions/github_com_opencontainers_image-spec_specs-go_v1.Descriptor" } }, "mediaType": { "description": "MediaType specifies the type of this document data structure e.g. `application/vnd.oci.image.index.v1+json`", "type": "string" }, "schemaVersion": { "description": "SchemaVersion is the image manifest schema that this image follows", "type": "integer" }, "subject": { "description": "Subject is an optional link from the image manifest to another manifest forming an association between the image manifest and the other manifest.", "allOf": [ { "$ref": "#/definitions/github_com_opencontainers_image-spec_specs-go_v1.Descriptor" } ] } } }, "api.ImageManifest": { "type": "object", "properties": { "annotations": { "description": "Annotations contains arbitrary metadata for the image manifest.", "type": "object", "additionalProperties": { "type": "string" } }, "artifactType": { "description": "ArtifactType specifies the IANA media type of artifact when the manifest is used for an artifact.", "type": "string" }, "config": { "description": "Config references a configuration object for a container, by digest.\nThe referenced configuration object is a JSON blob that the runtime uses to set up the container.", "allOf": [ { "$ref": "#/definitions/github_com_opencontainers_image-spec_specs-go_v1.Descriptor" } ] }, "layers": { "description": "Layers is an indexed list of layers referenced by the manifest.", "type": "array", "items": { "$ref": "#/definitions/github_com_opencontainers_image-spec_specs-go_v1.Descriptor" } }, "mediaType": { "description": "MediaType specifies the type of this document data structure e.g. `application/vnd.oci.image.manifest.v1+json`", "type": "string" }, "schemaVersion": { "description": "SchemaVersion is the image manifest schema that this image follows", "type": "integer" }, "subject": { "description": "Subject is an optional link from the image manifest to another manifest forming an association between the image manifest and the other manifest.", "allOf": [ { "$ref": "#/definitions/github_com_opencontainers_image-spec_specs-go_v1.Descriptor" } ] } } }, "api.RepositoryList": { "type": "object", "properties": { "repositories": { "type": "array", "items": { "type": "string" } } } }, "common.ImageTags": { "type": "object", "properties": { "name": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } } } }, "extensions.Auth": { "type": "object", "properties": { "bearer": { "$ref": "#/definitions/extensions.BearerConfig" }, "htpasswd": { "$ref": "#/definitions/extensions.HTPasswd" }, "ldap": { "type": "object", "properties": { "address": { "type": "string" } } }, "openid": { "$ref": "#/definitions/extensions.OpenIDConfig" } } }, "extensions.BearerConfig": { "type": "object", "properties": { "realm": { "type": "string" }, "service": { "type": "string" } } }, "extensions.Extension": { "type": "object", "properties": { "description": { "type": "string" }, "endpoints": { "type": "array", "items": { "type": "string" } }, "name": { "type": "string" }, "url": { "type": "string" } } }, "extensions.HTPasswd": { "type": "object", "properties": { "path": { "type": "string" } } }, "extensions.OpenIDConfig": { "type": "object", "properties": { "providers": { "type": "object", "additionalProperties": { "$ref": "#/definitions/extensions.OpenIDProviderConfig" } } } }, "extensions.OpenIDProviderConfig": { "type": "object", "properties": { "name": { "type": "string" } } }, "extensions.StrippedConfig": { "type": "object", "properties": { "binaryType": { "type": "string" }, "distSpecVersion": { "type": "string" }, "http": { "type": "object", "properties": { "auth": { "$ref": "#/definitions/extensions.Auth" } } } } }, "github_com_opencontainers_image-spec_specs-go_v1.Descriptor": { "type": "object", "properties": { "annotations": { "description": "Annotations contains arbitrary metadata relating to the targeted content.", "type": "object", "additionalProperties": { "type": "string" } }, "artifactType": { "description": "ArtifactType is the IANA media type of this artifact.", "type": "string" }, "data": { "description": "Data is an embedding of the targeted content. This is encoded as a base64\nstring when marshalled to JSON (automatically, by encoding/json). If\npresent, Data can be used directly to avoid fetching the targeted content.", "type": "array", "items": { "type": "integer" } }, "digest": { "description": "Digest is the digest of the targeted content.", "type": "string" }, "mediaType": { "description": "MediaType is the media type of the object this schema refers to.", "type": "string" }, "platform": { "description": "Platform describes the platform which the image in the manifest runs on.\n\nThis should only be used when referring to a manifest.", "allOf": [ { "$ref": "#/definitions/v1.Platform" } ] }, "size": { "description": "Size specifies the size in bytes of the blob.", "type": "integer" }, "urls": { "description": "URLs specifies a list of URLs from which this object MAY be downloaded", "type": "array", "items": { "type": "string" } } } }, "v1.Platform": { "type": "object", "properties": { "architecture": { "description": "Architecture field specifies the CPU architecture, for example\n`amd64` or `ppc64le`.", "type": "string" }, "os": { "description": "OS specifies the operating system, for example `linux` or `windows`.", "type": "string" }, "os.features": { "description": "OSFeatures is an optional field specifying an array of strings,\neach listing a required OS feature (for example on Windows `win32k`).", "type": "array", "items": { "type": "string" } }, "os.version": { "description": "OSVersion is an optional field specifying the operating system\nversion, for example on Windows `10.0.14393.1066`.", "type": "string" }, "variant": { "description": "Variant is an optional field specifying a variant of the CPU, for\nexample `v7` to specify ARMv7 when architecture is `arm`.", "type": "string" } } } } }