mirror of https://github.com/docker/docs.git
9958 lines
227 KiB
JSON
9958 lines
227 KiB
JSON
{
|
|
"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"
|
|
}
|
|
]
|
|
}
|