diff --git a/Makefile b/Makefile index 388b4180..a46d3840 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ doc: docs/docs.go .PHONY: clean clean: - rm -f bin/zot* docs/* + rm -f bin/zot* .PHONY: run run: binary test diff --git a/docs/docs.go b/docs/docs.go new file mode 100644 index 00000000..b3eb545a --- /dev/null +++ b/docs/docs.go @@ -0,0 +1,757 @@ +// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT +// This file was generated by swaggo/swag at +// 2019-12-11 12:03:05.055900322 -0800 PST m=+0.052058015 + +package docs + +import ( + "bytes" + "encoding/json" + + "github.com/alecthomas/template" + "github.com/swaggo/swag" +) + +var doc = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "APIs for Open Container Initiative Distribution Specification", + "title": "Open Container Initiative Distribution Specification", + "contact": { + "name": "API Support", + "url": "http://www.swagger.io/support", + "email": "support@swagger.io" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "v0.1.0-dev" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/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": { + "type": "object", + "$ref": "#/definitions/api.RepositoryList" + } + }, + "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/{uuid}" + }, + "Range": { + "type": "string", + "description": "bytes=0-0" + } + } + }, + "404": { + "description": "not found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "internal server error", + "schema": { + "type": "string" + } + } + } + } + }, + "/v2/{name}/blobs/uploads/{uuid}": { + "get": { + "description": "Get an image's blob/layer upload given a uuid", + "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 uuid", + "name": "uuid", + "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 uuid", + "name": "uuid", + "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 uuid", + "name": "uuid", + "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 uuid", + "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 uuid", + "name": "uuid", + "in": "path", + "required": true + } + ], + "responses": { + "202": { + "description": "accepted", + "schema": { + "type": "string" + }, + "headers": { + "Location": { + "type": "string", + "description": "/v2/{name}/blobs/uploads/{uuid}" + }, + "Range": { + "type": "string", + "description": "bytes=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": { + "type": "object", + "$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": { + "type": "object", + "$ref": "#/definitions/api.ImageManifest" + }, + "headers": { + "api.DistContentDigestKey": { + "type": "object", + "description": "OK" + } + } + } + } + } + }, + "/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": { + "type": "object", + "$ref": "#/definitions/api.ImageManifest" + }, + "headers": { + "api.DistContentDigestKey": { + "type": "object", + "description": "OK" + } + } + }, + "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": { + "api.DistContentDigestKey": { + "type": "object", + "description": "OK" + } + } + }, + "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": "test", + "name": "name", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "$ref": "#/definitions/api.ImageTags" + } + }, + "404": { + "description": "not found", + "schema": { + "type": "string" + } + } + } + } + } + }, + "definitions": { + "api.ImageManifest": { + "type": "object" + }, + "api.ImageTags": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "api.RepositoryList": { + "type": "object", + "properties": { + "repositories": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } +}` + +type swaggerInfo struct { + Version string + Host string + BasePath string + Schemes []string + Title string + Description string +} + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = swaggerInfo{ Schemes: []string{}} + +type s struct{} + +func (s *s) ReadDoc() string { + t, err := template.New("swagger_info").Funcs(template.FuncMap{ + "marshal": func(v interface {}) string { + a, _ := json.Marshal(v) + return string(a) + }, + }).Parse(doc) + if err != nil { + return doc + } + + var tpl bytes.Buffer + if err := t.Execute(&tpl, SwaggerInfo); err != nil { + return doc + } + + return tpl.String() +} + +func init() { + swag.Register(swag.Name, &s{}) +} diff --git a/docs/swagger.json b/docs/swagger.json new file mode 100644 index 00000000..cb98df5c --- /dev/null +++ b/docs/swagger.json @@ -0,0 +1,705 @@ +{ + "swagger": "2.0", + "info": { + "description": "APIs for Open Container Initiative Distribution Specification", + "title": "Open Container Initiative Distribution Specification", + "contact": { + "name": "API Support", + "url": "http://www.swagger.io/support", + "email": "support@swagger.io" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "v0.1.0-dev" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/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": { + "type": "object", + "$ref": "#/definitions/api.RepositoryList" + } + }, + "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/{uuid}" + }, + "Range": { + "type": "string", + "description": "bytes=0-0" + } + } + }, + "404": { + "description": "not found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "internal server error", + "schema": { + "type": "string" + } + } + } + } + }, + "/v2/{name}/blobs/uploads/{uuid}": { + "get": { + "description": "Get an image's blob/layer upload given a uuid", + "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 uuid", + "name": "uuid", + "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 uuid", + "name": "uuid", + "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 uuid", + "name": "uuid", + "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 uuid", + "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 uuid", + "name": "uuid", + "in": "path", + "required": true + } + ], + "responses": { + "202": { + "description": "accepted", + "schema": { + "type": "string" + }, + "headers": { + "Location": { + "type": "string", + "description": "/v2/{name}/blobs/uploads/{uuid}" + }, + "Range": { + "type": "string", + "description": "bytes=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": { + "type": "object", + "$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": { + "type": "object", + "$ref": "#/definitions/api.ImageManifest" + }, + "headers": { + "api.DistContentDigestKey": { + "type": "object", + "description": "OK" + } + } + } + } + } + }, + "/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": { + "type": "object", + "$ref": "#/definitions/api.ImageManifest" + }, + "headers": { + "api.DistContentDigestKey": { + "type": "object", + "description": "OK" + } + } + }, + "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": { + "api.DistContentDigestKey": { + "type": "object", + "description": "OK" + } + } + }, + "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": "test", + "name": "name", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "$ref": "#/definitions/api.ImageTags" + } + }, + "404": { + "description": "not found", + "schema": { + "type": "string" + } + } + } + } + } + }, + "definitions": { + "api.ImageManifest": { + "type": "object" + }, + "api.ImageTags": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "api.RepositoryList": { + "type": "object", + "properties": { + "repositories": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } +} \ No newline at end of file diff --git a/docs/swagger.yaml b/docs/swagger.yaml new file mode 100644 index 00000000..0c5f717f --- /dev/null +++ b/docs/swagger.yaml @@ -0,0 +1,474 @@ +basePath: '{{.BasePath}}' +definitions: + api.ImageManifest: + type: object + api.ImageTags: + properties: + name: + type: string + tags: + items: + type: string + type: array + type: object + api.RepositoryList: + properties: + repositories: + items: + type: string + type: array + type: object +host: '{{.Host}}' +info: + contact: + email: support@swagger.io + name: API Support + url: http://www.swagger.io/support + description: APIs for Open Container Initiative Distribution Specification + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + title: Open Container Initiative Distribution Specification + version: v0.1.0-dev +paths: + /v2/: + get: + consumes: + - application/json + description: Check if this API version is supported + produces: + - application/json + responses: + "200": + description: ok + schema: + type: string + summary: Check API support + /v2/_catalog: + get: + consumes: + - application/json + description: List all image repositories + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/api.RepositoryList' + type: object + "500": + description: internal server error + schema: + type: string + summary: List image repositories + /v2/{name}/blobs/{digest}: + delete: + consumes: + - application/json + description: Delete an image's blob/layer given a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: blob/layer digest + in: path + name: digest + required: true + type: string + produces: + - application/json + responses: + "202": + description: accepted + schema: + type: string + summary: Delete image blob/layer + get: + consumes: + - application/json + description: Get an image's blob/layer given a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: blob/layer digest + in: path + name: digest + required: true + type: string + produces: + - application/vnd.oci.image.layer.v1.tar+gzip + responses: + "200": + description: OK + schema: + $ref: '#/definitions/api.ImageManifest' + type: object + summary: Get image blob/layer + head: + consumes: + - application/json + description: Check an image's blob/layer given a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: blob/layer digest + in: path + name: digest + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + headers: + api.DistContentDigestKey: + description: OK + type: object + schema: + $ref: '#/definitions/api.ImageManifest' + type: object + summary: Check image blob/layer + /v2/{name}/blobs/uploads: + post: + consumes: + - application/json + description: Create a new image blob/layer upload + parameters: + - description: repository name + in: path + name: name + required: true + type: string + produces: + - application/json + responses: + "202": + description: accepted + headers: + Location: + description: /v2/{name}/blobs/uploads/{uuid} + type: string + Range: + description: bytes=0-0 + type: string + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: internal server error + schema: + type: string + summary: Create image blob/layer upload + /v2/{name}/blobs/uploads/{uuid}: + delete: + consumes: + - application/json + description: Delete an image's blob/layer given a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: upload uuid + in: path + name: uuid + required: true + type: string + produces: + - application/json + responses: + "200": + description: ok + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: internal server error + schema: + type: string + summary: Delete image blob/layer + get: + consumes: + - application/json + description: Get an image's blob/layer upload given a uuid + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: upload uuid + in: path + name: uuid + required: true + type: string + produces: + - application/json + responses: + "204": + description: no content + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: internal server error + schema: + type: string + summary: Get image blob/layer upload + patch: + consumes: + - application/json + description: Resume an image's blob/layer upload given an uuid + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: upload uuid + in: path + name: uuid + required: true + type: string + produces: + - application/json + responses: + "202": + description: accepted + headers: + Location: + description: /v2/{name}/blobs/uploads/{uuid} + type: string + Range: + description: bytes=0-128 + type: string + schema: + type: string + "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 + summary: Resume image blob/layer upload + put: + consumes: + - application/json + description: Update and finish an image's blob/layer upload given a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: upload uuid + in: path + name: uuid + required: true + type: string + - description: blob/layer digest + in: query + name: digest + required: true + type: string + produces: + - application/json + responses: + "201": + description: created + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: internal server error + schema: + type: string + summary: Update image blob/layer upload + /v2/{name}/manifests/{reference}: + delete: + consumes: + - application/json + description: Delete an image's manifest given a reference or a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: image reference or digest + in: path + name: reference + required: true + type: string + produces: + - application/json + responses: + "200": + description: ok + schema: + type: string + summary: Delete image manifest + get: + consumes: + - application/json + description: Get an image's manifest given a reference or a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: image reference or digest + in: path + name: reference + required: true + type: string + produces: + - application/vnd.oci.image.manifest.v1+json + responses: + "200": + description: OK + headers: + api.DistContentDigestKey: + description: OK + type: object + schema: + $ref: '#/definitions/api.ImageManifest' + type: object + "404": + description: not found + schema: + type: string + "500": + description: internal server error + schema: + type: string + summary: Get image manifest + head: + consumes: + - application/json + description: Check an image's manifest given a reference or a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: image reference or digest + in: path + name: reference + required: true + type: string + produces: + - application/json + responses: + "200": + description: ok + headers: + api.DistContentDigestKey: + description: OK + type: object + schema: + type: string + "404": + description: not found + schema: + type: string + "500": + description: internal server error + schema: + type: string + summary: Check image manifest + put: + consumes: + - application/json + description: Update an image's manifest given a reference or a digest + parameters: + - description: repository name + in: path + name: name + required: true + type: string + - description: image reference or digest + in: path + name: reference + required: true + type: string + produces: + - application/json + 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 + summary: Update image manifest + /v2/{name}/tags/list: + get: + consumes: + - application/json + description: List all image tags in a repository + parameters: + - description: test + in: path + name: name + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/api.ImageTags' + type: object + "404": + description: not found + schema: + type: string + summary: List image tags +swagger: "2.0"