diff --git a/reference/dtr/2.7/api/dtr-swagger-2.6.json b/reference/dtr/2.7/api/dtr-swagger-2.6.json deleted file mode 100644 index 0958f472c0..0000000000 --- a/reference/dtr/2.7/api/dtr-swagger-2.6.json +++ /dev/null @@ -1,9957 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Docker Trusted Registry", - "version": "2.6.0-tp9" - }, - "paths": { - "/api/v0/accounts/language": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "Get the chosen language", - "operationId": "GetLanguage", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Language" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Language" - } - } - } - } - }, - "/api/v0/accounts/{namespace}": { - "delete": { - "description": "\n\t*Authorization:* Client must be authenticated as a system admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "Removes a user or organization along with all repositories", - "operationId": "DeleteNamespace", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - } - ], - "responses": { - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_ACCOUNT: An account with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/accounts/{namespace}/repositories": { - "delete": { - "description": "\n\t*Authorization:* Client must be authenticated as a system admin, organization admin or user in question\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "Removes all of a user or organization's repositories", - "operationId": "DeleteNamespaceRepositories", - "deprecated": true, - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - } - ], - "responses": { - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_ACCOUNT: An account with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/accounts/{namespace}/webhooks": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "List the webhook subscriptions for a namespace", - "operationId": "ListNamespaceWebhooks", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_ACCOUNT: An account with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - } - } - } - }, - "/api/v0/accounts/{orgname}/teams/{teamname}/repositoryAccess": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who owns the organization the team is in or be a member of that team.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "List repository access grants for a team", - "operationId": "ListTeamRepoAccess", - "parameters": [ - { - "type": "string", - "description": "organization account name", - "name": "orgname", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "team name", - "name": "teamname", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListTeamRepoAccess" - } - }, - "400": { - "description": "the team does not belong to the organization" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TEAM: A team with the given name does not exist in the organization." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListTeamRepoAccess" - } - } - } - } - }, - "/api/v0/accounts/{username}/repositoryAccess/{namespace}/{reponame}": { - "get": { - "description": "\n\t*Authorization:* Client must be authenticated either as the user in question or be a system admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "Check a user's access to a repository", - "operationId": "GetUserRepoAccess", - "parameters": [ - { - "type": "string", - "description": "user account name", - "name": "username", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.RepoUserAccess" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.RepoUserAccess" - } - } - } - } - }, - "/api/v0/accounts/{username}/settings": { - "get": { - "description": "\n*Authorization:* Client must be authenticated either as the user in question or be a system admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "Check a user's settings", - "operationId": "GetUserSettings", - "parameters": [ - { - "type": "string", - "description": "user account name", - "name": "username", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.UserSettings" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_USER: A user with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.UserSettings" - } - } - } - }, - "patch": { - "description": "\n*Authorization:* Client must be authenticated either as the user in question or be a system admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "accounts" - ], - "summary": "Update a user's settings", - "operationId": "UpdateUserSettings", - "parameters": [ - { - "type": "string", - "description": "user account name", - "name": "username", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.UserSettings" - } - } - ], - "responses": { - "200": { - "description": "Successfully updated user settings." - }, - "400": { - "description": "INVALID_USER_SETTINGS: The submitted user settings change request contains invalid values." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_USER: A user with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully updated user settings." - } - } - } - }, - "/api/v0/action_configs": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "action_configs" - ], - "summary": "List all action configs", - "operationId": "ListActionConfigs", - "responses": { - "200": { - "description": "Success, list of action configs returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.ActionConfigs" - } - }, - "default": { - "description": "Success, list of action configs returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.ActionConfigs" - } - } - } - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "action_configs" - ], - "summary": "Configure actions", - "operationId": "UpdateActionConfig", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/tmpforms.ActionConfigCreate" - } - } - ], - "responses": { - "202": { - "description": "Success.", - "schema": { - "$ref": "#/definitions/tmpresponses.ActionConfig" - } - } - } - } - }, - "/api/v0/action_configs/{action}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "action_configs" - ], - "summary": "Get info about the actionConfig with the given action", - "operationId": "GetActionConfig", - "parameters": [ - { - "type": "string", - "description": "name of action to fetch the config for", - "name": "action", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Success, action config info returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.ActionConfig" - } - }, - "default": { - "description": "Success, action config info returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.ActionConfig" - } - } - } - }, - "delete": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "action_configs" - ], - "summary": "Delete the action config. The defaults will be used.", - "operationId": "DeleteActionConfig", - "parameters": [ - { - "type": "string", - "description": "the name of the action to delete the config for", - "name": "action", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "Success, action config has been deleted." - } - } - } - }, - "/api/v0/api_tokens": { - "get": { - "description": "listUserAPITokensHandler", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "API_tokens" - ], - "summary": "Get all API tokens associated with user. Get all tokens if no user is not specified", - "operationId": "GetAllAPITokensByUser", - "parameters": [ - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "string", - "description": "Limit the API token results to a specific user", - "name": "username", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved API tokens", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.APIToken" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_USER: A user with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved API tokens", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.APIToken" - } - } - } - } - }, - "post": { - "description": "createAPITokenHandler", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "API_tokens" - ], - "summary": "Create a new API token", - "operationId": "CreateAnAPIToken", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreateAPIToken" - } - }, - { - "type": "string", - "description": "Limit the API token results to a specific user", - "name": "username", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully created API token", - "schema": { - "$ref": "#/definitions/responses.NewAPIToken" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully created API token", - "schema": { - "$ref": "#/definitions/responses.NewAPIToken" - } - } - } - }, - "delete": { - "description": "cleanupAPITokenHleanupHandler", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "API_tokens" - ], - "summary": "Mass deletion of API tokens from database based on user, time created, and/or generation method", - "operationId": "APITokenCleanup", - "parameters": [ - { - "type": "string", - "description": "Limit the API token results to a specific user", - "name": "username", - "in": "query" - }, - { - "type": "string", - "description": "The date on which the token was last used", - "name": "usedbefore", - "in": "query" - }, - { - "type": "string", - "default": "auto", - "description": "The method by which the token was created", - "name": "generatedby", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully cleaned up API tokens" - }, - "400": { - "description": "INVALID_PARAMETERS: Unable to parse query parameters" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_USER: A user with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully cleaned up API tokens" - } - } - } - }, - "/api/v0/api_tokens/{hashedtoken}": { - "get": { - "description": "getAPITokenHandler", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "API_tokens" - ], - "summary": "Get an API token's information based on it's token id", - "operationId": "GetAnAPIToken", - "parameters": [ - { - "type": "string", - "description": "API token id", - "name": "hashedtoken", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Successfully retrieved API token", - "schema": { - "$ref": "#/definitions/responses.APIToken" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_API_TOKEN: An API token with the id name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved API token", - "schema": { - "$ref": "#/definitions/responses.APIToken" - } - } - } - }, - "delete": { - "description": "deleteAPITokenHandler", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "API_tokens" - ], - "summary": "Delete a specific API token", - "operationId": "DeleteAnAPIToken", - "parameters": [ - { - "type": "string", - "description": "API token id", - "name": "hashedtoken", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Successfully deleted API token" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_API_TOKEN: An API token with the id name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully deleted API token" - } - } - }, - "patch": { - "description": "updateAPITokenHandler", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "API_tokens" - ], - "summary": "Update information about a specific API token", - "operationId": "UpdateAnAPIToken", - "parameters": [ - { - "type": "string", - "description": "API token id", - "name": "hashedtoken", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.UpdateAPIToken" - } - } - ], - "responses": { - "200": { - "description": "Successfully updated API tokens", - "schema": { - "$ref": "#/definitions/responses.APIToken" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_API_TOKEN: An API token with the id name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully updated API tokens", - "schema": { - "$ref": "#/definitions/responses.APIToken" - } - } - } - } - }, - "/api/v0/content_caches": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as any active user in the system.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "content_caches" - ], - "summary": "List all content caches", - "operationId": "ListContentCaches", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ContentCache" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ContentCache" - } - } - } - } - }, - "post": { - "description": "\n*Authorization:* Client must be authenticated an admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "content_caches" - ], - "summary": "Create content cache", - "operationId": "CreateContentCache", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreateContentCache" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.ContentCache" - } - }, - "400": { - "description": "invalid content cache details" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/content_caches/{contentcacheuuid}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as any active user in the system.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "content_caches" - ], - "summary": "View details of a content cache", - "operationId": "GetContentCache", - "parameters": [ - { - "type": "string", - "description": "uuid of content cache", - "name": "contentcacheuuid", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ContentCache" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_CONTENT_CACHE: A content cache with the given uuid does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ContentCache" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated an admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "content_caches" - ], - "summary": "Remove a content cache", - "operationId": "DeleteContentCache", - "parameters": [ - { - "type": "string", - "description": "uuid of content cache", - "name": "contentcacheuuid", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success or content cache does not exist" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_CONTENT_CACHE: A content cache with the given uuid does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/crons": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "crons" - ], - "summary": "List all crons", - "operationId": "ListCrons", - "responses": { - "200": { - "description": "Success, list of crons returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Crons" - } - }, - "default": { - "description": "Success, list of crons returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Crons" - } - } - } - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "crons" - ], - "summary": "Create / update a periodic task", - "operationId": "UpdateCron", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/tmpforms.CronCreate" - } - } - ], - "responses": { - "202": { - "description": "Success.", - "schema": { - "$ref": "#/definitions/tmpresponses.Cron" - } - } - } - } - }, - "/api/v0/crons/{action}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "crons" - ], - "summary": "Get info about the cron with the given action", - "operationId": "GetCron", - "parameters": [ - { - "type": "string", - "description": "action of the cron to fetch", - "name": "action", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Success, cron info returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Cron" - } - }, - "default": { - "description": "Success, cron info returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Cron" - } - } - } - }, - "delete": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "crons" - ], - "summary": "Delete the cron. Jobs created from it will not be canceled.", - "operationId": "DeleteCron", - "parameters": [ - { - "type": "string", - "description": "action of cron to delete", - "name": "action", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "Success, cron has been deleted." - } - } - } - }, - "/api/v0/events": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "events" - ], - "summary": "Get Events", - "operationId": "GetEvents", - "parameters": [ - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "string", - "name": "publishedBefore", - "in": "query" - }, - { - "type": "string", - "name": "publishedAfter", - "in": "query" - }, - { - "type": "string", - "description": "UUID of the user or organization that performed the event", - "name": "actorId", - "in": "query" - }, - { - "type": "string", - "description": "Type of events to filter by", - "name": "eventType", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Events" - } - }, - "400": { - "description": "INVALID_PARAMETERS: Unable to parse query parameters" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Events" - } - } - } - } - }, - "/api/v0/imagescan/layeroverride": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Gets a list of all the available overrides", - "operationId": "GetLayerVulnOverrides", - "responses": { - "200": { - "description": "Successfully set vulnerability override", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.LayerVulnOverride" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "500": { - "description": "INTERNAL_ERROR: An internal server error occurred. Contact a system administrator for more information." - }, - "default": { - "description": "Successfully set vulnerability override", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.LayerVulnOverride" - } - } - } - } - } - }, - "/api/v0/imagescan/layeroverride/{layerid}": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Sets a vulnerability override for the given layer", - "operationId": "SetLayerVulnOverride", - "parameters": [ - { - "type": "string", - "description": "layer id", - "name": "layerid", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.VulnOverrideOption" - } - } - ], - "responses": { - "200": { - "description": "Successfully set vulnerability override" - }, - "400": { - "description": "INVALID_SETTINGS: The submitted settings change request contains invalid values." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_LAYER: A layer with the given sha does not exist in the repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "500": { - "description": "INTERNAL_ERROR: An internal server error occurred. Contact a system administrator for more information." - }, - "default": { - "description": "Successfully set vulnerability override" - } - } - } - }, - "/api/v0/imagescan/layeroverride/{vulnerabilityid}": { - "delete": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Deletes a layer vulnerability override", - "operationId": "DeleteLayerVulnOverride", - "parameters": [ - { - "type": "string", - "description": "vulnerability id", - "name": "vulnerabilityid", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_LAYER: A layer with the given sha does not exist in the repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK" - } - } - } - }, - "/api/v0/imagescan/repositories/{namespace}/{reponame}/{tag}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Deprecated use /scansummary/repositories/{namespace}/{reponame}/{tag}", - "operationId": "GetSummaryByManifestDigest", - "deprecated": true, - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "tag name", - "name": "tag", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include detailed summary results", - "name": "detailed", - "in": "query" - }, - { - "type": "string", - "description": "Operating system of the tag", - "name": "os", - "in": "query" - }, - { - "type": "string", - "description": "Architecture of the tag", - "name": "arch", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved summary.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.OldScanSummary" - } - } - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved summary.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.OldScanSummary" - } - } - } - } - } - }, - "/api/v0/imagescan/scan": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Do a scan or a scan/check of all layers", - "operationId": "ScanAllLayers", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.ScanOptions" - } - } - ], - "responses": { - "200": { - "description": "Successfully submitted all layers to jobrunner for scan/check." - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully submitted all layers to jobrunner for scan/check." - } - } - } - }, - "/api/v0/imagescan/scan/update": { - "put": { - "consumes": [ - "multipart/form-data", - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Update the vulnerability database for security scanning", - "operationId": "UpdateVulnDB", - "parameters": [ - { - "type": "file", - "description": "Upload file to init database", - "name": "file", - "in": "formData" - }, - { - "type": "boolean", - "default": false, - "description": "Init or update vuln db in online mode.", - "name": "online", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully started to updated vulnerability DB." - }, - "400": { - "description": "SCANNING_DB_NOT_READY: Scanning DB is not ready" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully started to updated vulnerability DB." - } - } - } - }, - "/api/v0/imagescan/scan/{namespace}/{reponame}/{tag}/{os}/{arch}": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Do a scan or a scan/check of given image", - "operationId": "ScanImage", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "tag name", - "name": "tag", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "operating system of the tag", - "name": "os", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "architecture of the tag", - "name": "arch", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Successfully submitted image to jobrunner for scan/check." - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully submitted image to jobrunner for scan/check." - } - } - } - }, - "/api/v0/imagescan/scansummary/component/{component}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get the image by component", - "operationId": "GetScannedImageByComponent", - "parameters": [ - { - "type": "string", - "description": "component", - "name": "component", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include scan status summary results", - "name": "scanstatus", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - } - } - } - }, - "/api/v0/imagescan/scansummary/cve/{cve}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get the image by CVE", - "operationId": "GetScannedImageByCVE", - "parameters": [ - { - "type": "string", - "description": "cve", - "name": "cve", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include scan status summary results", - "name": "scanstatus", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - } - } - } - }, - "/api/v0/imagescan/scansummary/layer/{layerid}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get the image by layer sha", - "operationId": "GetScannedImageByLayer", - "parameters": [ - { - "type": "string", - "description": "layer id", - "name": "layerid", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include scan status summary results", - "name": "scanstatus", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_LAYER: A layer with the given sha does not exist in the repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - } - } - } - }, - "/api/v0/imagescan/scansummary/license/{license}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get the image by license", - "operationId": "GetScannedImageByLicense", - "parameters": [ - { - "type": "string", - "description": "license", - "name": "license", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include scan status summary results", - "name": "scanstatus", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved images", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - } - } - } - }, - "/api/v0/imagescan/scansummary/repositories/{namespace}/{reponame}/{reference}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get the scan summary info on a namespace/repo:tag or namespace/repo@digest", - "operationId": "GetScanSummary", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "digest or tag for an image manifest", - "name": "reference", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include scan status summary results", - "name": "scanstatus", - "in": "query" - }, - { - "type": "string", - "description": "Operating system of the tag", - "name": "os", - "in": "query" - }, - { - "type": "string", - "description": "Architecture of the tag", - "name": "arch", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Successfully retrieved summary.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_REF: A ref with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved summary.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ScanSummary" - } - } - } - } - } - }, - "/api/v0/imagescan/scansummary/repositories/{namespace}/{reponame}/{tag}/export": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "text/csv", - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get the scan summary info on a namespace/repo:tag as a file", - "operationId": "ExportScanSummary", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "tag name", - "name": "tag", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include scan status summary results", - "name": "scanstatus", - "in": "query" - }, - { - "type": "string", - "description": "Operating system of the tag", - "name": "os", - "in": "query" - }, - { - "type": "string", - "description": "Architecture of the tag", - "name": "arch", - "in": "query" - }, - { - "type": "string", - "description": "Scan summary exported filetype", - "name": "Accept", - "in": "header" - } - ], - "responses": { - "400": { - "description": "INVALID_PARAMETERS: Unable to parse query parameters" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/imagescan/scansummary/tags": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get a list of scan summaries", - "operationId": "GetScanSummaries", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.ImagesForm" - } - } - ], - "responses": { - "200": { - "description": "Successfully retrieved summary.", - "schema": { - "$ref": "#/definitions/responses.ThinScanSummaries" - } - }, - "400": { - "description": "INVALID_PARAMETERS: Unable to parse query parameters" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved summary.", - "schema": { - "$ref": "#/definitions/responses.ThinScanSummaries" - } - } - } - } - }, - "/api/v0/imagescan/status": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "imagescan" - ], - "summary": "Get the status and version of scanning service", - "operationId": "GetNautilusDBStatus", - "responses": { - "200": { - "description": "Successfully retrieved DB status", - "schema": { - "$ref": "#/definitions/responses.NautilusStatus" - } - }, - "400": { - "description": "SCANNING_NOT_ENABLED: Scanning is not enabled" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully retrieved DB status", - "schema": { - "$ref": "#/definitions/responses.NautilusStatus" - } - } - } - } - }, - "/api/v0/index/autocomplete": { - "get": { - "description": "\nRepository results will be filtered to only those repositories visible to the client. Account results will not be filtered.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "index" - ], - "summary": "Autocompletion for repositories and/or accounts", - "operationId": "Autocomplete", - "parameters": [ - { - "type": "string", - "description": "Autocomplete query", - "name": "query", - "in": "query", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include repositories in the response", - "name": "includeRepositories", - "in": "query" - }, - { - "type": "boolean", - "default": true, - "description": "Whether to include accounts in the response", - "name": "includeAccounts", - "in": "query" - }, - { - "type": "string", - "description": "Exact repository namespace to limit results to.", - "name": "namespace", - "in": "query" - }, - { - "type": "number", - "default": 25, - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Autocomplete" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Autocomplete" - } - } - } - } - }, - "/api/v0/index/dockersearch": { - "get": { - "description": "\nThis is used for the Docker CLI's docker search command. Repository results will be filtered to only those repositories visible to the client.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "index" - ], - "summary": "Search Docker repositories", - "operationId": "Docker Search", - "parameters": [ - { - "type": "string", - "description": "Search query", - "name": "q", - "in": "query", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.DockerSearch" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.DockerSearch" - } - } - } - } - }, - "/api/v0/jobs": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "jobs" - ], - "summary": "List all jobs ordered by most recently scheduled", - "operationId": "ListJobs", - "parameters": [ - { - "type": "string", - "default": "any", - "description": "Filter jobs by action.", - "name": "action", - "in": "query" - }, - { - "type": "string", - "default": "any", - "description": "Filter jobs by worker ID.", - "name": "worker", - "in": "query" - }, - { - "type": "string", - "default": "any", - "description": "Show only jobs that are running.", - "name": "running", - "in": "query" - }, - { - "type": "integer", - "default": 0, - "description": "Return most recently scheduled jobs starting from this offset index.", - "name": "start", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of jobs per page of results.", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Success, list of jobs returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Jobs" - } - }, - "default": { - "description": "Success, list of jobs returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Jobs" - } - } - } - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "jobs" - ], - "summary": "Schedule a job to be run immediately", - "operationId": "CreateJob", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/tmpforms.JobSubmission" - } - } - ], - "responses": { - "202": { - "description": "Success, job waiting to be claimed.", - "schema": { - "$ref": "#/definitions/tmpresponses.Job" - } - } - } - } - }, - "/api/v0/jobs/{jobID}": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "jobs" - ], - "summary": "Get info about the job with the given ID", - "operationId": "GetJob", - "parameters": [ - { - "type": "string", - "description": "ID of job to fetch", - "name": "jobID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "Success, job info returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Job" - } - }, - "default": { - "description": "Success, job info returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Job" - } - } - } - }, - "delete": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "jobs" - ], - "summary": "Signal this job's worker to cancel and delete the job", - "operationId": "DeleteJobs", - "parameters": [ - { - "type": "string", - "description": "ID of job to delete", - "name": "jobID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "Success, job has been deleted." - } - } - } - }, - "/api/v0/jobs/{jobID}/cancel": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "jobs" - ], - "summary": "Signal this job's worker to cancel the job", - "operationId": "CancelJob", - "parameters": [ - { - "type": "string", - "description": "ID of job to cancel", - "name": "jobID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "Success, job has been canceled." - } - } - } - }, - "/api/v0/jobs/{jobID}/logs": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "jobs" - ], - "summary": "Retrieve logs for this job from its worker", - "operationId": "GetJobLogs", - "parameters": [ - { - "type": "string", - "description": "ID of job whose logs to retrieve", - "name": "jobID", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": false, - "description": "t/f: stream new logs", - "name": "stream", - "in": "query" - }, - { - "type": "integer", - "default": 0, - "description": "Line number to start from", - "name": "offset", - "in": "query" - }, - { - "type": "integer", - "default": 0, - "description": "Number of lines to return if not streaming", - "name": "limit", - "in": "query" - } - ], - "responses": { - "200": { - "description": "Success, job's logs returned.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/tmpresponses.JobLog" - } - } - }, - "default": { - "description": "Success, job's logs returned.", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/tmpresponses.JobLog" - } - } - } - } - } - }, - "/api/v0/meta/alerts": { - "get": { - "description": "\n*Authorization:* Client must be authenticated an admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "meta" - ], - "summary": "Get alerts", - "operationId": "GetAlerts", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Alert" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Alert" - } - } - } - } - } - }, - "/api/v0/meta/cluster_status": { - "get": { - "description": "\n*Authorization:* Client must be authenticated an admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "meta" - ], - "summary": "Get cluster status", - "operationId": "GetClusterStatus", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ClusterStatus" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ClusterStatus" - } - } - } - } - }, - "/api/v0/meta/features": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as any active user in the system\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "meta" - ], - "summary": "Get features", - "operationId": "GetFeatures", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Features" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Features" - } - } - } - } - }, - "/api/v0/meta/settings": { - "get": { - "description": "\n*Authorization:* Client must be authenticated an admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "meta" - ], - "summary": "Get settings", - "operationId": "GetSettings", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Settings" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Settings" - } - } - } - }, - "post": { - "description": "\n*Authorization:* Client must be authenticated an admin.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "meta" - ], - "summary": "Update settings", - "operationId": "UpdateSettings", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.Settings" - } - } - ], - "responses": { - "202": { - "description": "success" - }, - "400": { - "description": "INVALID_SETTINGS: The submitted settings change request contains invalid values." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/remote/registry": { - "post": { - "description": "\n*Authorization:* Client must be authenticated as any active user in the system. Credentials provided in the request body must be for an active user in the remote system.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "remote" - ], - "summary": "Create a check for connection status of remote registry", - "operationId": "CreateRemoteRegistryCheck", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreateRemoteRegistryCheck" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.RemoteRegistryCheck" - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as any active user in the system. Results will be filtered to only those repositories visible to the client.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List all repositories", - "operationId": "ListRepositories", - "parameters": [ - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repositories" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repositories" - } - } - } - } - }, - "/api/v0/repositories/scan/toggle": { - "post": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" access to the repository\n(i.e., user owns the repo or is a member of a team with \"admin\" level access to the organization\"s repository).\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Toggles scan on push for all repositories", - "operationId": "ToggleAllRepositoriesScanOnPush", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.ToggleScanOnPush" - } - } - ], - "responses": { - "200": { - "description": "Successfully toggled scan on push for all repositories." - }, - "400": { - "description": "INVALID_JSON: Unable to parse JSON" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "Successfully toggled scan on push for all repositories." - } - } - } - }, - "/api/v0/repositories/{namespace}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as any active user in the system. Results will be filtered to only those repositories visible to the client.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List repositories in a namespace", - "operationId": "ListNamespaceRepositories", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repositories" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_ACCOUNT: An account with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repositories" - } - } - } - }, - "post": { - "description": "\n*Authorization:* Client must be authenticated as a user who has admin access to the\nrepository namespace (i.e., user owns the repo or is a member of a team with\n\"admin\" level access to the organization's namespace of repositories).\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Create repository", - "operationId": "CreateRepository", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreateRepo" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.Repository" - } - }, - "400": { - "description": "REPOSITORY_EXISTS: A repository with the same name already exists." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_ACCOUNT: An account with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "View details of a repository", - "operationId": "GetRepository", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repository" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repository" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" access to the repository\n(i.e., user owns the repo or is a member of a team with \"admin\" level access to the organization\"s repository).\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Remove a repository", - "operationId": "DeleteRepository", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The domain used to push tags to DTR. Must be set to obtain/manipulate Notary related information", - "name": "domain", - "in": "query" - } - ], - "responses": { - "204": { - "description": "success or repository does not exist" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "REPOSITORY_CONTAINS_TAGS_IN_NOTARY: This repository contains tags in notary and can't be deleted until all tags in notary are removed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - }, - "patch": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" access to the repository\n(i.e., user owns the repo or is a member of a team with \"admin\" level access to the organization\"s repository).\n\nNote that a repository cannot be renamed this way.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Update details of a repository", - "operationId": "PatchRepository", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.UpdateRepo" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repository" - } - }, - "400": { - "description": "INVALID_REPOSITORY_VISIBILITY: The visibility value of the repository is invalid." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Repository" - } - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/events": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the events for a repository", - "operationId": "ListRepoEvents", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "string", - "name": "publishedBefore", - "in": "query" - }, - { - "type": "string", - "name": "publishedAfter", - "in": "query" - }, - { - "type": "string", - "description": "UUID of the user or organization that performed the event", - "name": "actorId", - "in": "query" - }, - { - "type": "string", - "description": "Type of events to filter by", - "name": "eventType", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Exclude image pull events", - "name": "excludePull", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Events" - } - }, - "400": { - "description": "INVALID_PARAMETERS: Unable to parse query parameters" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.Events" - } - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/manifests": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the available manifests for a repository", - "operationId": "ListRepoManifests", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Manifest" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Manifest" - } - } - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/manifests/{reference}": { - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"write\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Delete a manifest for a repository", - "operationId": "DeleteRepoManifest", - "deprecated": true, - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "digest or tag for an image manifest", - "name": "reference", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success" - }, - "400": { - "description": "INVALID_DIGEST: The given digest is invalid." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REF: A ref with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/mirroringPolicies": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the mirroring policies for a repository", - "operationId": "ListRepoMirroringPolicies", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.MirroringPolicy" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.MirroringPolicy" - } - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Deletes a set of mirroring policies for a repository", - "operationId": "DeleteRepoMirroringPolicies", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/forms.DeleteMirroringPolicyIDs" - } - } - } - ], - "responses": { - "204": { - "description": "success" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/pollMirroringPolicies": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the poll mirroring policies for a repository", - "operationId": "ListRepoPollMirroringPolicies", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PollMirroringPolicy" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PollMirroringPolicy" - } - } - } - } - }, - "post": { - "description": "*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the local repository and credentials to the remote repository.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Create a poll mirroring policy for a repository", - "operationId": "CreateRepoPollMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to evaluate the policy on creation", - "name": "initialEvaluation", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreatePollMirroringPolicy" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.PollMirroringPolicy" - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "INVALID_POLL_MIRRORING_POLICY: The given poll mirroring policy is invalid." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/pollMirroringPolicies/{pollmirroringpolicyid}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Retrieve a specific poll mirroring policy for a repository", - "operationId": "GetRepoPollMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "poll mirroring policy id", - "name": "pollmirroringpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PollMirroringPolicy" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_POLL_MIRRORING_POLICY: A poll mirroring policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PollMirroringPolicy" - } - } - } - }, - "put": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the local repository and credentials to the remote repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Updates a specific poll mirroring policy for a repository", - "operationId": "UpdateRepoPollMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "poll mirroring policy id", - "name": "pollmirroringpolicyid", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.UpdatePollMirroringPolicy" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PollMirroringPolicy" - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "INVALID_POLL_MIRRORING_POLICY: The given poll mirroring policy is invalid." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PollMirroringPolicy" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Deletes a specific poll mirroring policy for a repository", - "operationId": "DeleteRepoPollMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "poll mirroring policy id", - "name": "pollmirroringpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success or poll mirroring policy does not exist" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_POLL_MIRRORING_POLICY: A poll mirroring policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/promotionPolicies": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the source or target repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the promotion policies for a repository", - "operationId": "ListRepoPromotionPolicies", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to list promotion policies for a repository as a source or destination.", - "name": "source", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PromotionPolicy" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PromotionPolicy" - } - } - } - } - }, - "post": { - "description": "*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the source and target repository.\nRules for the policy can be on the following fields and their respective operators:\n- \"tag\"\n\t- \"eq\": equals\n\t- \"sw\": starts with\n\t- \"ew\": ends with\n\t- \"c\": contains\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"license.name\"\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"component.name\"\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"vulnerability_all\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_critical\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_major\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_minor\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"updated_at\"\n\t- \"bf\": before\n\t- \"af\": after\n- \"updated_at_duration\"\n\t- \"bf\": before\n\t- \"af\": after\n\nThe tag template is used to rename the tag in the target repository. The\nfollowing symbols are allowed:\n- \"%n\": The tag to promote (e.g. 1, 4.5, latest)\n- \"%A\": Day of the week (e.g. Sunday, Monday)\n- \"%a\": Day of the week, abbreviated (e.g. Sun, Mon , Tue)\n- \"%w\": Day of the week, as a number (e.g. 0, 1, 6)\n- \"%d\": Number for the day of the month (e.g. 01, 15, 31)\n- \"%B\": Month (e.g. January, December)\n- \"%b\": Month, abbreviated (e.g. Jan, Jun, Dec)\n- \"%m\": Month, as a number (e.g. 01, 06, 12)\n- \"%Y\": Year (e.g. 1999, 2015, 2048)\n- \"%y\": Year, two digits (e.g. 99, 15, 48)\n- \"%H\": Hour, in 24 hour format (e.g. 00, 12, 23)\n- \"%I\": Hour, in 12 hour format (e.g. 01, 10, 10)\n- \"%p\": Period of the day (e.g. AM, PM)\n- \"%M\": Minute (e.g. 00, 10, 59)\n- \"%S\": Second (e.g. 00, 10, 59)\n- \"%f\": Microsecond (e.g. 000000, 999999)\n- \"%Z\": Name for the timezone (e.g. UTC, PST, EST)\n- \"%j\": Day of the year (e.g. 001, 200, 366)\n- \"%W\": Week of the year (e.g. 00, 10 , 53)\n", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Create a promotion policy for a repository", - "operationId": "CreateRepoPromotionPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to evaluate the policy on creation", - "name": "initialEvaluation", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreatePromotionPolicy" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.PromotionPolicy" - } - }, - "400": { - "description": "INVALID_PROMOTION_POLICY: The given promotion policy is invalid." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/promotionPolicies/{promotionpolicyid}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the source or target repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Retrieve a specific promotion policy for a repository", - "operationId": "GetRepoPromotionPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "promotion policy id", - "name": "promotionpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PromotionPolicy" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_PROMOTION_POLICY: A promotion policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PromotionPolicy" - } - } - } - }, - "put": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the source and target repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Updates a specific promotion policy for a repository", - "operationId": "UpdateRepoPromotionPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "promotion policy id", - "name": "promotionpolicyid", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to evaluate the policy on creation", - "name": "initialEvaluation", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.UpdatePromotionPolicy" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PromotionPolicy" - } - }, - "400": { - "description": "INVALID_PROMOTION_POLICY: The given promotion policy is invalid." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_PROMOTION_POLICY: A promotion policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PromotionPolicy" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the source or target repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Deletes a specific promotion policy for a repository", - "operationId": "DeleteRepoPromotionPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "promotion policy id", - "name": "promotionpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success or promotion policy does not exist" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_PROMOTION_POLICY: A promotion policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/pruningPolicies": { - "get": { - "description": "*Authorization:* Client must be authenticated as a user who has visibility to the repository.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the pruning policies for a repository", - "operationId": "ListRepoPruningPolicies", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PruningPolicy" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PruningPolicy" - } - } - } - } - }, - "post": { - "description": "*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\nRules for the policy can be on the following fields and their respective operators:\n- \"tag\"\n\t- \"eq\": equals\n\t- \"sw\": starts with\n\t- \"ew\": ends with\n\t- \"c\": contains\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"license.name\"\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"component.name\"\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"vulnerability_all\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_critical\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_major\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_minor\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"updated_at\"\n\t- \"bf\": before\n\t- \"af\": after\n- \"updated_at_duration\"\n\t- \"bf\": before\n\t- \"af\": after\n", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Create a pruning policy for a repository", - "operationId": "CreateRepoPruningPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to evaluate the policy on creation", - "name": "initialEvaluation", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreatePruningPolicy" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.PruningPolicy" - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "INVALID_PRUNING_POLICY: The given pruning policy is invalid." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/pruningPolicies/test": { - "post": { - "description": "*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Test a pruning policy for a repository", - "operationId": "TestRepoPruningPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreatePruningPolicy" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ThinTag" - } - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "INVALID_PRUNING_POLICY: The given pruning policy is invalid." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ThinTag" - } - } - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/pruningPolicies/{pruningpolicyid}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Retrieve a specific pruning policy for a repository", - "operationId": "GetRepoPruningPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "pruning policy id", - "name": "pruningpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PruningPolicy" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_PRUNING_POLICY: A pruning policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PruningPolicy" - } - } - } - }, - "put": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Updates a specific pruning policy for a repository", - "operationId": "UpdateRepoPruningPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "pruning policy id", - "name": "pruningpolicyid", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to evaluate the policy on creation", - "name": "initialEvaluation", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.UpdatePruningPolicy" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PruningPolicy" - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "INVALID_PRUNING_POLICY: The given pruning policy is invalid." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PruningPolicy" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Deletes a specific pruning policy for a repository", - "operationId": "DeleteRepoPruningPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "pruning policy id", - "name": "pruningpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success or pruning policy does not exist" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_PRUNING_POLICY: A pruning policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/pushMirroringPolicies": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the push mirroring policies for a repository", - "operationId": "ListRepoPushMirroringPolicies", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PushMirroringPolicy" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.PushMirroringPolicy" - } - } - } - } - }, - "post": { - "description": "*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the local repository and credentials to the remote repository.\nRules for the policy can be on the following fields and their respective operators:\n- \"tag\"\n\t- \"eq\": equals\n\t- \"sw\": starts with\n\t- \"ew\": ends with\n\t- \"c\": contains\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"license.name\"\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"component.name\"\n\t- \"oo\": one of\n\t- \"noo\": not one of\n- \"vulnerability_all\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_critical\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_major\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"vulnerability_minor\"\n\t- \"gte\": greater than or equals\n\t- \"gt\": greater than\n\t- \"eq\": equals\n\t- \"neq\": not equals\n\t- \"lte\": less than or equals\n\t- \"lt\": less than\n- \"updated_at\"\n\t- \"bf\": before\n\t- \"af\": after\n- \"updated_at_duration\"\n\t- \"bf\": before\n\t- \"af\": after\n\nThe tag template is used to rename the tag in the target repository. The\nfollowing symbols are allowed:\n- \"%n\": The tag to promote (e.g. 1, 4.5, latest)\n- \"%A\": Day of the week (e.g. Sunday, Monday)\n- \"%a\": Day of the week, abbreviated (e.g. Sun, Mon , Tue)\n- \"%w\": Day of the week, as a number (e.g. 0, 1, 6)\n- \"%d\": Number for the day of the month (e.g. 01, 15, 31)\n- \"%B\": Month (e.g. January, December)\n- \"%b\": Month, abbreviated (e.g. Jan, Jun, Dec)\n- \"%m\": Month, as a number (e.g. 01, 06, 12)\n- \"%Y\": Year (e.g. 1999, 2015, 2048)\n- \"%y\": Year, two digits (e.g. 99, 15, 48)\n- \"%H\": Hour, in 24 hour format (e.g. 00, 12, 23)\n- \"%I\": Hour, in 12 hour format (e.g. 01, 10, 10)\n- \"%p\": Period of the day (e.g. AM, PM)\n- \"%M\": Minute (e.g. 00, 10, 59)\n- \"%S\": Second (e.g. 00, 10, 59)\n- \"%f\": Microsecond (e.g. 000000, 999999)\n- \"%Z\": Name for the timezone (e.g. UTC, PST, EST)\n- \"%j\": Day of the year (e.g. 001, 200, 366)\n- \"%W\": Week of the year (e.g. 00, 10 , 53)\n", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Create a push mirroring policy for a repository", - "operationId": "CreateRepoPushMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to evaluate the policy on creation", - "name": "initialEvaluation", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreatePushMirroringPolicy" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.PushMirroringPolicy" - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "INVALID_PUSH_MIRRORING_POLICY: The given push mirroring policy is invalid." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/pushMirroringPolicies/{pushmirroringpolicyid}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Retrieve a specific push mirroring policy for a repository", - "operationId": "GetRepoPushMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "push mirroring policy id", - "name": "pushmirroringpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PushMirroringPolicy" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_PUSH_MIRRORING_POLICY: A push mirroring policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PushMirroringPolicy" - } - } - } - }, - "put": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the local repository and credentials to the remote repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Updates a specific push mirroring policy for a repository", - "operationId": "UpdateRepoPushMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "push mirroring policy id", - "name": "pushmirroringpolicyid", - "in": "path", - "required": true - }, - { - "type": "boolean", - "default": true, - "description": "Whether to evaluate the policy on creation", - "name": "initialEvaluation", - "in": "query" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.UpdatePushMirroringPolicy" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PushMirroringPolicy" - } - }, - "400": { - "description": "REMOTE_REGISTRY_INVALID_PERMISSIONS: Remote user not authorized to access the requested resource." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "INVALID_PUSH_MIRRORING_POLICY: The given push mirroring policy is invalid." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.PushMirroringPolicy" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the local repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Deletes a specific push mirroring policy for a repository", - "operationId": "DeleteRepoPushMirroringPolicy", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "push mirroring policy id", - "name": "pushmirroringpolicyid", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success or push mirroring policy does not exist" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_PUSH_MIRRORING_POLICY: A push mirroring policy with the given id does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/tags": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the available tags for a repository", - "operationId": "ListRepoTags", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the manifest for each tag", - "name": "includeManifests", - "in": "query" - }, - { - "type": "string", - "description": "The domain used to push tags to DTR. Must be set to obtain/manipulate Notary related information", - "name": "domain", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ListTag" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.ListTag" - } - } - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/tags/{reference}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has visibility to the repository.\nIf the ref given is to a manifest list, multiple Tag objects will be returned, one for each manifest in the list.\nSimilarly if the ref is a digest the API will return all tags referencing that digest.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Retrieve a specific tag for a repository", - "operationId": "ListRepoTag", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "digest or tag for an image manifest", - "name": "reference", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The domain used to push tags to DTR. Must be set to obtain/manipulate Notary related information", - "name": "domain", - "in": "query" - }, - { - "type": "string", - "description": "Operating system of the tag", - "name": "os", - "in": "query" - }, - { - "type": "string", - "description": "Architecture of the tag", - "name": "arch", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Tag" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REF: A ref with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Tag" - } - } - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/tags/{tag}": { - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"write\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Delete a tag for a repository", - "operationId": "DeleteRepoTag", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "tag name", - "name": "tag", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The domain used to push tags to DTR. Must be set to obtain/manipulate Notary related information", - "name": "domain", - "in": "query" - } - ], - "responses": { - "204": { - "description": "success" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "409": { - "description": "TAG_IN_NOTARY: This tag is in notary and can't be deleted until it is removed from notary" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/tags/{tag}/promotion": { - "post": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"read\" level access to the source repository and \"write\" level access to the target repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Promotes a specific tag for a repository", - "operationId": "CreateRepoTagPromotion", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "tag name", - "name": "tag", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreatePromotion" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.Promotion" - } - }, - "400": { - "description": "INVALID_TAG_NAME: The given tag name is either too long or contains illegal characters." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/tags/{tag}/pushMirroring": { - "post": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"read\" level access to the local repository and \"write\" level access to the remote repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Mirrors a local tag by pushing to a remote repository", - "operationId": "CreateRepoTagPushMirroring", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "tag name", - "name": "tag", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.CreateMirroring" - } - } - ], - "responses": { - "201": { - "description": "success", - "schema": { - "$ref": "#/definitions/responses.Mirroring" - } - }, - "400": { - "description": "INVALID_TAG_NAME: The given tag name is either too long or contains illegal characters." - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TAG: A tag with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/teamAccess": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List teams granted access to an organization-owned repository", - "operationId": "ListRepoTeamAccess", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListRepoTeamAccess" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListRepoTeamAccess" - } - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/teamAccess/{teamname}": { - "put": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Set a team's access to an orgnization-owned repository", - "operationId": "GrantRepoTeamAccess", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "team name", - "name": "teamname", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.Access" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListRepoTeamAccess" - } - }, - "400": { - "description": "the team does not belong to the organization" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TEAM: A team with the given name does not exist in the organization." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListRepoTeamAccess" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "Revoke a team's acccess to an organization-owned repository", - "operationId": "RevokeRepoTeamAccess", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "team name", - "name": "teamname", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success or the team is not in the access list or there is no such team in the organization" - }, - "400": { - "description": "the repository is not owned by an organization" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TEAM: A team with the given name does not exist in the organization." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/repositories/{namespace}/{reponame}/webhooks": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the repository.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositories" - ], - "summary": "List the webhook subscriptions for a repository", - "operationId": "ListRepoWebhooks", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of repository", - "name": "reponame", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_REPOSITORY: A repository with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - } - } - } - }, - "/api/v0/repositoryNamespaces/{namespace}/teamAccess": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as an admin or a member of the organization.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositoryNamespaces" - ], - "summary": "List teams granted access to an organization-owned namespace of repositories", - "operationId": "ListRepoNamespaceTeamAccess", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "The ID of the first record on the page", - "name": "pageStart", - "in": "query" - }, - { - "type": "integer", - "default": 10, - "description": "Maximum number of results to return", - "name": "pageSize", - "in": "query" - }, - { - "type": "boolean", - "default": false, - "description": "Whether to include the resource count in the response header", - "name": "count", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListRepoNamespaceTeamAccess" - } - }, - "400": { - "description": "the namespace is not owned by an organization" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_ACCOUNT: An account with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.ListRepoNamespaceTeamAccess" - } - } - } - } - }, - "/api/v0/repositoryNamespaces/{namespace}/teamAccess/{teamname}": { - "get": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level\naccess to the namespace or is a member of the team.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositoryNamespaces" - ], - "summary": "Get a team's granted access to an organization-owned namespace of repositories", - "operationId": "GetRepoNamespaceTeamAccess", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "team name", - "name": "teamname", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.NamespaceTeamAccess" - } - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_NAMESPACE_TEAM_ACCESS: An access grant for the given team in the given namespace does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.NamespaceTeamAccess" - } - } - } - }, - "put": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the namespace.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositoryNamespaces" - ], - "summary": "Set a team's access to an organization-owned namespace of repositories", - "operationId": "GrantRepoNamespaceTeamAccess", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "team name", - "name": "teamname", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.Access" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.NamespaceTeamAccess" - } - }, - "400": { - "description": "the team does not belong to the owning organization" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TEAM: A team with the given name does not exist in the organization." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "$ref": "#/definitions/responses.NamespaceTeamAccess" - } - } - } - }, - "delete": { - "description": "\n*Authorization:* Client must be authenticated as a user who has \"admin\" level access to the namespace.\n\t\t", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "repositoryNamespaces" - ], - "summary": "Revoke a team's access to an organization-owned namespace of repositories", - "operationId": "RevokeRepoNamespaceTeamAccess", - "parameters": [ - { - "type": "string", - "description": "namespace/owner of repository", - "name": "namespace", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "team name", - "name": "teamname", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "success or the team does not exist in the access list or there is no such team in the organization" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_TEAM: A team with the given name does not exist in the organization." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - } - } - } - }, - "/api/v0/webhooks": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "webhooks" - ], - "summary": "List Webhooks", - "operationId": "ListWebhooks", - "parameters": [ - { - "type": "string", - "default": "any", - "description": "The type of webhook to list", - "name": "webhookType", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - }, - "400": { - "description": "INVALID_JSON: Unable to parse JSON" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - } - } - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "webhooks" - ], - "summary": "Create Webhook", - "operationId": "CreateWebhook", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.Webhook" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - }, - "400": { - "description": "INVALID_JSON: Unable to parse JSON" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_ACCOUNT: An account with the given name does not exist." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - } - } - } - }, - "/api/v0/webhooks/test": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "webhooks" - ], - "summary": "Test Webhook", - "operationId": "TestWebhook", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.WebhookTestPayload" - } - } - ], - "responses": { - "200": { - "description": "OK" - }, - "400": { - "description": "INVALID_JSON: Unable to parse JSON" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK" - } - } - } - }, - "/api/v0/webhooks/update": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "webhooks" - ], - "summary": "Update Webhook", - "operationId": "UpdateWebhook", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/forms.WebhookUpdate" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - }, - "400": { - "description": "INVALID_JSON: Unable to parse JSON" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Webhook" - } - } - } - } - } - }, - "/api/v0/webhooks/{webhook}": { - "delete": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "webhooks" - ], - "summary": "Delete Webhook", - "operationId": "DeleteWebhook", - "parameters": [ - { - "type": "string", - "description": "webhook subscription ID", - "name": "webhook", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK" - }, - "401": { - "description": "NOT_AUTHENTICATED: The client is not authenticated." - }, - "403": { - "description": "NOT_AUTHORIZED: The client is not authorized." - }, - "404": { - "description": "NO_SUCH_WEBHOOK: A webhook subscription with the given name does not exist for the given repository." - }, - "405": { - "description": "NOT_ALLOWED: Method Not Allowed" - }, - "406": { - "description": "NOT_ACCEPTABLE: Not Acceptable" - }, - "415": { - "description": "UNSUPPORTED_MEDIA_TYPE: Unsupported Media Type" - }, - "default": { - "description": "OK" - } - } - } - }, - "/api/v0/workers": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "workers" - ], - "summary": "List all workers", - "operationId": "ListWorkers", - "responses": { - "200": { - "description": "Success, list of workers returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Workers" - } - }, - "default": { - "description": "Success, list of workers returned.", - "schema": { - "$ref": "#/definitions/tmpresponses.Workers" - } - } - } - } - }, - "/api/v0/workers/{id}/capacity": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "workers" - ], - "summary": "Update the capacity for a worker", - "operationId": "UpdateWorkerCapacity", - "parameters": [ - { - "type": "string", - "description": "ID of worker to update", - "name": "id", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/tmpforms.UpdateWorkerCapacity" - } - } - ], - "responses": { - "202": { - "description": "Success." - } - } - } - } - }, - "definitions": { - "forms.Access": { - "required": [ - "accessLevel" - ], - "properties": { - "accessLevel": { - "type": "string", - "enum": [ - "read-only", - "read-write", - "admin" - ] - } - } - }, - "forms.CreateAPIToken": { - "properties": { - "tokenLabel": { - "type": "string" - } - } - }, - "forms.CreateContentCache": { - "required": [ - "name", - "host" - ], - "properties": { - "host": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "forms.CreateMirroring": { - "required": [ - "remoteHost", - "remoteRepository", - "remoteCA", - "skipTLSVerification", - "remoteTag", - "username", - "password", - "authToken" - ], - "properties": { - "authToken": { - "type": "string" - }, - "password": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "remoteTag": { - "type": "string" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "username": { - "type": "string" - } - } - }, - "forms.CreatePollMirroringPolicy": { - "required": [ - "remoteHost", - "remoteRepository", - "remoteCA", - "skipTLSVerification", - "enabled", - "username", - "password", - "authToken" - ], - "properties": { - "authToken": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "username": { - "type": "string" - } - } - }, - "forms.CreatePromotion": { - "required": [ - "targetRepository", - "targetTag" - ], - "properties": { - "targetRepository": { - "type": "string" - }, - "targetTag": { - "type": "string" - } - } - }, - "forms.CreatePromotionPolicy": { - "required": [ - "rules", - "targetRepository", - "tagTemplate", - "enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - }, - "tagTemplate": { - "type": "string" - }, - "targetRepository": { - "type": "string" - } - } - }, - "forms.CreatePruningPolicy": { - "required": [ - "rules", - "enabled" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - } - } - }, - "forms.CreatePushMirroringPolicy": { - "required": [ - "rules", - "remoteHost", - "remoteRepository", - "remoteCA", - "skipTLSVerification", - "tagTemplate", - "enabled", - "username", - "password", - "authToken" - ], - "properties": { - "authToken": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tagTemplate": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "forms.CreateRemoteRegistryCheck": { - "required": [ - "remoteHost", - "remoteRepository", - "remoteCA", - "skipTLSVerification", - "username", - "password", - "authToken" - ], - "properties": { - "authToken": { - "type": "string" - }, - "password": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "username": { - "type": "string" - } - } - }, - "forms.CreateRepo": { - "required": [ - "name", - "shortDescription", - "longDescription", - "scanOnPush", - "immutableTags", - "enableManifestLists", - "tagLimit" - ], - "properties": { - "enableManifestLists": { - "type": "boolean" - }, - "immutableTags": { - "type": "boolean" - }, - "longDescription": { - "type": "string" - }, - "name": { - "type": "string" - }, - "scanOnPush": { - "type": "boolean" - }, - "shortDescription": { - "type": "string" - }, - "tagLimit": { - "type": "integer", - "format": "integer" - }, - "visibility": { - "type": "string", - "enum": [ - "public", - "private" - ] - } - } - }, - "forms.DeleteMirroringPolicyIDs": { - "required": [ - "id" - ], - "properties": { - "id": { - "type": "string" - } - } - }, - "forms.EmptyForm": {}, - "forms.Image": { - "required": [ - "name", - "digest" - ], - "properties": { - "digest": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "forms.ImagesForm": { - "required": [ - "images" - ], - "properties": { - "images": { - "type": "array", - "items": { - "$ref": "#/definitions/forms.Image" - } - } - } - }, - "forms.ScanOptions": { - "required": [ - "scan", - "check" - ], - "properties": { - "check": { - "type": "boolean" - }, - "scan": { - "type": "boolean" - } - } - }, - "forms.Settings": { - "required": [ - "dtrHost", - "sso", - "createRepositoryOnPush", - "disableUpgrades", - "reportAnalytics", - "anonymizeAnalytics", - "disableBackupWarning", - "webTLSCert", - "webTLSKey", - "webTLSCA", - "scanningEnabled", - "scanningSyncOnline", - "scanningDeadline", - "scanningEnableAutoRecheck", - "jobHistoryCompactionEnabled", - "jobHistoryToKeep", - "jobHistoryMaxAge", - "repoEventHistoryCompactionEnabled", - "repoEventHistoryToKeep", - "repoEventHistoryMaxAge", - "readOnlyRegistry" - ], - "properties": { - "anonymizeAnalytics": { - "type": "boolean" - }, - "createRepositoryOnPush": { - "type": "boolean" - }, - "disableBackupWarning": { - "type": "boolean" - }, - "disableUpgrades": { - "type": "boolean" - }, - "dtrHost": { - "type": "string" - }, - "jobHistoryCompactionEnabled": { - "type": "boolean" - }, - "jobHistoryMaxAge": { - "type": "string" - }, - "jobHistoryToKeep": { - "type": "integer", - "format": "int64" - }, - "readOnlyRegistry": { - "type": "boolean" - }, - "repoEventHistoryCompactionEnabled": { - "type": "boolean" - }, - "repoEventHistoryMaxAge": { - "type": "string" - }, - "repoEventHistoryToKeep": { - "type": "integer", - "format": "int64" - }, - "reportAnalytics": { - "type": "boolean" - }, - "scanningDeadline": { - "type": "integer" - }, - "scanningEnableAutoRecheck": { - "type": "boolean" - }, - "scanningEnabled": { - "type": "boolean" - }, - "scanningSyncOnline": { - "type": "boolean" - }, - "sso": { - "type": "boolean" - }, - "webTLSCA": { - "type": "string" - }, - "webTLSCert": { - "type": "string" - }, - "webTLSKey": { - "type": "string" - } - } - }, - "forms.ToggleScanOnPush": { - "required": [ - "scanOnPush" - ], - "properties": { - "scanOnPush": { - "type": "boolean" - } - } - }, - "forms.UpdateAPIToken": { - "properties": { - "isActive": { - "type": "boolean" - }, - "tokenLabel": { - "type": "string" - } - } - }, - "forms.UpdatePollMirroringPolicy": { - "properties": { - "authToken": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "username": { - "type": "string" - } - } - }, - "forms.UpdatePromotionPolicy": { - "properties": { - "enabled": { - "type": "boolean" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - }, - "tagTemplate": { - "type": "string" - }, - "targetRepository": { - "type": "string" - } - } - }, - "forms.UpdatePruningPolicy": { - "properties": { - "enabled": { - "type": "boolean" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - } - } - }, - "forms.UpdatePushMirroringPolicy": { - "properties": { - "authToken": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "password": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tagTemplate": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "forms.UpdateRepo": { - "required": [ - "immutableTags" - ], - "properties": { - "enableManifestLists": { - "type": "boolean" - }, - "immutableTags": { - "type": "boolean" - }, - "longDescription": { - "type": "string" - }, - "scanOnPush": { - "type": "boolean" - }, - "shortDescription": { - "type": "string" - }, - "tagLimit": { - "type": "integer", - "format": "integer" - }, - "visibility": { - "type": "string", - "enum": [ - "public", - "private" - ] - } - } - }, - "forms.UserSettings": { - "properties": { - "contentCacheUUID": { - "type": "string" - } - } - }, - "forms.VulnOverrideOption": { - "required": [ - "component", - "componentVersion", - "cve", - "notes" - ], - "properties": { - "component": { - "type": "string" - }, - "componentVersion": { - "type": "string" - }, - "cve": { - "type": "string" - }, - "notes": { - "type": "string" - } - } - }, - "forms.Webhook": { - "required": [ - "endpoint", - "tlsCert", - "skipTLSVerification" - ], - "properties": { - "endpoint": { - "type": "string" - }, - "key": { - "type": "string" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tlsCert": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "TAG_PUSH", - "TAG_PULL", - "TAG_DELETE", - "PROMOTION", - "PUSH_MIRRORING", - "POLL_MIRRORING", - "MANIFEST_PUSH", - "MANIFEST_PULL", - "MANIFEST_DELETE", - "REPO_EVENT", - "SCAN_COMPLETED", - "SCAN_FAILED", - "SCANNER_UPDATE_COMPLETED" - ] - } - } - }, - "forms.WebhookTestPayload": { - "required": [ - "type", - "endpoint", - "tlsCert", - "skipTLSVerification" - ], - "properties": { - "endpoint": { - "type": "string" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tlsCert": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "forms.WebhookUpdate": { - "required": [ - "id", - "inactive", - "tlsCert", - "skipTLSVerification" - ], - "properties": { - "id": { - "type": "string" - }, - "inactive": { - "type": "boolean" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tlsCert": { - "type": "string" - } - } - }, - "responses.APIToken": { - "required": [ - "hashedToken", - "tokenLabel", - "isActive", - "lastUsed", - "createdAt", - "generatedBy", - "creatorUa" - ], - "properties": { - "createdAt": { - "type": "string", - "format": "date-time" - }, - "creatorUa": { - "type": "string" - }, - "generatedBy": { - "type": "string" - }, - "hashedToken": { - "type": "string" - }, - "isActive": { - "type": "boolean" - }, - "lastUsed": { - "type": "string", - "format": "date-time" - }, - "tokenLabel": { - "type": "string" - } - } - }, - "responses.Account": { - "required": [ - "name", - "id", - "fullName", - "isOrg" - ], - "properties": { - "fullName": { - "description": "Full Name of the account", - "type": "string" - }, - "id": { - "description": "ID of the account", - "type": "string" - }, - "isActive": { - "description": "Whether the user is active and can login (users only)", - "type": "boolean" - }, - "isAdmin": { - "description": "Whether the user is a system admin (users only)", - "type": "boolean" - }, - "isImported": { - "description": "Whether the user was imported from an upstream identity provider", - "type": "boolean" - }, - "isOrg": { - "description": "Whether the account is an organization (or user)", - "type": "boolean" - }, - "membersCount": { - "description": "The number of members of the organization", - "type": "integer", - "format": "int32" - }, - "name": { - "description": "Name of the account", - "type": "string" - }, - "teamsCount": { - "description": "The number of teams in the organization", - "type": "integer", - "format": "int32" - } - } - }, - "responses.Alert": { - "required": [ - "message" - ], - "properties": { - "class": { - "type": "string" - }, - "id": { - "type": "string" - }, - "img": { - "type": "string" - }, - "message": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "responses.Autocomplete": { - "properties": { - "accountResults": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Account" - } - }, - "repositoryResults": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Repository" - } - } - } - }, - "responses.ClusterStatus": { - "required": [ - "rethink_system_tables", - "replica_health", - "replica_timestamp", - "replica_readonly", - "gc_lock_holder" - ], - "properties": { - "gc_lock_holder": { - "type": "string" - }, - "replica_health": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "replica_readonly": { - "type": "object", - "additionalProperties": { - "type": "boolean" - } - }, - "replica_timestamp": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "rethink_system_tables": { - "type": "object" - } - } - }, - "responses.Component": { - "required": [ - "component", - "version", - "vulns", - "fullpath" - ], - "properties": { - "component": { - "type": "string" - }, - "fullpath": { - "type": "array", - "items": { - "type": "string" - } - }, - "license": { - "$ref": "#/definitions/responses.License" - }, - "version": { - "type": "string" - }, - "vulns": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.VulnerabilityDetails" - } - } - } - }, - "responses.ContentCache": { - "required": [ - "id", - "name", - "host" - ], - "properties": { - "host": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "responses.DetailedSummary": { - "required": [ - "sha256sum" - ], - "properties": { - "components": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Component" - } - }, - "sha256sum": { - "type": "string" - } - } - }, - "responses.DockerRepository": { - "required": [ - "description", - "is_official", - "is_trusted", - "name", - "star_count" - ], - "properties": { - "description": { - "type": "string" - }, - "is_official": { - "type": "boolean" - }, - "is_trusted": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "star_count": { - "type": "integer", - "format": "int32" - } - } - }, - "responses.DockerSearch": { - "required": [ - "num_results", - "query", - "results" - ], - "properties": { - "num_results": { - "type": "integer", - "format": "int32" - }, - "query": { - "type": "string" - }, - "results": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.DockerRepository" - } - } - } - }, - "responses.DockerfileLine": { - "required": [ - "line", - "layerDigest", - "size", - "isEmpty" - ], - "properties": { - "isEmpty": { - "type": "boolean" - }, - "layerDigest": { - "type": "string" - }, - "line": { - "type": "string" - }, - "mediaType": { - "type": "string" - }, - "size": { - "type": "integer", - "format": "int64" - }, - "urls": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "responses.Events": { - "required": [ - "events" - ], - "properties": { - "events": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.Event" - } - } - } - }, - "responses.Features": { - "required": [ - "scanningEnabled", - "scanningLicensed", - "promotionLicensed", - "mirroringLicensed", - "metadataStoreOptedIn", - "onlineGCEnabled", - "db_version", - "ucpHost" - ], - "properties": { - "db_version": { - "type": "integer", - "format": "int32" - }, - "metadataStoreOptedIn": { - "type": "boolean" - }, - "mirroringLicensed": { - "type": "boolean" - }, - "onlineGCEnabled": { - "type": "boolean" - }, - "promotionLicensed": { - "type": "boolean" - }, - "scanningEnabled": { - "type": "boolean" - }, - "scanningLicensed": { - "type": "boolean" - }, - "ucpHost": { - "type": "string" - } - } - }, - "responses.Language": { - "required": [ - "language" - ], - "properties": { - "language": { - "type": "string" - } - } - }, - "responses.LayerVulnOverride": { - "required": [ - "pk", - "digest", - "component", - "componentVersion", - "cve", - "notes" - ], - "properties": { - "component": { - "type": "string" - }, - "componentVersion": { - "type": "string" - }, - "cve": { - "type": "string" - }, - "digest": { - "type": "string" - }, - "notes": { - "type": "string" - }, - "pk": { - "type": "string" - } - } - }, - "responses.License": { - "required": [ - "name", - "type", - "url" - ], - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "responses.ListRepoNamespaceTeamAccess": { - "required": [ - "namespace", - "teamAccessList" - ], - "properties": { - "namespace": { - "type": "string" - }, - "teamAccessList": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.TeamAccess" - } - } - } - }, - "responses.ListRepoTeamAccess": { - "required": [ - "repository", - "teamAccessList" - ], - "properties": { - "repository": { - "$ref": "#/definitions/responses.Repository" - }, - "teamAccessList": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.TeamAccess" - } - } - } - }, - "responses.ListTag": { - "required": [ - "name", - "digest", - "author", - "updatedAt", - "createdAt", - "hashMismatch", - "inNotary", - "manifest" - ], - "properties": { - "author": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "digest": { - "type": "string" - }, - "hashMismatch": { - "description": "true if the hashes from notary and registry don't match", - "type": "boolean" - }, - "inNotary": { - "description": "true if the tag exists in Notary", - "type": "boolean" - }, - "manifest": { - "$ref": "#/definitions/responses.Manifest" - }, - "mirroring": { - "$ref": "#/definitions/responses.Mirroring" - }, - "name": { - "type": "string" - }, - "promotion": { - "$ref": "#/definitions/responses.Promotion" - }, - "updatedAt": { - "type": "string", - "format": "date-time" - } - } - }, - "responses.ListTeamRepoAccess": { - "required": [ - "team", - "repositoryAccessList" - ], - "properties": { - "repositoryAccessList": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.RepoAccess" - } - }, - "team": { - "$ref": "#/definitions/responses.Team" - } - } - }, - "responses.Manifest": { - "required": [ - "digest" - ], - "properties": { - "architecture": { - "type": "string" - }, - "author": { - "type": "string" - }, - "configDigest": { - "type": "string" - }, - "configMediaType": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "digest": { - "type": "string" - }, - "dockerfile": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.DockerfileLine" - } - }, - "mediaType": { - "type": "string" - }, - "os": { - "type": "string" - }, - "osVersion": { - "type": "string" - }, - "size": { - "type": "integer", - "format": "int64" - } - } - }, - "responses.Mirroring": { - "required": [ - "mirroringPolicyID", - "digest", - "remoteRepository", - "remoteTag" - ], - "properties": { - "digest": { - "type": "string" - }, - "mirroringPolicyID": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "remoteTag": { - "type": "string" - } - } - }, - "responses.MirroringPolicy": { - "required": [ - "id", - "mirroringType", - "username", - "localRepository", - "remoteHost", - "remoteRepository", - "remoteCA", - "skipTLSVerification", - "enabled", - "lastMirroredAt", - "lastStatus" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "lastMirroredAt": { - "type": "string" - }, - "lastStatus": { - "$ref": "#/definitions/schema.MirroringStatus" - }, - "localRepository": { - "type": "string" - }, - "mirroringType": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tagTemplate": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "responses.NamespaceTeamAccess": { - "required": [ - "accessLevel", - "team", - "namespace" - ], - "properties": { - "accessLevel": { - "type": "string", - "enum": [ - "read-only", - "read-write", - "admin" - ] - }, - "namespace": { - "type": "string" - }, - "team": { - "$ref": "#/definitions/responses.Team" - } - } - }, - "responses.NautilusStatus": { - "required": [ - "state", - "scanner_version", - "scannerUpdatedAt", - "db_version", - "db_updated_at", - "lastDBUpdateFailed", - "lastVulnOverridesDBUpdateFailed" - ], - "properties": { - "db_updated_at": { - "type": "string", - "format": "date-time" - }, - "db_version": { - "type": "integer", - "format": "int32" - }, - "lastDBUpdateFailed": { - "type": "boolean" - }, - "lastVulnOverridesDBUpdateFailed": { - "type": "boolean" - }, - "replicas": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/schema.ScannerFingerprint" - } - }, - "scannerUpdatedAt": { - "type": "string", - "format": "date-time" - }, - "scanner_version": { - "type": "integer", - "format": "int32" - }, - "state": { - "type": "integer", - "format": "int32" - } - } - }, - "responses.NewAPIToken": { - "required": [ - "token", - "hashedToken", - "tokenLabel", - "isActive", - "lastUsed", - "createdAt", - "generatedBy", - "creatorUa" - ], - "properties": { - "createdAt": { - "type": "string", - "format": "date-time" - }, - "creatorUa": { - "type": "string" - }, - "generatedBy": { - "type": "string" - }, - "hashedToken": { - "type": "string" - }, - "isActive": { - "type": "boolean" - }, - "lastUsed": { - "type": "string", - "format": "date-time" - }, - "token": { - "type": "string" - }, - "tokenLabel": { - "type": "string" - } - } - }, - "responses.Note": { - "required": [ - "reason", - "type" - ], - "properties": { - "reason": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "responses.OldScanSummary": { - "required": [ - "namespace", - "reponame", - "tag", - "critical", - "major", - "minor", - "last_scan_status", - "check_completed_at", - "should_rescan", - "has_foreign_layers" - ], - "properties": { - "check_completed_at": { - "type": "string", - "format": "date-time" - }, - "critical": { - "type": "integer", - "format": "int32" - }, - "has_foreign_layers": { - "type": "boolean" - }, - "last_scan_status": { - "type": "integer", - "format": "int32" - }, - "layer_details": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.DetailedSummary" - } - }, - "major": { - "type": "integer", - "format": "int32" - }, - "minor": { - "type": "integer", - "format": "int32" - }, - "namespace": { - "type": "string" - }, - "reponame": { - "type": "string" - }, - "should_rescan": { - "type": "boolean" - }, - "tag": { - "type": "string" - } - } - }, - "responses.PollMirroringPolicy": { - "required": [ - "id", - "username", - "localRepository", - "remoteHost", - "remoteRepository", - "remoteCA", - "skipTLSVerification", - "enabled", - "lastMirroredAt", - "lastStatus" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "lastMirroredAt": { - "type": "string" - }, - "lastStatus": { - "$ref": "#/definitions/schema.MirroringStatus" - }, - "localRepository": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "username": { - "type": "string" - } - } - }, - "responses.Promotion": { - "required": [ - "promotionPolicyID", - "string", - "sourceRepository", - "sourceTag" - ], - "properties": { - "promotionPolicyID": { - "type": "string" - }, - "sourceRepository": { - "type": "string" - }, - "sourceTag": { - "type": "string" - }, - "string": { - "type": "string" - } - } - }, - "responses.PromotionPolicy": { - "required": [ - "id", - "rules", - "sourceRepository", - "targetRepository", - "tagTemplate", - "enabled", - "lastPromotedAt" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "lastPromotedAt": { - "type": "string", - "format": "date-time" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - }, - "sourceRepository": { - "type": "string" - }, - "tagTemplate": { - "type": "string" - }, - "targetRepository": { - "type": "string" - } - } - }, - "responses.PruningPolicy": { - "required": [ - "id", - "rules", - "repository", - "enabled", - "lastPrunedAt" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "lastPrunedAt": { - "type": "string" - }, - "repository": { - "type": "string" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - } - } - }, - "responses.PushMirroringPolicy": { - "required": [ - "id", - "rules", - "username", - "localRepository", - "remoteHost", - "remoteRepository", - "remoteCA", - "skipTLSVerification", - "tagTemplate", - "enabled", - "lastMirroredAt", - "lastStatus" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "lastMirroredAt": { - "type": "string" - }, - "lastStatus": { - "$ref": "#/definitions/schema.MirroringStatus" - }, - "localRepository": { - "type": "string" - }, - "remoteCA": { - "type": "string" - }, - "remoteHost": { - "type": "string" - }, - "remoteRepository": { - "type": "string" - }, - "rules": { - "type": "array", - "items": { - "$ref": "#/definitions/ruleengine.Rule" - } - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tagTemplate": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "responses.RemoteRegistryCheck": { - "required": [ - "registryType", - "permissions" - ], - "properties": { - "permissions": { - "$ref": "#/definitions/responses.RemoteRepositoryPermissions" - }, - "registryType": { - "type": "string" - } - } - }, - "responses.RemoteRepositoryPermissions": { - "required": [ - "read", - "write" - ], - "properties": { - "read": { - "type": "boolean" - }, - "write": { - "type": "boolean" - } - } - }, - "responses.ReplicaSettings": { - "required": [ - "HTTPPort", - "HTTPSPort", - "node" - ], - "properties": { - "HTTPPort": { - "type": "integer" - }, - "HTTPSPort": { - "type": "integer" - }, - "node": { - "type": "string" - } - } - }, - "responses.RepoAccess": { - "required": [ - "accessLevel", - "repository" - ], - "properties": { - "accessLevel": { - "type": "string", - "enum": [ - "read-only", - "read-write", - "admin" - ] - }, - "repository": { - "$ref": "#/definitions/responses.Repository" - } - } - }, - "responses.RepoUserAccess": { - "required": [ - "accessLevel", - "user", - "repository" - ], - "properties": { - "accessLevel": { - "type": "string", - "enum": [ - "read-only", - "read-write", - "admin" - ] - }, - "repository": { - "$ref": "#/definitions/responses.Repository" - }, - "user": { - "$ref": "#/definitions/responses.Account" - } - } - }, - "responses.Repositories": { - "required": [ - "repositories" - ], - "properties": { - "repositories": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Repository" - } - } - } - }, - "responses.Repository": { - "required": [ - "id", - "namespace", - "namespaceType", - "name", - "shortDescription", - "visibility", - "scanOnPush", - "immutableTags", - "enableManifestLists", - "pulls", - "pushes", - "tagLimit" - ], - "properties": { - "enableManifestLists": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "immutableTags": { - "type": "boolean" - }, - "longDescription": { - "type": "string" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "namespaceType": { - "type": "string", - "enum": [ - "user", - "organization" - ] - }, - "pulls": { - "type": "integer", - "format": "integer" - }, - "pushes": { - "type": "integer", - "format": "integer" - }, - "scanOnPush": { - "type": "boolean" - }, - "shortDescription": { - "type": "string" - }, - "tagLimit": { - "type": "integer", - "format": "integer" - }, - "visibility": { - "type": "string", - "enum": [ - "public", - "private" - ] - } - } - }, - "responses.ScanSummary": { - "required": [ - "scannedImage", - "shouldRescan" - ], - "properties": { - "scanStatus": { - "type": "integer", - "format": "int32" - }, - "scannedImage": { - "$ref": "#/definitions/schema.ScannedImage" - }, - "shouldRescan": { - "type": "boolean" - } - } - }, - "responses.Settings": { - "required": [ - "dtrHost", - "sso", - "createRepositoryOnPush", - "replicaSettings", - "httpProxy", - "httpsProxy", - "noProxy", - "disableUpgrades", - "reportAnalytics", - "anonymizeAnalytics", - "disableBackupWarning", - "logProtocol", - "logHost", - "logLevel", - "webTLSCert", - "webTLSCA", - "replicaID", - "scanningEnabled", - "scanningSyncOnline", - "scanningDeadline", - "scanningEnableAutoRecheck", - "jobHistoryCompactionEnabled", - "jobHistoryToKeep", - "jobHistoryMaxAge", - "repoEventHistoryCompactionEnabled", - "repoEventHistoryToKeep", - "repoEventHistoryMaxAge", - "storageVolume", - "nfsHost", - "nfsPath", - "readOnlyRegistry" - ], - "properties": { - "anonymizeAnalytics": { - "type": "boolean" - }, - "createRepositoryOnPush": { - "type": "boolean" - }, - "disableBackupWarning": { - "type": "boolean" - }, - "disableUpgrades": { - "type": "boolean" - }, - "dtrHost": { - "type": "string" - }, - "httpProxy": { - "type": "string" - }, - "httpsProxy": { - "type": "string" - }, - "jobHistoryCompactionEnabled": { - "type": "boolean" - }, - "jobHistoryMaxAge": { - "type": "string" - }, - "jobHistoryToKeep": { - "type": "integer", - "format": "int64" - }, - "logHost": { - "type": "string" - }, - "logLevel": { - "type": "string" - }, - "logProtocol": { - "type": "string" - }, - "nfsHost": { - "type": "string" - }, - "nfsPath": { - "type": "string" - }, - "noProxy": { - "type": "string" - }, - "readOnlyRegistry": { - "type": "boolean" - }, - "replicaID": { - "type": "string" - }, - "replicaSettings": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/responses.ReplicaSettings" - } - }, - "repoEventHistoryCompactionEnabled": { - "type": "boolean" - }, - "repoEventHistoryMaxAge": { - "type": "string" - }, - "repoEventHistoryToKeep": { - "type": "integer", - "format": "int64" - }, - "reportAnalytics": { - "type": "boolean" - }, - "scanningDeadline": { - "type": "integer" - }, - "scanningEnableAutoRecheck": { - "type": "boolean" - }, - "scanningEnabled": { - "type": "boolean" - }, - "scanningSyncOnline": { - "type": "boolean" - }, - "sso": { - "type": "boolean" - }, - "storageVolume": { - "type": "string" - }, - "webTLSCA": { - "type": "string" - }, - "webTLSCert": { - "type": "string" - } - } - }, - "responses.Tag": { - "required": [ - "digest", - "createdAt", - "inNotary", - "manifest", - "name", - "author", - "updatedAt", - "hashMismatch" - ], - "properties": { - "author": { - "type": "string" - }, - "components": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.ScannerComponent" - } - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "digest": { - "type": "string" - }, - "hashMismatch": { - "description": "true if the hashes from notary and registry don't match", - "type": "boolean" - }, - "inNotary": { - "description": "true if the tag exists in Notary", - "type": "boolean" - }, - "licenses": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.ScannerLicense" - } - }, - "manifest": { - "$ref": "#/definitions/responses.Manifest" - }, - "mirroring": { - "$ref": "#/definitions/responses.Mirroring" - }, - "name": { - "type": "string" - }, - "promotion": { - "$ref": "#/definitions/responses.Promotion" - }, - "updatedAt": { - "type": "string", - "format": "date-time" - }, - "vuln_summary": { - "$ref": "#/definitions/responses.OldScanSummary" - } - } - }, - "responses.Team": { - "required": [ - "id", - "clientUserIsMember" - ], - "properties": { - "clientUserIsMember": { - "type": "boolean" - }, - "id": { - "type": "string" - } - } - }, - "responses.TeamAccess": { - "required": [ - "accessLevel", - "team" - ], - "properties": { - "accessLevel": { - "type": "string", - "enum": [ - "read-only", - "read-write", - "admin" - ] - }, - "team": { - "$ref": "#/definitions/responses.Team" - } - } - }, - "responses.ThinScanSummaries": { - "required": [ - "images" - ], - "properties": { - "images": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/schema.ScannerVulnCount" - } - } - } - }, - "responses.ThinTag": { - "required": [ - "name", - "digest" - ], - "properties": { - "digest": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "responses.UserSettings": { - "required": [ - "ContentCacheUUID" - ], - "properties": { - "ContentCacheUUID": { - "type": "string" - } - } - }, - "responses.Vulnerability": { - "required": [ - "cve", - "cvss", - "summary" - ], - "properties": { - "cve": { - "type": "string" - }, - "cvss": { - "type": "number", - "format": "float" - }, - "summary": { - "type": "string" - } - } - }, - "responses.VulnerabilityDetails": { - "required": [ - "vuln", - "exact", - "notes" - ], - "properties": { - "exact": { - "type": "boolean" - }, - "notes": { - "type": "array", - "items": { - "$ref": "#/definitions/responses.Note" - } - }, - "vuln": { - "$ref": "#/definitions/responses.Vulnerability" - } - } - }, - "responses.Webhook": { - "required": [ - "id", - "type", - "key", - "endpoint", - "authorID", - "createdAt", - "inactive", - "tlsCert", - "skipTLSVerification" - ], - "properties": { - "authorID": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "endpoint": { - "type": "string" - }, - "id": { - "type": "string" - }, - "inactive": { - "type": "boolean" - }, - "key": { - "type": "string" - }, - "lastSuccessfulAt": { - "type": "string", - "format": "date-time" - }, - "skipTLSVerification": { - "type": "boolean" - }, - "tlsCert": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "ruleengine.Rule": { - "properties": { - "field": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "values": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "schema.Event": { - "required": [ - "id", - "publishedAt", - "actor", - "actorType", - "type", - "object", - "repository" - ], - "properties": { - "actor": { - "type": "string" - }, - "actorType": { - "type": "string" - }, - "id": { - "type": "string" - }, - "object": { - "$ref": "#/definitions/schema.Object" - }, - "publishedAt": { - "type": "string", - "format": "date-time" - }, - "repository": { - "type": "string" - }, - "target": { - "$ref": "#/definitions/schema.Object" - }, - "type": { - "type": "string" - } - } - }, - "schema.LayerVulnOverride": { - "required": [ - "pk", - "digest", - "component", - "componentVersion", - "cve", - "notes" - ], - "properties": { - "component": { - "type": "string" - }, - "componentVersion": { - "type": "string" - }, - "cve": { - "type": "string" - }, - "digest": { - "type": "string" - }, - "notes": { - "type": "string" - }, - "pk": { - "type": "string" - } - } - }, - "schema.MirroringStatus": { - "required": [ - "code", - "detail", - "timestamp" - ], - "properties": { - "code": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "timestamp": { - "type": "string", - "format": "date-time" - } - } - }, - "schema.Object": { - "required": [ - "id", - "type" - ], - "properties": { - "content": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "schema.ScannedImage": { - "required": [ - "pk", - "namespace", - "repository", - "tag", - "manifestDigest", - "totalVulnCount", - "licenses", - "layers", - "components", - "cves", - "maxCVSSValue", - "scannerFingerprint", - "vulnOverrides" - ], - "properties": { - "components": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.ScannerComponent" - } - }, - "cves": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.ScannerCVE" - } - }, - "layers": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.ScannerLayer" - } - }, - "licenses": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.ScannerLicense" - } - }, - "manifestDigest": { - "type": "string" - }, - "maxCVSSValue": { - "type": "number", - "format": "float" - }, - "namespace": { - "type": "string" - }, - "pk": { - "type": "string" - }, - "repository": { - "type": "string" - }, - "scannerFingerprint": { - "$ref": "#/definitions/schema.ScannerFingerprint" - }, - "tag": { - "type": "string" - }, - "totalVulnCount": { - "$ref": "#/definitions/schema.ScannerVulnCount" - }, - "vulnOverrides": { - "type": "array", - "items": { - "$ref": "#/definitions/schema.LayerVulnOverride" - } - } - } - }, - "schema.ScannerCVE": { - "required": [ - "cvePK", - "summary", - "cvss", - "notes" - ], - "properties": { - "cvePK": { - "type": "string" - }, - "cvss": { - "type": "number", - "format": "float" - }, - "notes": { - "type": "string" - }, - "summary": { - "type": "string" - } - } - }, - "schema.ScannerComponent": { - "required": [ - "componentPK", - "vulnCount", - "name", - "version", - "filepaths", - "cves", - "licenses", - "source" - ], - "properties": { - "componentPK": { - "type": "string" - }, - "cves": { - "type": "array", - "items": { - "type": "string" - } - }, - "filepaths": { - "type": "array", - "items": { - "type": "string" - } - }, - "licenses": { - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "source": { - "type": "string" - }, - "version": { - "type": "string" - }, - "vulnCount": { - "$ref": "#/definitions/schema.ScannerVulnCount" - } - } - }, - "schema.ScannerFingerprint": { - "required": [ - "scannerType", - "version" - ], - "properties": { - "scannerType": { - "type": "integer", - "format": "int32" - }, - "version": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "schema.ScannerLayer": { - "required": [ - "digest", - "mediaType", - "author", - "size", - "components" - ], - "properties": { - "author": { - "type": "string" - }, - "components": { - "type": "array", - "items": { - "type": "string" - } - }, - "digest": { - "type": "string" - }, - "mediaType": { - "type": "string" - }, - "size": { - "type": "integer", - "format": "int64" - } - } - }, - "schema.ScannerLicense": { - "required": [ - "name", - "url", - "type" - ], - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "url": { - "type": "string" - } - } - }, - "schema.ScannerVulnCount": { - "required": [ - "critical", - "major", - "minor" - ], - "properties": { - "critical": { - "type": "integer", - "format": "int32" - }, - "major": { - "type": "integer", - "format": "int32" - }, - "minor": { - "type": "integer", - "format": "int32" - } - } - }, - "tmpforms.ActionConfigCreate": { - "required": [ - "action", - "parameters" - ], - "properties": { - "action": { - "description": "The action to modify the config for", - "type": "string" - }, - "parameters": { - "description": "Extra parameters to pass to the job. The available parameters depend on the job. These are overwritten by any corresponding parameters set in the job itself.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "tmpforms.CronCreate": { - "required": [ - "action", - "schedule", - "retries", - "capacityMap", - "parameters", - "deadline", - "stopTimeout" - ], - "properties": { - "action": { - "description": "The action which the cron will perform", - "type": "string" - }, - "capacityMap": { - "description": "The map of required capacity", - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "deadline": { - "description": "After this amount of time has passed, a SIGTERM will be sent", - "type": "string" - }, - "parameters": { - "description": "Extra parameters to pass to the job. The available parameters depend on the job.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "retries": { - "description": "The number of times to retry a job if it fails", - "type": "integer", - "format": "int32" - }, - "schedule": { - "description": "The for the cron as a cronspec string: (seconds) (minutes) (hours) (day of month) (month) (day of week) or @hourly, @weekly, etc.", - "type": "string" - }, - "stopTimeout": { - "description": "This long after SIGTERM is sent, SIGKILL will be sent if the proccess is still alive", - "type": "string" - } - } - }, - "tmpforms.EmptyForm": {}, - "tmpforms.JobSubmission": { - "required": [ - "action", - "parameters", - "retries", - "capacityMap", - "deadline", - "stopTimeout", - "scheduledAt" - ], - "properties": { - "action": { - "description": "The action which the job will perform", - "type": "string" - }, - "capacityMap": { - "description": "The map of required capacity", - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "deadline": { - "description": "After this amount of time has passed, a SIGTERM will be sent", - "type": "string" - }, - "parameters": { - "description": "Parameters to start the job with", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "retries": { - "description": "The number of times to retry a job if it fails", - "type": "integer", - "format": "int32" - }, - "scheduledAt": { - "description": "The time at which to run the job. Empty string or no value means now. Format: RFC3339", - "type": "string" - }, - "stopTimeout": { - "description": "This long after SIGTERM is sent, SIGKILL will be sent if the proccess is still alive", - "type": "string" - } - } - }, - "tmpforms.UpdateWorkerCapacity": { - "required": [ - "capacityMap" - ], - "properties": { - "capacityMap": { - "description": "The new capacity for the worker, representing roughly the amount of RAM to use", - "type": "object", - "additionalProperties": { - "type": "integer" - } - } - } - }, - "tmpresponses.ActionConfig": { - "required": [ - "id", - "action", - "parameters" - ], - "properties": { - "action": { - "description": "The action this config refers to.", - "type": "string" - }, - "id": { - "description": "Randomly generated UUID for foreign references.", - "type": "string" - }, - "parameters": { - "description": "Extra parameters to pass to the job. The available parameters depend on the job.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "tmpresponses.ActionConfigs": { - "required": [ - "actionConfigs" - ], - "properties": { - "actionConfigs": { - "type": "array", - "items": { - "$ref": "#/definitions/tmpresponses.ActionConfig" - } - } - } - }, - "tmpresponses.Cron": { - "required": [ - "id", - "action", - "schedule", - "retries", - "capacityMap", - "parameters", - "deadline", - "stopTimeout", - "nextRun" - ], - "properties": { - "action": { - "description": "The action to be performed by jobs spawned from this cron.", - "type": "string" - }, - "capacityMap": { - "description": "The map of required capacity", - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "deadline": { - "type": "string" - }, - "id": { - "description": "Randomly generated UUID for foreign references.", - "type": "string" - }, - "nextRun": { - "description": "The next time the job will run.", - "type": "string", - "format": "date-time" - }, - "parameters": { - "description": "Extra parameters to pass to the job. The available parameters depend on the job.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "retries": { - "description": "The number of times to retry the job if it fails", - "type": "integer", - "format": "int32" - }, - "schedule": { - "description": "The schedule for this cron as a cronspec string: (seconds) (minutes) (hours) (day of month) (month) (day of week) or @hourly, @weekly, etc.", - "type": "string" - }, - "stopTimeout": { - "description": "This long after SIGTERM is sent, SIGKILL will be sent if the proccess is still alive", - "type": "string" - } - } - }, - "tmpresponses.Crons": { - "required": [ - "crons" - ], - "properties": { - "crons": { - "type": "array", - "items": { - "$ref": "#/definitions/tmpresponses.Cron" - } - } - } - }, - "tmpresponses.Job": { - "required": [ - "id", - "retryFromID", - "workerID", - "status", - "scheduledAt", - "lastUpdated", - "action", - "retriesLeft", - "retriesTotal", - "capacityMap", - "parameters", - "deadline", - "stopTimeout" - ], - "properties": { - "action": { - "description": "The action this job performs", - "type": "string" - }, - "capacityMap": { - "description": "The map of required capacity", - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "deadline": { - "type": "string" - }, - "id": { - "description": "The ID of the job", - "type": "string" - }, - "lastUpdated": { - "description": "The last time at which the status of this job was updated", - "type": "string", - "format": "date-time" - }, - "parameters": { - "description": "Extra parameters to pass to the job. The available parameters depend on the job.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "retriesLeft": { - "description": "The number of times to retry the job if it fails", - "type": "integer", - "format": "int32" - }, - "retriesTotal": { - "description": "The total number of times to retry the original job if it fails", - "type": "integer", - "format": "int32" - }, - "retryFromID": { - "description": "The ID of the job this job retried from", - "type": "string" - }, - "scheduledAt": { - "description": "The time at which this job was scheduled", - "type": "string", - "format": "date-time" - }, - "status": { - "description": "The current status of the job", - "type": "string", - "enum": [ - "waiting", - "running", - "done", - "canceled", - "errored" - ] - }, - "stopTimeout": { - "description": "This long after SIGTERM is sent, SIGKILL will be sent if the proccess is still alive", - "type": "string" - }, - "workerID": { - "description": "The ID of the worker which performed the job, unclaimed by a worker if empty", - "type": "string" - } - } - }, - "tmpresponses.JobLog": { - "required": [ - "data", - "lineNum" - ], - "properties": { - "data": { - "type": "string" - }, - "lineNum": { - "type": "integer", - "format": "int32" - } - } - }, - "tmpresponses.Jobs": { - "required": [ - "jobs" - ], - "properties": { - "jobs": { - "type": "array", - "items": { - "$ref": "#/definitions/tmpresponses.Job" - } - } - } - }, - "tmpresponses.Worker": { - "required": [ - "id", - "status", - "capacityMap", - "heartbeatExpiration" - ], - "properties": { - "capacityMap": { - "description": "A map used to represent now much load the worker should be allocated. Only security scanning jobs use this and the value is roughly equivalent to expected memory usage in bytes.", - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "heartbeatExpiration": { - "description": "Time after which the worker should be considered dead.", - "type": "string" - }, - "id": { - "description": "Randomly generated UUID for foreign references.", - "type": "string" - }, - "status": { - "description": "Status of the worker", - "type": "string" - } - } - }, - "tmpresponses.Workers": { - "required": [ - "workers" - ], - "properties": { - "workers": { - "type": "array", - "items": { - "$ref": "#/definitions/tmpresponses.Worker" - } - } - } - } - }, - "tags": [ - { - "description": "Accounts", - "name": "accounts" - }, - { - "description": "Admin", - "name": "meta" - }, - { - "description": "Content Caches", - "name": "content_caches" - }, - { - "description": "Repositories", - "name": "repositories" - }, - { - "description": "Repository Namespaces", - "name": "repositoryNamespaces" - }, - { - "description": "Events", - "name": "events" - }, - { - "description": "Docker Security Scanner", - "name": "imagescan" - }, - { - "description": "Webhooks", - "name": "webhooks" - }, - { - "description": "Jobs", - "name": "jobs" - }, - { - "description": "Crons", - "name": "crons" - }, - { - "description": "Workers", - "name": "workers" - }, - { - "description": "Action Configs", - "name": "action_configs" - } - ] -} diff --git a/reference/dtr/2.7/api/index.html b/reference/dtr/2.7/api/index.html deleted file mode 100644 index 91abd52d94..0000000000 --- a/reference/dtr/2.7/api/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - -
- ->>u&vn;if(_!==h>>>u&vn)break;_&&(l+=(1<i&&(c=c.removeBefore(r,u,a-l)),c&&h
a&&(a=c.size),o(u)||(c=c.map(function(e){return V(e)})),i.push(c)}return a>e.size&&(e=e.setSize(a)),Ie(e,t,i)}function $e(e){return e "},u.paragraph_close=function(e,t){var n=!(e[t].tight&&t&&"inline"===e[t-1].type&&!e[t-1].content);return(e[t].tight?"":"s)return k();var e=i.next();return r||t===xn?e:t===bn?w(t,u-1,void 0,e):w(t,u-1,e.value[1],e)})},c}function dt(e,t,n){var r=Tt(e);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var a=0;return e.__iterate(function(e,i,s){return t.call(n,e,i,s)&&++a&&r(e,i,o)}),a},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var a=e.__iterator(wn,i),s=!0;return new x(function(){if(!s)return k();var e=a.next();if(e.done)return e;var i=e.value,u=i[0],c=i[1];return t.call(n,c,u,o)?r===wn?e:w(r,u,c,e):(s=!1,k())})},r}function mt(e,t,n,r){var i=Tt(e);return i.__iterateUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterate(i,o);var s=!0,u=0;return e.__iterate(function(e,o,c){if(!s||!(s=t.call(n,e,o,c)))return u++,i(e,r?o:u-1,a)}),u},i.__iteratorUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterator(i,o);var s=e.__iterator(wn,o),u=!0,c=0;return new x(function(){var e,o,l;do{if(e=s.next(),e.done)return r||i===xn?e:i===bn?w(i,c++,void 0,e):w(i,c++,e.value[1],e);var p=e.value;o=p[0],l=p[1],u&&(u=t.call(n,l,o,a))}while(u);return i===wn?e:w(i,o,l,e)})},i}function vt(e,t){var r=a(e),i=[e].concat(t).map(function(e){return o(e)?r&&(e=n(e)):e=r?L(e):z(Array.isArray(e)?e:[e]),e}).filter(function(e){return 0!==e.size});if(0===i.length)return e;if(1===i.length){var u=i[0];if(u===e||r&&a(u)||s(e)&&s(u))return u}var c=new I(i);return r?c=c.toKeyedSeq():s(e)||(c=c.toSetSeq()),c=c.flatten(!0),c.size=i.reduce(function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}},0),c}function yt(e,t,n){var r=Tt(e);return r.__iterateUncached=function(r,i){function a(e,c){var l=this;e.__iterate(function(e,i){return(!t||c=Vn)return De(e,f,c,s,d);if(l&&!d&&2===f.length&&Ee(f[1^p]))return f[1^p];if(l&&d&&1===f.length&&Ee(d))return d;var m=e&&e===this.ownerID,v=l?d?c:c^u:c|u,y=l?d?je(f,p,d,m):Be(f,p,m):Fe(f,p,d,m);return m?(this.bitmap=v,this.nodes=y,this):new de(e,v,y)},me.prototype.get=function(e,t,n,r){void 0===t&&(t=oe(n));var i=(0===e?t:t>>>e)&vn,o=this.nodes[i];return o?o.get(e+dn,t,n,r):r},me.prototype.update=function(e,t,n,r,i,o,a){void 0===n&&(n=oe(r));var s=(0===t?n:n>>>t)&vn,u=i===yn,c=this.nodes,l=c[s];if(u&&!l)return this;var p=Se(l,e,t+dn,n,r,i,o,a);if(p===l)return this;var f=this.count;if(l){if(!p&&(f--,ft)return e.textContent;var o=function(e){for(var t,o,a,s,u,c=e.textContent,l=0,p=c[0],f=1,h=e.innerHTML="",d=0;o=t,t=d<7&&"\\"==t?1:f;){if(f=p,p=c[++l],s=h.length>1,!f||d>8&&"\n"==f||[/\S/[i](f),1,1,!/[$\w]/[i](f),("/"==t||"\n"==t)&&s,'"'==t&&s,"'"==t&&s,c[l-4]+o+t=="-->",o+t=="*/"][d])for(h&&(e[r](u=n.createElement("span")).setAttribute("style",["color: #555; font-weight: bold;","","","color: #555;",""][d?d<3?2:d>6?4:d>3?3:+/^(a(bstract|lias|nd|rguments|rray|s(m|sert)?|uto)|b(ase|egin|ool(ean)?|reak|yte)|c(ase|atch|har|hecked|lass|lone|ompl|onst|ontinue)|de(bugger|cimal|clare|f(ault|er)?|init|l(egate|ete)?)|do|double|e(cho|ls?if|lse(if)?|nd|nsure|num|vent|x(cept|ec|p(licit|ort)|te(nds|nsion|rn)))|f(allthrough|alse|inal(ly)?|ixed|loat|or(each)?|riend|rom|unc(tion)?)|global|goto|guard|i(f|mp(lements|licit|ort)|n(it|clude(_once)?|line|out|stanceof|t(erface|ernal)?)?|s)|l(ambda|et|ock|ong)|m(icrolight|odule|utable)|NaN|n(amespace|ative|ext|ew|il|ot|ull)|o(bject|perator|r|ut|verride)|p(ackage|arams|rivate|rotected|rotocol|ublic)|r(aise|e(adonly|do|f|gister|peat|quire(_once)?|scue|strict|try|turn))|s(byte|ealed|elf|hort|igned|izeof|tatic|tring|truct|ubscript|uper|ynchronized|witch)|t(emplate|hen|his|hrows?|ransient|rue|ry|ype(alias|def|id|name|of))|u(n(checked|def(ined)?|ion|less|signed|til)|se|sing)|v(ar|irtual|oid|olatile)|w(char_t|hen|here|hile|ith)|xor|yield)$/[i](h):0]),u[r](n.createTextNode(h))),a=d&&d<7?d:a,h="",d=11;![1,/[\/{}[(\-+*=<>:;|\\.,?!&@~]/[i](f),/[\])]/[i](f),/[$\w]/[i](f),"/"==f&&a<2&&"<"!=t,'"'==f,"'"==f,f+p+c[l+1]+c[l+2]=="':null;var r=e.$$ref.match(/\S*\/(\S+)$/);e.xml.name=r[1]}return(0,X.memoizedCreateXMLExample)(e,n)}return(0,S.default)((0,X.memoizedSampleFromSchema)(e,n),null,2)},t.parseSeach=function(){var e={},t=window.location.search;if(""!=t){var n=t.substr(1).split("&");for(var r in n)r=n[r].split("="),e[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return e},t.btoa=function(t){var n=void 0;return n=t instanceof e?t:new e(t.toString(),"utf-8"),n.toString("base64")},t.sorters={operationsSorter:{alpha:function(e,t){return e.get("path").localeCompare(t.get("path"))},method:function(e,t){return e.get("method").localeCompare(t.get("method"))}}},t.buildFormData=function(e){var t=[];for(var n in e){var r=e[n];void 0!==r&&""!==r&&t.push([n,"=",encodeURIComponent(r).replace(/%20/g,"+")].join(""))}return t.join("&")},t.filterConfigs=function(e,t){var n=void 0,r={};for(n in e)t.indexOf(n)!==-1&&(r[n]=e[n]);return r},t.shallowEqualKeys=function(e,t,n){return!!(0,K.default)(n,function(n){return(0,G.default)(e[n],t[n])})}}).call(t,n(132).Buffer)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(185),o=r(i),a=n(178),s=r(a);t.default=function(){function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var a,u=(0,s.default)(e);!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw o}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,o.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,n){e.exports={default:n(186),__esModule:!0}},function(e,t,n){n(110),n(97),e.exports=n(187)},function(e,t,n){var r=n(182),i=n(108)("iterator"),o=n(102);e.exports=n(59).isIterable=function(e){var t=Object(e);return void 0!==t[i]||"@@iterator"in t||o.hasOwnProperty(r(t))}},function(e,t,n){var r=n(189),i=n(203),o=i(function(e,t,n){return t=t.toLowerCase(),e+(n?r(t):t)});e.exports=o},function(e,t,n){function r(e){return o(i(e).toLowerCase())}var i=n(190),o=n(195);e.exports=r},function(e,t,n){function r(e){return null==e?"":i(e)}var i=n(191);e.exports=r},function(e,t,n){function r(e){if("string"==typeof e)return e;if(a(e))return o(e,r)+"";if(s(e))return l?l.call(e):"";var t=e+"";return"0"==t&&1/e==-u?"-0":t}var i=n(151),o=n(192),a=n(193),s=n(194),u=1/0,c=i?i.prototype:void 0,l=c?c.toString:void 0;e.exports=r},function(e,t){function n(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n","
"],l=[3,"
"],p=[1,'"],f={"*":[1,"?","
"],legend:[1,""],param:[1,""],tr:[2,"","
"],optgroup:u,option:u,caption:c,colgroup:c,tbody:c,tfoot:c,thead:c,td:l,th:l},h=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];h.forEach(function(e){f[e]=p,s[e]=!0}),e.exports=r},function(e,t,n){"use strict";var r=n(572),i=n(530),o={dangerouslyProcessChildrenUpdates:function(e,t){var n=i.getNodeFromInstance(e);r.processUpdates(n,t)}};e.exports=o},function(e,t,n){"use strict";function r(e){if(e){var t=e._currentElement._owner||null;if(t){var n=t.getName();if(n)return" This DOM node was rendered by `"+n+"`."}}return""}function i(e,t){t&&(Y[e._tag]&&(null!=t.children||null!=t.dangerouslySetInnerHTML?v("137",e._tag,e._currentElement._owner?" Check the render method of "+e._currentElement._owner.getName()+".":""):void 0),null!=t.dangerouslySetInnerHTML&&(null!=t.children?v("60"):void 0,"object"==typeof t.dangerouslySetInnerHTML&&K in t.dangerouslySetInnerHTML?void 0:v("61")),null!=t.style&&"object"!=typeof t.style?v("62",r(e)):void 0)}function o(e,t,n,r){if(!(r instanceof N)){var i=e._hostContainerInfo,o=i._node&&i._node.nodeType===H,s=o?i._node:i._ownerDocument;z(t,s),r.getReactMountReady().enqueue(a,{inst:e,registrationName:t,listener:n})}}function a(){var e=this;S.putListener(e.inst,e.registrationName,e.listener)}function s(){var e=this;D.postMountWrapper(e)}function u(){var e=this;P.postMountWrapper(e)}function c(){var e=this;M.postMountWrapper(e)}function l(){j.track(this)}function p(){var e=this;e._rootNodeID?void 0:v("63");var t=L(e);switch(t?void 0:v("64"),e._tag){case"iframe":case"object":e._wrapperState.listeners=[C.trapBubbledEvent("topLoad","load",t)];break;case"video":case"audio":e._wrapperState.listeners=[];for(var n in J)J.hasOwnProperty(n)&&e._wrapperState.listeners.push(C.trapBubbledEvent(n,J[n],t));break;case"source":e._wrapperState.listeners=[C.trapBubbledEvent("topError","error",t)];break;case"img":e._wrapperState.listeners=[C.trapBubbledEvent("topError","error",t),C.trapBubbledEvent("topLoad","load",t)];break;case"form":e._wrapperState.listeners=[C.trapBubbledEvent("topReset","reset",t),C.trapBubbledEvent("topSubmit","submit",t)];break;case"input":case"select":case"textarea":e._wrapperState.listeners=[C.trapBubbledEvent("topInvalid","invalid",t)]}}function f(){O.postUpdateWrapper(this)}function h(e){Q.call(Z,e)||($.test(e)?void 0:v("65",e),Z[e]=!0)}function d(e,t){return e.indexOf("-")>=0||null!=t.is}function m(e){var t=e.type;h(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var v=n(531),y=n(500),g=n(585),_=n(587),b=n(573),x=n(574),w=n(532),k=n(595),S=n(538),E=n(539),C=n(597),A=n(533),T=n(530),D=n(600),M=n(603),O=n(604),P=n(605),I=(n(558),n(606)),N=n(624),R=(n(505),n(578)),j=(n(508),n(562),n(613),n(560)),F=(n(627),n(504),A),B=S.deleteListener,L=T.getNodeFromInstance,z=C.listenTo,q=E.registrationNameModules,U={string:!0,number:!0},W="style",K="__html",V={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},H=11,J={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},G={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},X={listing:!0,pre:!0,textarea:!0},Y=y({menuitem:!0},G),$=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,Z={},Q={}.hasOwnProperty,ee=1;m.displayName="ReactDOMComponent",m.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=ee++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n;var o=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(p,this);break;case"input":D.mountWrapper(this,o,t),o=D.getHostProps(this,o),e.getReactMountReady().enqueue(l,this),e.getReactMountReady().enqueue(p,this);break;case"option":M.mountWrapper(this,o,t),o=M.getHostProps(this,o);break;case"select":O.mountWrapper(this,o,t),o=O.getHostProps(this,o),e.getReactMountReady().enqueue(p,this);break;case"textarea":P.mountWrapper(this,o,t),o=P.getHostProps(this,o),e.getReactMountReady().enqueue(l,this),e.getReactMountReady().enqueue(p,this)}i(this,o);var a,f;null!=t?(a=t._namespaceURI,f=t._tag):n._tag&&(a=n._namespaceURI,f=n._tag),(null==a||a===x.svg&&"foreignobject"===f)&&(a=x.html),a===x.html&&("svg"===this._tag?a=x.svg:"math"===this._tag&&(a=x.mathml)),this._namespaceURI=a;var h;if(e.useCreateElement){var d,m=n._ownerDocument;if(a===x.html)if("script"===this._tag){var v=m.createElement("div"),y=this._currentElement.type;v.innerHTML="<"+y+">"+y+">",d=v.removeChild(v.firstChild)}else d=o.is?m.createElement(this._currentElement.type,o.is):m.createElement(this._currentElement.type);else d=m.createElementNS(a,this._currentElement.type);T.precacheNode(this,d),this._flags|=F.hasCachedChildNodes,this._hostParent||k.setAttributeForRoot(d),this._updateDOMProperties(null,o,e);var _=b(d);this._createInitialChildren(e,o,r,_),h=_}else{var w=this._createOpenTagMarkupAndPutListeners(e,o),S=this._createContentMarkup(e,o,r);h=!S&&G[this._tag]?w+"/>":w+">"+S+""+this._currentElement.type+">"}switch(this._tag){case"input":e.getReactMountReady().enqueue(s,this),o.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(u,this),o.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"select":o.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"button":o.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(c,this)}return h},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var i=t[r];if(null!=i)if(q.hasOwnProperty(r))i&&o(this,r,i,e);else{r===W&&(i&&(i=this._previousStyleCopy=y({},t.style)),i=_.createMarkupForStyles(i,this));var a=null;null!=this._tag&&d(this._tag,t)?V.hasOwnProperty(r)||(a=k.createMarkupForCustomAttribute(r,i)):a=k.createMarkupForProperty(r,i),a&&(n+=" "+a)}}return e.renderToStaticMarkup?n:(this._hostParent||(n+=" "+k.createMarkupForRoot()),n+=" "+k.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",i=t.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&(r=i.__html);else{var o=U[typeof t.children]?t.children:null,a=null!=o?null:t.children;if(null!=o)r=R(o);else if(null!=a){var s=this.mountChildren(a,e,n);r=s.join("")}}return X[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var i=t.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&b.queueHTML(r,i.__html);else{var o=U[typeof t.children]?t.children:null,a=null!=o?null:t.children;if(null!=o)""!==o&&b.queueText(r,o);else if(null!=a)for(var s=this.mountChildren(a,e,n),u=0;u-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n"))):s=e.stylize("[Circular]","special")),x(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function h(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function d(e){return Array.isArray(e)}function m(e){return"boolean"==typeof e}function v(e){return null===e}function y(e){return null==e}function g(e){return"number"==typeof e}function _(e){return"string"==typeof e}function b(e){return"symbol"==typeof e}function x(e){return void 0===e}function w(e){return k(e)&&"[object RegExp]"===T(e)}function k(e){return"object"==typeof e&&null!==e}function S(e){return k(e)&&"[object Date]"===T(e)}function E(e){return k(e)&&("[object Error]"===T(e)||e instanceof Error)}function C(e){return"function"==typeof e}function A(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function T(e){return Object.prototype.toString.call(e)}function D(e){return e<10?"0"+e.toString(10):e.toString(10)}function M(){var e=new Date,t=[D(e.getHours()),D(e.getMinutes()),D(e.getSeconds())].join(":");return[e.getDate(),R[e.getMonth()],t].join(" ")}function O(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var P=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],n=0;nn?p.push([l,s]):i[s]=this.yaml_path_resolvers[l][s]);else for(d=this.yaml_path_resolvers,a=0,c=d.length;a=h){o.push(x[r.op].call(r,l,i,e));break}if(E(l)){if("-"===i)i=l.length;else{if(n&&!p(i))throw new C("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",a-1,r.path,r);i=parseInt(i,10)}if(f>=h){if(n&&"add"===r.op&&i>l.length)throw new C("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a-1,r.path,r);o.push(b[r.op].call(r,l,i,e));break}}else if(i&&i.indexOf("~")!=-1&&(i=i.replace(/~1/g,"/").replace(/~0/g,"~")),f>=h){o.push(_[r.op].call(r,l,i,e));break}l=l[i]}}return o}function h(e,t){var n=[];return l(e,t,n,""),n}function d(e,t){function n(){this.constructor=e}for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function m(e){if(void 0===e)return!0;if(e)if(E(e)){for(var t=0,n=e.length;t5?c-5:0),p=5;p5?c-5:0),p=5;p\n"},u.blockquote_close=function(e,t){return"
"+c(e,t)},u.code=function(e,t){return e[t].block?"
"+c(e,t):""+s(e[t].content)+"
"+s(e[t].content)+"
"},u.fence=function(e,t,n,r,u){var l,p,f,h=e[t],d="",m=n.langPrefix,v="";if(h.params){if(l=h.params.split(/\s+/g),p=l.join(" "),i(u.rules.fence_custom,l[0]))return u.rules.fence_custom[l[0]](e,t,n,r,u);v=s(a(o(p))),d=' class="'+m+v+'"'}return f=n.highlight?n.highlight.apply(n.highlight,[h.content].concat(l))||s(h.content):s(h.content),"
"+c(e,t)},u.fence_custom={},u.heading_open=function(e,t){return""+f+"
":"
")+c(e,t)},u.bullet_list_open=function(){return"\n"},u.bullet_list_close=function(e,t){return"
"+c(e,t)},u.list_item_open=function(){return"\n"},u.ordered_list_close=function(e,t){return"
"+c(e,t)},u.paragraph_open=function(e,t){return e[t].tight?"":""},u.table_open=function(){return"
\n"},u.table_close=function(){return"
\n"},u.thead_open=function(){return"\n"},u.thead_close=function(){return"\n"},u.tbody_open=function(){return"\n"},u.tbody_close=function(){return"\n"},u.tr_open=function(){return""},u.tr_close=function(){return" \n"},u.th_open=function(e,t){var n=e[t];return""},u.th_close=function(){return" "},u.td_open=function(e,t){var n=e[t];return""},u.td_close=function(){return" "},u.strong_open=function(){return""},u.strong_close=function(){return""},u.em_open=function(){return""},u.em_close=function(){return""},u.del_open=function(){return""},u.del_close=function(){return""},u.ins_open=function(){return""},u.ins_close=function(){return""},u.mark_open=function(){return""},u.mark_close=function(){return""},u.sub=function(e,t){return""+s(e[t].content)+""},u.sup=function(e,t){return""+s(e[t].content)+""},u.hardbreak=function(e,t,n){return n.xhtmlOut?"
\n":"
\n"},u.softbreak=function(e,t,n){return n.breaks?n.xhtmlOut?"
\n":"
\n":"\n"},u.text=function(e,t){return s(e[t].content)},u.htmlblock=function(e,t){return e[t].content},u.htmltag=function(e,t){return e[t].content},u.abbr_open=function(e,t){return''},u.abbr_close=function(){return""},u.footnote_ref=function(e,t){var n=Number(e[t].id+1).toString(),r="fnref"+n;return e[t].subId>0&&(r+=":"+e[t].subId),'['+n+"]"},u.footnote_block_open=function(e,t,n){var r=n.xhtmlOut?'
\n':'
\n';return r+'\n'},u.footnote_block_close=function(){return"
\n\n"},u.dt_open=function(){return"
\n"},u.dt_close=function(){return"\n"},u.dd_close=function(){return"\n"};var c=u.getBreak=function(e,t){return t=r(e,t),t