harbor/api/v2.0/swagger.yaml
He Weiwei 73045c55ce
fix: disable x-omitempty for repo_count and chart_count (#14895)
Closes #13664

Signed-off-by: He Weiwei <hweiwei@vmware.com>
2021-05-17 10:22:51 +08:00

8199 lines
238 KiB
YAML

swagger: '2.0'
info:
title: Harbor API
description: These APIs provide services for manipulating Harbor project.
version: '2.0'
host: localhost
schemes:
- http
- https
basePath: /api/v2.0
produces:
- application/json
consumes:
- application/json
securityDefinitions:
basic:
type: basic
security:
- basic: []
- {}
paths:
/health:
get:
summary: Check the status of Harbor components
description: Check the status of Harbor components
tags:
- health
operationId: getHealth
responses:
'200':
description: The health status of Harbor components
schema:
$ref: '#/definitions/OverallHealthStatus'
'500':
$ref: '#/responses/500'
/search:
get:
summary: 'Search for projects, repositories and helm charts'
description: |-
The Search endpoint returns information about the projects, repositories and helm charts offered at public status or related to the current logged in user. The response includes the project, repository list and charts in a proper display order.
parameters:
- name: q
in: query
description: Search parameter for project and repository name.
required: true
type: string
tags:
- search
operationId: search
responses:
'200':
description: An array of search results
schema:
$ref: '#/definitions/Search'
'500':
$ref: '#/responses/500'
/statistics:
get:
summary: Get the statistic information about the projects and repositories
description: Get the statistic information about the projects and repositories
tags:
- statistic
operationId: getStatistic
responses:
'200':
description: The statistic information
schema:
$ref: '#/definitions/Statistic'
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
/ldap/ping:
post:
operationId: pingLdap
summary: Ping available ldap service.
description: |
This endpoint ping the available ldap service for test related configuration parameters.
parameters:
- name: ldapconf
in: body
description: 'ldap configuration. support input ldap service configuration. If it is a empty request, will load current configuration from the system.'
required: false
schema:
$ref: '#/definitions/LdapConf'
tags:
- Ldap
responses:
'200':
description: Ping ldap service successfully.
schema:
$ref: '#/definitions/LdapPingResult'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/ldap/users/search:
get:
operationId: searchLdapUser
summary: Search available ldap users.
description: |
This endpoint searches the available ldap users based on related configuration parameters. Support searched by input ladp configuration, load configuration from the system and specific filter.
parameters:
- name: username
in: query
type: string
required: false
description: Registered user ID
tags:
- Ldap
responses:
'200':
description: Search ldap users successfully.
schema:
type: array
items:
$ref: '#/definitions/LdapUser'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/ldap/users/import:
post:
operationId: importLdapUser
summary: Import selected available ldap users.
description: |
This endpoint adds the selected available ldap users to harbor based on related configuration parameters from the system. System will try to guess the user email address and realname, add to harbor user information. If have errors when import user, will return the list of importing failed uid and the failed reason.
parameters:
- name: uid_list
in: body
description: The uid listed for importing. This list will check users validity of ldap service based on configuration from the system.
required: true
schema:
$ref: '#/definitions/LdapImportUsers'
tags:
- Ldap
responses:
'200':
description: Add ldap users successfully.
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
description: Failed import some users.
schema:
type: array
items:
$ref: '#/definitions/LdapFailedImportUser'
'500':
$ref: '#/responses/500'
/ldap/groups/search:
get:
summary: Search available ldap groups.
operationId: searchLdapGroup
description: |
This endpoint searches the available ldap groups based on related configuration parameters. support to search by groupname or groupdn.
parameters:
- name: groupname
in: query
type: string
required: false
description: Ldap group name
- name: groupdn
in: query
type: string
required: false
description: The LDAP group DN
tags:
- Ldap
responses:
'200':
description: Search ldap group successfully.
schema:
type: array
items:
$ref: '#/definitions/UserGroup'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/internalconfig:
get:
summary: Get internal configurations.
operationId: getInternalconfig
description: |
This endpoint is for retrieving system configurations that only provides for internal api call.
tags:
- configure
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Get system configurations successfully. The response body is a map.
schema:
$ref: '#/definitions/InternalConfigurationsResponse'
'401':
description: User need to log in first.
'403':
description: User does not have permission of admin role.
'500':
description: Unexpected internal errors.
/configurations:
get:
summary: Get system configurations.
operationId: getConfigurations
description: |
This endpoint is for retrieving system configurations that only provides for admin user.
tags:
- configure
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Get system configurations successfully. The response body is a map.
schema:
$ref: '#/definitions/ConfigurationsResponse'
'401':
description: User need to log in first.ß
'403':
description: User does not have permission of admin role.
'500':
description: Unexpected internal errors.
put:
summary: Modify system configurations.
operationId: updateConfigurations
description: |
This endpoint is for modifying system configurations that only provides for admin user.
tags:
- configure
parameters:
- $ref: '#/parameters/requestId'
- name: configurations
in: body
required: true
schema:
$ref: '#/definitions/Configurations'
description: 'The configuration map can contain a subset of the attributes of the schema, which are to be updated.'
responses:
'200':
description: Modify system configurations successfully.
'401':
description: User need to log in first.
'403':
description: User does not have permission of admin role.
'500':
description: Unexpected internal errors.
/projects:
get:
summary: List projects
description: This endpoint returns projects created by Harbor.
tags:
- project
operationId: listProjects
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/sort'
- name: name
in: query
description: The name of project.
required: false
type: string
- name: public
in: query
description: The project is public or private.
required: false
type: boolean
format: int32
- name: owner
in: query
description: The name of project owner.
required: false
type: string
- name: with_detail
in: query
description: Bool value indicating whether return detailed information of the project
type: boolean
required: false
default: true
responses:
'200':
description: Return all matched projects.
schema:
type: array
items:
$ref: '#/definitions/Project'
headers:
X-Total-Count:
description: The total count of projects
type: integer
Link:
description: Link refers to the previous page and next page
type: string
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
head:
summary: Check if the project name user provided already exists.
description: This endpoint is used to check if the project name provided already exist.
tags:
- project
operationId: headProject
parameters:
- $ref: '#/parameters/requestId'
- name: project_name
in: query
description: Project name for checking exists.
required: true
type: string
responses:
'200':
$ref: '#/responses/200'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
post:
summary: Create a new project.
description: This endpoint is for user to create a new project.
tags:
- project
operationId: createProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/resourceNameInLocation'
- name: project
in: body
description: New created project.
required: true
schema:
$ref: '#/definitions/ProjectReq'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}':
get:
summary: Return specific project detail information
description: This endpoint returns specific project information by project ID.
tags:
- project
operationId: getProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
responses:
'200':
description: Return matched project information.
schema:
$ref: '#/definitions/Project'
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
put:
summary: Update properties for a selected project.
description: This endpoint is aimed to update the properties of a project.
tags:
- project
operationId: updateProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: project
in: body
required: true
schema:
$ref: '#/definitions/ProjectReq'
description: Updates of project.
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete project by projectID
description: This endpoint is aimed to delete project by project ID.
tags:
- project
operationId: deleteProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
/projects/{project_name_or_id}/_deletable:
get:
summary: Get the deletable status of the project
description: Get the deletable status of the project
tags:
- project
operationId: getProjectDeletable
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
responses:
'200':
description: Return deletable status of the project.
schema:
$ref: '#/definitions/ProjectDeletable'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/summary':
get:
summary: Get summary of the project.
description: Get summary of the project.
tags:
- project
operationId: getProjectSummary
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
responses:
'200':
description: Get summary of the project successfully.
schema:
$ref: '#/definitions/ProjectSummary'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/members':
get:
summary: Get all project member information
description: Get all project member information
operationId: listProjectMembers
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: entityname
in: query
type: string
description: The entity name to search.
tags:
- member
responses:
'200':
description: Get project members successfully.
headers:
X-Total-Count:
description: The total count of members
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/ProjectMemberEntity'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
post:
summary: Create project member
operationId: createProjectMember
description: 'Create project member relationship, the member can be one of the user_member and group_member, The user_member need to specify user_id or username. If the user already exist in harbor DB, specify the user_id, If does not exist in harbor DB, it will SearchAndOnBoard the user. The group_member need to specify id or ldap_group_dn. If the group already exist in harbor DB. specify the user group''s id, If does not exist, it will SearchAndOnBoard the group. '
tags:
- member
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: project_member
in: body
schema:
$ref: '#/definitions/ProjectMember'
responses:
'201':
description: Project member created successfully.
headers:
Location:
type: string
description: The URL of the created resource
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/members/{mid}':
get:
summary: Get the project member information
description: Get the project member information
operationId: getProjectMember
tags:
- member
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: mid
in: path
type: integer
format: int64
required: true
description: The member ID
responses:
'200':
description: Project member retrieved successfully.
schema:
$ref: '#/definitions/ProjectMemberEntity'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update project member
description: Update project member relationship
operationId: updateProjectMember
tags:
- member
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: mid
in: path
type: integer
format: int64
required: true
description: Member ID.
- name: role
in: body
schema:
$ref: '#/definitions/RoleRequest'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete project member
operationId: deleteProjectMember
tags:
- member
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: mid
in: path
type: integer
format: int64
required: true
description: Member ID.
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/metadatas/':
get:
summary: Get the metadata of the specific project
description: Get the metadata of the specific project
operationId: listProjectMetadatas
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
tags:
- projectMetadata
responses:
'200':
description: Success
schema:
type: object
additionalProperties:
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
post:
summary: Add metadata for the specific project
operationId: addProjectMetadatas
description: Add metadata for the specific project
tags:
- projectMetadata
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: metadata
in: body
schema:
type: object
additionalProperties:
type: string
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/metadatas/{meta_name}':
get:
summary: Get the specific metadata of the specific project
description: Get the specific metadata of the specific project
operationId: getProjectMetadata
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: meta_name
in: path
description: The name of metadata.
required: true
type: string
tags:
- projectMetadata
responses:
'200':
description: Success
schema:
type: object
additionalProperties:
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update the specific metadata for the specific project
description: Update the specific metadata for the specific project
operationId: updateProjectMetadata
tags:
- projectMetadata
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: meta_name
in: path
description: The name of metadata.
required: true
type: string
- name: metadata
in: body
schema:
type: object
additionalProperties:
type: string
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
delete:
summary: Delete the specific metadata for the specific project
description: Delete the specific metadata for the specific project
operationId: deleteProjectMetadata
tags:
- projectMetadata
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: meta_name
in: path
description: The name of metadata.
required: true
type: string
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
/repositories:
get:
summary: List all authorized repositories
description: List all authorized repositories
tags:
- repository
operationId: listAllRepositories
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of repositories
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Repository'
'400':
$ref: '#/responses/400'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories:
get:
summary: List repositories
description: List repositories of the specified project
tags:
- repository
operationId: listRepositories
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of repositories
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Repository'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}:
get:
summary: Get repository
description: Get the repository specified by name
tags:
- repository
operationId: getRepository
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Repository'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update repository
description: Update the repository specified by name
tags:
- repository
operationId: updateRepository
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- name: repository
in: body
description: The JSON object of repository.
required: true
schema:
$ref: '#/definitions/Repository'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete repository
description: Delete the repository specified by name
tags:
- repository
operationId: deleteRepository
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts:
get:
summary: List artifacts
description: List artifacts under the specific project and repository. Except the basic properties, the other supported queries in "q" includes "tags=*" to list only tagged artifacts, "tags=nil" to list only untagged artifacts, "tags=~v" to list artifacts whose tag fuzzy matches "v", "tags=v" to list artifact whose tag exactly matches "v", "labels=(id1, id2)" to list artifacts that both labels with id1 and id2 are added to
tags:
- artifact
operationId: listArtifacts
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/acceptVulnerabilities'
- name: with_tag
in: query
description: Specify whether the tags are included inside the returning artifacts
type: boolean
required: false
default: true
- name: with_label
in: query
description: Specify whether the labels are included inside the returning artifacts
type: boolean
required: false
default: false
- name: with_scan_overview
in: query
description: Specify whether the scan overview is included inside the returning artifacts
type: boolean
required: false
default: false
- name: with_signature
in: query
description: Specify whether the signature is included inside the tags of the returning artifacts. Only works when setting "with_tag=true"
type: boolean
required: false
default: false
- name: with_immutable_status
in: query
description: Specify whether the immutable status is included inside the tags of the returning artifacts. Only works when setting "with_tag=true"
type: boolean
required: false
default: false
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of artifacts
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Artifact'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
post:
summary: Copy artifact
description: Copy the artifact specified in the "from" parameter to the repository.
tags:
- artifact
operationId: CopyArtifact
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- name: from
in: query
description: The artifact from which the new artifact is copied from, the format should be "project/repository:tag" or "project/repository@digest".
type: string
required: true
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'405':
$ref: '#/responses/405'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}:
get:
summary: Get the specific artifact
description: Get the artifact specified by the reference under the project and repository. The reference can be digest or tag.
tags:
- artifact
operationId: getArtifact
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/acceptVulnerabilities'
- name: with_tag
in: query
description: Specify whether the tags are inclued inside the returning artifacts
type: boolean
required: false
default: true
- name: with_label
in: query
description: Specify whether the labels are inclued inside the returning artifacts
type: boolean
required: false
default: false
- name: with_scan_overview
in: query
description: Specify whether the scan overview is inclued inside the returning artifacts
type: boolean
required: false
default: false
# should be in tag level
- name: with_signature
in: query
description: Specify whether the signature is inclued inside the returning artifacts
type: boolean
required: false
default: false
- name: with_immutable_status
in: query
description: Specify whether the immutable status is inclued inside the tags of the returning artifacts. Only works when setting "with_tag=true"
type: boolean
required: false
default: false
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Artifact'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete the specific artifact
description: Delete the artifact specified by the reference under the project and repository. The reference can be digest or tag
tags:
- artifact
operationId: deleteArtifact
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/scan:
post:
summary: Scan the artifact
description: Scan the specified artifact
tags:
- scan
operationId: scanArtifact
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
responses:
'202':
$ref: '#/responses/202'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/scan/{report_id}/log:
get:
summary: Get the log of the scan report
description: Get the log of the scan report
tags:
- scan
operationId: getReportLog
produces:
- text/plain
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- name: report_id
type: string
in: path
required: true
description: The report id to get the log
responses:
'200':
description: Successfully get scan log file
schema:
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/tags:
post:
summary: Create tag
description: Create a tag for the specified artifact
tags:
- artifact
operationId: createTag
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- name: tag
in: body
description: The JSON object of tag.
required: true
schema:
$ref: '#/definitions/Tag'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'405':
$ref: '#/responses/405'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
get:
summary: List tags
description: List tags of the specific artifact
tags:
- artifact
operationId: listTags
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: with_signature
in: query
description: Specify whether the signature is included inside the returning tags
type: boolean
required: false
default: false
- name: with_immutable_status
in: query
description: Specify whether the immutable status is included inside the returning tags
type: boolean
required: false
default: false
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of tags
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Tag'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/tags/{tag_name}:
delete:
summary: Delete tag
description: Delete the tag of the specified artifact
tags:
- artifact
operationId: deleteTag
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- $ref: '#/parameters/tagName'
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/additions/vulnerabilities:
get:
summary: Get the vulnerabilities addition of the specific artifact
description: Get the vulnerabilities addition of the artifact specified by the reference under the project and repository.
tags:
- artifact
operationId: getVulnerabilitiesAddition
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- $ref: '#/parameters/acceptVulnerabilities'
responses:
'200':
description: Success
headers:
Content-Type:
description: The content type of the vulnerabilities addition
type: string
schema:
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/additions/{addition}:
get:
summary: Get the addition of the specific artifact
description: Get the addition of the artifact specified by the reference under the project and repository.
tags:
- artifact
operationId: getAddition
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- name: addition
in: path
description: The type of addition.
type: string
enum: [build_history, values.yaml, readme.md, dependencies]
required: true
responses:
'200':
description: Success
headers:
Content-Type:
description: The content type of the addition
type: string
schema:
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/labels:
post:
summary: Add label to artifact
description: Add label to the specified artiact.
tags:
- artifact
operationId: addLabel
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- name: label
in: body
description: The label that added to the artifact. Only the ID property is needed.
required: true
schema:
$ref: '#/definitions/Label'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/labels/{label_id}:
delete:
summary: Remove label from artifact
description: Remove the label from the specified artiact.
tags:
- artifact
operationId: removeLabel
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/repositoryName'
- $ref: '#/parameters/reference'
- name: label_id
in: path
description: The ID of the label that removed from the artifact.
type: integer
format: int64
required: true
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/scanner':
get:
summary: Get project level scanner
description: Get the scanner registration of the specified project. If no scanner registration is configured for the specified project, the system default scanner registration will be returned.
tags:
- project
operationId: getScannerOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
responses:
'200':
description: The details of the scanner registration.
schema:
$ref: '#/definitions/ScannerRegistration'
'400':
description: Bad project ID
'401':
description: Unauthorized request
'403':
description: Request is not allowed
'404':
description: The requested object is not found
'500':
description: Internal server error happened
put:
summary: Configure scanner for the specified project
description: Set one of the system configured scanner registration as the indepndent scanner of the specified project.
tags:
- project
operationId: setScannerOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: payload
in: body
required: true
schema:
$ref: '#/definitions/ProjectScanner'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/scanner/candidates':
get:
summary: Get scanner registration candidates for configurating project level scanner
description: Retrieve the system configured scanner registrations as candidates of setting project level scanner.
tags:
- project
operationId: listScannerCandidatesOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: A list of scanner registrations.
schema:
type: array
items:
$ref: '#/definitions/ScannerRegistration'
headers:
X-Total-Count:
description: The total count of available items
type: integer
Link:
description: Link to previous page and next page
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/audit-logs:
get:
summary: Get recent logs of the projects which the user is a member of
description: |
This endpoint let user see the recent operation logs of the projects which he is member of
tags:
- auditlog
operationId: listAuditLogs
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of auditlogs
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/AuditLog'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
/projects/{project_name}/logs:
get:
summary: Get recent logs of the projects
description: Get recent logs of the projects
tags:
- project
operationId: getLogs
parameters:
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of auditlogs
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/AuditLog'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
/p2p/preheat/providers:
get:
summary: List P2P providers
description: List P2P providers
tags:
- preheat
operationId: ListProviders
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Success
schema:
type: array
items:
$ref: '#/definitions/Metadata'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/p2p/preheat/instances/ping:
post:
summary: Ping status of a instance.
description: |
This endpoint checks status of a instance, the instance can be given by ID or Endpoint URL (together with credential)
operationId: PingInstances
parameters:
- $ref: '#/parameters/requestId'
- name: instance
in: body
description: The JSON object of instance.
required: true
schema:
$ref: '#/definitions/Instance'
tags:
- preheat
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
description: Instance not found (when instance is provided by ID).
'500':
$ref: '#/responses/500'
/p2p/preheat/instances:
get:
summary: List P2P provider instances
description: List P2P provider instances
tags:
- preheat
operationId: ListInstances
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of preheating provider instances
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Instance'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
post:
summary: Create p2p provider instances
description: Create p2p provider instances
tags:
- preheat
operationId: CreateInstance
parameters:
- $ref: '#/parameters/requestId'
- name: instance
in: body
description: The JSON object of instance.
required: true
schema:
$ref: '#/definitions/Instance'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
/p2p/preheat/instances/{preheat_instance_name}:
get:
summary: Get a P2P provider instance
description: Get a P2P provider instance
tags:
- preheat
operationId: GetInstance
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/instanceName'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Instance'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete the specified P2P provider instance
description: Delete the specified P2P provider instance
tags:
- preheat
operationId: DeleteInstance
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/instanceName'
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update the specified P2P provider instance
description: Update the specified P2P provider instance
tags:
- preheat
operationId: UpdateInstance
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/instanceName'
- name: instance
in: body
description: The instance to update
required: true
schema:
$ref: '#/definitions/Instance'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name}/preheat/policies:
post:
summary: Create a preheat policy under a project
description: Create a preheat policy under a project
tags:
- preheat
operationId: CreatePolicy
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- name: policy
in: body
description: The policy schema info
required: true
schema:
$ref: '#/definitions/PreheatPolicy'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
get:
summary: List preheat policies
description: List preheat policies
tags:
- preheat
operationId: ListPolicies
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
responses:
'200':
description: List preheat policies success
headers:
X-Total-Count:
description: The total count of policies
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/PreheatPolicy'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/projects/{project_name}/preheat/policies/{preheat_policy_name}:
get:
summary: Get a preheat policy
description: Get a preheat policy
tags:
- preheat
operationId: GetPolicy
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
responses:
'200':
description: Get a preheat policy success
schema:
$ref: '#/definitions/PreheatPolicy'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
put:
summary: Update preheat policy
description: Update preheat policy
tags:
- preheat
operationId: UpdatePolicy
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
- name: policy
in: body
description: The policy schema info
required: true
schema:
$ref: '#/definitions/PreheatPolicy'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
post:
summary: Manual preheat
description: Manual preheat
tags:
- preheat
operationId: ManualPreheat
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
- name: policy
in: body
description: The policy schema info
required: true
schema:
$ref: '#/definitions/PreheatPolicy'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
delete:
summary: Delete a preheat policy
description: Delete a preheat policy
tags:
- preheat
operationId: DeletePolicy
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/projects/{project_name}/preheat/policies/{preheat_policy_name}/executions:
get:
summary: List executions for the given policy
description: List executions for the given policy
tags:
- preheat
operationId: ListExecutions
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
responses:
'200':
description: List executions success
headers:
X-Total-Count:
description: The total count of executions
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Execution'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/projects/{project_name}/preheat/policies/{preheat_policy_name}/executions/{execution_id}:
get:
summary: Get a execution detail by id
description: Get a execution detail by id
tags:
- preheat
operationId: GetExecution
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
- $ref: '#/parameters/executionId'
responses:
'200':
description: Get execution success
schema:
$ref: '#/definitions/Execution'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
patch:
summary: Stop a execution
description: Stop a execution
tags:
- preheat
operationId: StopExecution
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
- $ref: '#/parameters/executionId'
- name: execution
description: The data of execution
in: body
required: true
schema:
$ref: '#/definitions/Execution'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/projects/{project_name}/preheat/policies/{preheat_policy_name}/executions/{execution_id}/tasks:
get:
summary: List all the related tasks for the given execution
description: List all the related tasks for the given execution
tags:
- preheat
operationId: ListTasks
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
- $ref: '#/parameters/executionId'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
responses:
'200':
description: List tasks success
headers:
X-Total-Count:
description: The total count of tasks
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Task'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/projects/{project_name}/preheat/policies/{preheat_policy_name}/executions/{execution_id}/tasks/{task_id}/logs:
get:
summary: Get the log text stream of the specified task for the given execution
description: Get the log text stream of the specified task for the given execution
tags:
- preheat
operationId: GetPreheatLog
produces:
- text/plain
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
- $ref: '#/parameters/preheatPolicyName'
- $ref: '#/parameters/executionId'
- $ref: '#/parameters/taskId'
responses:
'200':
description: Get log success
headers:
Content-Type:
description: Content type of response
type: string
schema:
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/projects/{project_name}/preheat/providers:
get:
summary: Get all providers at project level
description: Get all providers at project level
tags:
- preheat
operationId: ListProvidersUnderProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/projectName'
responses:
'200':
description: Success
schema:
type: array
items:
$ref: '#/definitions/ProviderUnderProject'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name_or_id}/robots:
get:
summary: Get all robot accounts of specified project
description: Get all robot accounts of specified project
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
tags:
- robotv1
operationId: ListRobotV1
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of robot accounts
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Robot'
'400':
$ref: '#/responses/400'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
post:
summary: Create a robot account
description: Create a robot account
tags:
- robotv1
operationId: CreateRobotV1
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: robot
in: body
description: The JSON object of a robot account.
required: true
schema:
$ref: '#/definitions/RobotCreateV1'
responses:
'201':
description: Created
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
Location:
description: The location of the resource
type: string
schema:
$ref: '#/definitions/RobotCreated'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/projects/{project_name_or_id}/robots/{robot_id}:
get:
summary: Get a robot account
description: This endpoint returns specific robot account information by robot ID.
tags:
- robotv1
operationId: GetRobotByIDV1
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/robotId'
responses:
'200':
description: Return matched robot information.
schema:
$ref: '#/definitions/Robot'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update status of robot account.
description: Used to disable/enable a specified robot account.
tags:
- robotv1
operationId: UpdateRobotV1
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/robotId'
- name: robot
in: body
description: The JSON object of a robot account.
required: true
schema:
$ref: '#/definitions/Robot'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
delete:
summary: Delete a robot account
description: This endpoint deletes specific robot account information by robot ID.
tags:
- robotv1
operationId: DeleteRobotV1
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/robotId'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/immutabletagrules':
get:
summary: List all immutable tag rules of current project
description: |
This endpoint returns the immutable tag rules of a project
tags:
- immutable
operationId: ListImmuRules
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of immutable tag
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/ImmutableRule'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Add an immutable tag rule to current project
description: |
This endpoint add an immutable tag rule to the project
tags:
- immutable
operationId: CreateImmuRule
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: ImmutableRule
in: body
required: true
schema:
$ref: '#/definitions/ImmutableRule'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/immutabletagrules/{immutable_rule_id}':
put:
summary: Update the immutable tag rule or enable or disable the rule
tags:
- immutable
operationId: UpdateImmuRule
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/immutableRuleId'
- name: ImmutableRule
in: body
required: true
schema:
$ref: '#/definitions/ImmutableRule'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
delete:
summary: Delete the immutable tag rule.
tags:
- immutable
operationId: DeleteImmuRule
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/immutableRuleId'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/webhook/policies':
get:
summary: List project webhook policies.
description: |
This endpoint returns webhook policies of a project.
tags:
- webhook
operationId: ListWebhookPoliciesOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/query'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of webhook policies.
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/WebhookPolicy'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Create project webhook policy.
description: |
This endpoint create a webhook policy if the project does not have one.
tags:
- webhook
operationId: CreateWebhookPolicyOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- name: policy
in: body
description: Properties "targets" and "event_types" needed.
required: true
schema:
$ref: '#/definitions/WebhookPolicy'
responses:
'201':
description: Project webhook policy create successfully.
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
Location:
description: The location of the resource
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/webhook/policies/{webhook_policy_id}':
get:
summary: Get project webhook policy
description: |
This endpoint returns specified webhook policy of a project.
tags:
- webhook
operationId: GetWebhookPolicyOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/webhookPolicyId'
responses:
'200':
description: Get webhook policy successfully.
schema:
$ref: '#/definitions/WebhookPolicy'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update webhook policy of a project.
description: |
This endpoint is aimed to update the webhook policy of a project.
tags:
- webhook
operationId: UpdateWebhookPolicyOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/webhookPolicyId'
- name: policy
in: body
description: All properties needed except "id", "project_id", "creation_time", "update_time".
required: true
schema:
$ref: '#/definitions/WebhookPolicy'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete webhook policy of a project
description: |
This endpoint is aimed to delete webhookpolicy of a project.
tags:
- webhook
operationId: DeleteWebhookPolicyOfProject
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/webhookPolicyId'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/webhook/lasttrigger':
get:
summary: Get project webhook policy last trigger info
description: |
This endpoint returns last trigger information of project webhook policy.
tags:
- webhook
operationId: LastTrigger
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
responses:
'200':
description: Test webhook connection successfully.
schema:
type: array
items:
$ref: '#/definitions/WebhookLastTrigger'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/webhook/jobs':
get:
summary: List project webhook jobs
description: |
This endpoint returns webhook jobs of a project.
tags:
- webhookjob
operationId: ListWebhookJobs
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: policy_id
in: query
type: integer
format: int64
required: true
description: The policy ID.
- name: status
in: query
description: The status of webhook job.
required: false
type: array
items:
type: string
responses:
'200':
description: List project webhook jobs successfully.
headers:
X-Total-Count:
description: The total count of available items
type: integer
Link:
description: Link to previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/WebhookJob'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/projects/{project_name_or_id}/webhook/events':
get:
summary: Get supported event types and notify types.
description: Get supportted event types and notify types.
tags:
- webhook
operationId: GetSupportedEventTypes
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/isResourceName'
- $ref: '#/parameters/projectNameOrId'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/SupportedWebhookEventTypes'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/usergroups:
get:
summary: Get all user groups information
description: Get all user groups information
operationId: listUserGroups
tags:
- usergroup
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Get user group successfully.
schema:
type: array
items:
$ref: '#/definitions/UserGroup'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Create user group
description: Create user group information
operationId: createUserGroup
tags:
- usergroup
parameters:
- $ref: '#/parameters/requestId'
- name: usergroup
in: body
schema:
$ref: '#/definitions/UserGroup'
responses:
'201':
description: User group created successfully.
headers:
Location:
type: string
description: The URL of the created resource
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
'/usergroups/{group_id}':
get:
summary: Get user group information
description: Get user group information
operationId: getUserGroup
tags:
- usergroup
parameters:
- $ref: '#/parameters/requestId'
- name: group_id
in: path
type: integer
format: int64
required: true
description: Group ID
responses:
'200':
description: User group get successfully.
schema:
$ref: '#/definitions/UserGroup'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update group information
description: Update user group information
operationId: updateUserGroup
tags:
- usergroup
parameters:
- $ref: '#/parameters/requestId'
- name: group_id
in: path
type: integer
format: int64
required: true
description: Group ID
- name: usergroup
in: body
required: false
schema:
$ref: '#/definitions/UserGroup'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete user group
description: Delete user group
operationId: deleteUserGroup
tags:
- usergroup
parameters:
- $ref: '#/parameters/requestId'
- name: group_id
type: integer
in: path
required: true
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/icons/{digest}:
get:
summary: Get artifact icon
description: Get the artifact icon with the specified digest. As the original icon image is resized and encoded before returning, the parameter "digest" in the path doesn't match the hash of the returned content
tags:
- icon
operationId: getIcon
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/digest'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Icon'
'400':
$ref: '#/responses/400'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/robots:
get:
summary: Get robot account
description: List the robot accounts with the specified level and project.
tags:
- robot
operationId: ListRobot
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of robot accounts
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Robot'
'400':
$ref: '#/responses/400'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
post:
summary: Create a robot account
description: Create a robot account
tags:
- robot
operationId: CreateRobot
parameters:
- $ref: '#/parameters/requestId'
- name: robot
in: body
description: The JSON object of a robot account.
required: true
schema:
$ref: '#/definitions/RobotCreate'
responses:
'201':
description: Created
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
Location:
description: The location of the resource
type: string
schema:
$ref: '#/definitions/RobotCreated'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
'/quotas':
get:
summary: List quotas
description: List quotas
tags:
- quota
operationId: listQuotas
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: reference
in: query
description: The reference type of quota.
required: false
type: string
- name: reference_id
in: query
description: The reference id of quota.
required: false
type: string
- name: sort
in: query
type: string
required: false
description: |
Sort method, valid values include:
'hard.resource_name', '-hard.resource_name', 'used.resource_name', '-used.resource_name'.
Here '-' stands for descending order, resource_name should be the real resource name of the quota.
responses:
'200':
description: Successfully retrieved the quotas.
schema:
type: array
items:
$ref: '#/definitions/Quota'
headers:
X-Total-Count:
description: The total count of access logs
type: integer
Link:
description: Link refers to the previous page and next page
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/quotas/{id}':
get:
summary: Get the specified quota
description: Get the specified quota
tags:
- quota
operationId: getQuota
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
required: true
description: Quota ID
responses:
'200':
description: Successfully retrieved the quota.
schema:
$ref: '#/definitions/Quota'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update the specified quota
description: Update hard limits of the specified quota
tags:
- quota
operationId: updateQuota
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
required: true
description: Quota ID
- name: hard
in: body
required: true
description: The new hard limits for the quota
schema:
$ref: '#/definitions/QuotaUpdateReq'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/robots/{robot_id}:
get:
summary: Get a robot account
description: This endpoint returns specific robot account information by robot ID.
tags:
- robot
operationId: GetRobotByID
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/robotId'
responses:
'200':
description: Return matched robot information.
schema:
$ref: '#/definitions/Robot'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update a robot account
description: This endpoint updates specific robot account information by robot ID.
tags:
- robot
operationId: UpdateRobot
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/robotId'
- name: robot
in: body
description: The JSON object of a robot account.
required: true
schema:
$ref: '#/definitions/Robot'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
patch:
summary: Refresh the robot secret
description: Refresh the robot secret
tags:
- robot
operationId: RefreshSec
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/robotId'
- name: robotSec
description: The JSON object of a robot account.
in: body
required: true
schema:
$ref: '#/definitions/RobotSec'
responses:
'200':
description: Return refreshed robot sec.
schema:
$ref: '#/definitions/RobotSec'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
delete:
summary: Delete a robot account
description: This endpoint deletes specific robot account information by robot ID.
tags:
- robot
operationId: DeleteRobot
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/robotId'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/replication/policies:
get:
summary: List replication policies
description: List replication policies
tags:
- replication
operationId: listReplicationPolicies
parameters:
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: name
in: query
type: string
required: false
description: Deprecated, use "query" instead. The policy name.
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of the resources
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/ReplicationPolicy'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Create a replication policy
description: Create a replication policy
tags:
- replication
operationId: createReplicationPolicy
parameters:
- name: policy
in: body
description: The replication policy
required: true
schema:
$ref: '#/definitions/ReplicationPolicy'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
/replication/policies/{id}:
get:
summary: Get the specific replication policy
description: Get the specific replication policy
tags:
- replication
operationId: getReplicationPolicy
parameters:
- name: id
in: path
type: integer
format: int64
required: true
description: Policy ID
responses:
'200':
description: Success
schema:
$ref: '#/definitions/ReplicationPolicy'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
delete:
summary: Delete the specific replication policy
description: Delete the specific replication policy
tags:
- replication
operationId: deleteReplicationPolicy
parameters:
- name: id
in: path
type: integer
format: int64
required: true
description: Replication policy ID
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
put:
summary: Update the replication policy
description: Update the replication policy
tags:
- replication
operationId: updateReplicationPolicy
parameters:
- name: id
in: path
type: integer
format: int64
required: true
description: The policy ID
- name: policy
in: body
description: The replication policy
required: true
schema:
$ref: '#/definitions/ReplicationPolicy'
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
/replication/executions:
get:
summary: List replication executions
description: List replication executions
tags:
- replication
operationId: listReplicationExecutions
parameters:
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: policy_id
in: query
type: integer
required: false
description: The ID of the policy that the executions belong to.
- name: status
in: query
type: string
required: false
description: The execution status.
- name: trigger
in: query
type: string
required: false
description: The trigger mode.
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of the resources
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/ReplicationExecution'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Start one replication execution
description: Start one replication execution according to the policy
tags:
- replication
operationId: startReplication
parameters:
- name: execution
in: body
description: The ID of policy that the execution belongs to
required: true
schema:
$ref: '#/definitions/StartReplicationExecution'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/replication/executions/{id}:
get:
summary: Get the specific replication execution
description: Get the replication execution specified by ID
tags:
- replication
operationId: getReplicationExecution
parameters:
- name: id
in: path
type: integer
format: int64
description: The ID of the execution.
required: true
responses:
'200':
description: Success
schema:
$ref: '#/definitions/ReplicationExecution'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Stop the specific replication execution
description: Stop the replication execution specified by ID
tags:
- replication
operationId: stopReplication
parameters:
- name: id
in: path
type: integer
format: int64
description: The ID of the execution.
required: true
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/replication/executions/{id}/tasks:
get:
summary: List replication tasks for a specific execution
description: List replication tasks for a specific execution
tags:
- replication
operationId: listReplicationTasks
parameters:
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: id
in: path
type: integer
format: int64
description: The ID of the execution that the tasks belongs to.
required: true
- name: status
in: query
type: string
required: false
description: The task status.
- name: resource_type
in: query
type: string
required: false
description: The resource type.
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of the resources
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/ReplicationTask'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/replication/executions/{id}/tasks/{task_id}/log:
get:
summary: Get the log of the specific replication task
description: Get the log of the specific replication task
tags:
- replication
operationId: getReplicationLog
produces:
- text/plain
parameters:
- name: id
in: path
type: integer
format: int64
description: The ID of the execution that the tasks belongs to.
required: true
- name: task_id
in: path
type: integer
format: int64
description: The ID of the task.
required: true
responses:
'200':
description: Success
headers:
Content-Type:
description: The content type of response body
type: string
schema:
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/replication/adapters:
get:
summary: List registry adapters
description: List registry adapters
tags:
- registry
operationId: listRegistryProviderTypes
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Success.
schema:
type: array
items:
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/replication/adapterinfos:
get:
summary: List all registered registry provider information
description: List all registered registry provider information
tags:
- registry
operationId: listRegistryProviderInfos
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Success.
schema:
type: object
additionalProperties:
$ref: '#/definitions/RegistryProviderInfo'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/registries:
post:
summary: Create a registry
description: Create a registry
tags:
- registry
operationId: createRegistry
parameters:
- $ref: '#/parameters/requestId'
- name: registry
in: body
description: The registry
required: true
schema:
$ref: '#/definitions/Registry'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
get:
summary: List the registries
description: List the registries
tags:
- registry
operationId: listRegistries
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: name
in: query
type: string
required: false
description: Deprecated, use `q` instead.
responses:
'200':
description: Success
headers:
X-Total-Count:
description: The total count of the resources
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/Registry'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/registries/ping:
post:
summary: Check status of a registry
description: Check status of a registry
tags:
- registry
operationId: pingRegistry
parameters:
- $ref: '#/parameters/requestId'
- name: registry
in: body
description: The registry
required: true
schema:
$ref: '#/definitions/RegistryPing'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/registries/{id}:
get:
summary: Get the specific registry
description: Get the specific registry
tags:
- registry
operationId: getRegistry
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Registry ID
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Registry'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete the specific registry
description: Delete the specific registry
tags:
- registry
operationId: deleteRegistry
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Registry ID
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
put:
summary: Update the registry
description: Update the registry
tags:
- registry
operationId: updateRegistry
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: The registry ID
- name: registry
in: body
description: The registry
required: true
schema:
$ref: '#/definitions/RegistryUpdate'
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
/registries/{id}/info:
get:
summary: Get the registry info
description: Get the registry info
tags:
- registry
operationId: getRegistryInfo
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Registry ID
responses:
'200':
description: Success
schema:
$ref: '#/definitions/RegistryInfo'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/scans/all/metrics:
get:
summary: Get the metrics of the latest scan all process
description: Get the metrics of the latest scan all process
tags:
- scanAll
operationId: getLatestScanAllMetrics
responses:
'200':
description: OK
schema:
$ref: '#/definitions/Stats'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
/scans/schedule/metrics:
get:
summary: Get the metrics of the latest scheduled scan all process
description: Get the metrics of the latest scheduled scan all process
tags:
- scanAll
operationId: getLatestScheduledScanAllMetrics
deprecated: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/Stats'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
/systeminfo:
get:
summary: Get general system info
operationId: getSystemInfo
description: |
This API is for retrieving general system info, this can be called by anonymous request. Some attributes will be omitted in the response when this API is called by anonymous request.
tags:
- systeminfo
responses:
'200':
description: Get general info successfully.
schema:
$ref: '#/definitions/GeneralInfo'
'500':
$ref: '#/responses/500'
/systeminfo/volumes:
get:
summary: Get system volume info (total/free size).
operationId: getVolumes
description: |
This endpoint is for retrieving system volume info that only provides for admin user. Note that the response only reflects the storage status of local disk.
tags:
- systeminfo
responses:
'200':
description: Get system volumes successfully.
schema:
$ref: '#/definitions/SystemInfo'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/systeminfo/getcert:
get:
summary: Get default root certificate.
operationId: getCert
description: |
This endpoint is for downloading a default root certificate.
tags:
- systeminfo
produces:
- application/octet-stream
responses:
'200':
description: Get default root certificate successfully.
schema:
type: file
headers:
Content-Disposition:
description: To set the filename of the downloaded file.
type: string
'404':
description: Not found the default root certificate.
'500':
$ref: '#/responses/500'
/system/oidc/ping:
post:
summary: Test the OIDC endpoint.
description: |
Test the OIDC endpoint, the setting of the endpoint is provided in the request. This API can only be called by system admin.
tags:
- oidc
operationId: pingOIDC
parameters:
- name: endpoint
in: body
description: Request body for OIDC endpoint to be tested.
required: true
schema:
type: object
properties:
url:
type: string
description: The URL of OIDC endpoint to be tested.
verify_cert:
type: boolean
description: Whether the certificate should be verified
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
/system/gc:
get:
summary: Get gc results.
description: This endpoint let user get gc execution history.
tags:
- gc
operationId: getGCHistory
parameters:
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: Get gc results successfully.
headers:
X-Total-Count:
description: The total count of history
type: integer
Link:
description: Link refers to the previous page and next page
type: string
schema:
type: array
items:
$ref: '#/definitions/GCHistory'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/system/gc/{gc_id}:
get:
summary: Get gc status.
description: This endpoint let user get gc status filtered by specific ID.
operationId: getGC
parameters:
- $ref: '#/parameters/gcId'
tags:
- gc
responses:
'200':
description: Get gc results successfully.
schema:
$ref: '#/definitions/GCHistory'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/system/gc/{gc_id}/log:
get:
summary: Get gc job log.
description: This endpoint let user get gc job logs filtered by specific ID.
operationId: getGCLog
parameters:
- $ref: '#/parameters/gcId'
tags:
- gc
produces:
- text/plain
responses:
'200':
description: Get successfully.
schema:
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/system/gc/schedule:
get:
summary: Get gc's schedule.
description: This endpoint is for get schedule of gc job.
operationId: getGCSchedule
tags:
- gc
responses:
'200':
description: Get gc's schedule.
schema:
$ref: '#/definitions/GCHistory'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Create a gc schedule.
description: |
This endpoint is for update gc schedule.
operationId: createGCSchedule
parameters:
- name: schedule
in: body
required: true
schema:
$ref: '#/definitions/Schedule'
description: Updates of gc's schedule.
tags:
- gc
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
put:
summary: Update gc's schedule.
description: |
This endpoint is for update gc schedule.
operationId: updateGCSchedule
parameters:
- name: schedule
in: body
required: true
schema:
$ref: '#/definitions/Schedule'
description: Updates of gc's schedule.
tags:
- gc
responses:
'200':
description: Updated gc's schedule successfully.
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/system/CVEAllowlist:
get:
summary: Get the system level allowlist of CVE.
description: Get the system level allowlist of CVE. This API can be called by all authenticated users.
operationId: getSystemCVEAllowlist
tags:
- SystemCVEAllowlist
responses:
'200':
description: Successfully retrieved the CVE allowlist.
schema:
$ref: "#/definitions/CVEAllowlist"
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
put:
summary: Update the system level allowlist of CVE.
description: This API overwrites the system level allowlist of CVE with the list in request body. Only system Admin
has permission to call this API.
operationId: putSystemCVEAllowlist
tags:
- SystemCVEAllowlist
parameters:
- in: body
name: allowlist
description: The allowlist with new content
schema:
$ref: "#/definitions/CVEAllowlist"
responses:
'200':
description: Successfully updated the CVE allowlist.
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/system/scanAll/schedule:
get:
summary: Get scan all's schedule.
description: This endpoint is for getting a schedule for the scan all job, which scans all of images in Harbor.
tags:
- scanAll
operationId: getScanAllSchedule
responses:
'200':
description: Get a schedule for the scan all job, which scans all of images in Harbor.
schema:
$ref: '#/definitions/Schedule'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
put:
summary: Update scan all's schedule.
description: This endpoint is for updating the schedule of scan all job, which scans all of images in Harbor.
parameters:
- name: schedule
in: body
required: true
schema:
$ref: '#/definitions/Schedule'
description: Updates the schedule of scan all job, which scans all of images in Harbor.
tags:
- scanAll
operationId: updateScanAllSchedule
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
post:
summary: Create a schedule or a manual trigger for the scan all job.
description: This endpoint is for creating a schedule or a manual trigger for the scan all job, which scans all of images in Harbor.
parameters:
- name: schedule
in: body
required: true
schema:
$ref: '#/definitions/Schedule'
description: Create a schedule or a manual trigger for the scan all job.
tags:
- scanAll
operationId: createScanAllSchedule
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'409':
$ref: '#/responses/409'
'412':
$ref: '#/responses/412'
'500':
$ref: '#/responses/500'
/ping:
get:
summary: Ping Harbor to check if it's alive.
description: This API simply replies a pong to indicate the process to handle API is up, disregarding the health status of dependent components.
tags:
- ping
produces:
- text/plain
responses:
'200':
description: The API server is alive
schema:
type: string
/retentions/metadatas:
get:
summary: Get Retention Metadatas
description: Get Retention Metadatas.
operationId: getRentenitionMetadata
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Get Retention Metadatas successfully.
schema:
$ref: '#/definitions/RetentionMetadata'
/retentions:
post:
summary: Create Retention Policy
operationId: createRetention
description: >-
Create Retention Policy, you can reference metadatas API for the policy model.
You can check project metadatas to find whether a retention policy is already binded.
This method should only be called when no retention policy binded to project yet.
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
- name: policy
in: body
description: Create Retention Policy successfully.
required: true
schema:
$ref: '#/definitions/RetentionPolicy'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/retentions/{id}:
get:
summary: Get Retention Policy
operationId: getRetention
description: Get Retention Policy.
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
responses:
'200':
description: Get Retention Policy successfully.
schema:
$ref: '#/definitions/RetentionPolicy'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
put:
summary: Update Retention Policy
operationId: updateRetention
description: >-
Update Retention Policy, you can reference metadatas API for the policy model.
You can check project metadatas to find whether a retention policy is already binded.
This method should only be called when retention policy has already binded to project.
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
- name: policy
in: body
required: true
schema:
$ref: '#/definitions/RetentionPolicy'
responses:
'200':
description: Update Retention Policy successfully.
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
delete:
summary: Delete Retention Policy
operationId: deleteRetention
description: >-
Delete Retention Policy, you can reference metadatas API for the policy model.
You can check project metadatas to find whether a retention policy is already binded.
This method should only be called when retention policy has already binded to project.
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
responses:
'200':
description: Update Retention Policy successfully.
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/retentions/{id}/executions:
post:
summary: Trigger a Retention Execution
operationId: triggerRetentionExecution
description: Trigger a Retention Execution, if dry_run is True, nothing would be deleted actually.
tags:
- Retention
produces:
- text/plain
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
- name: body
in: body
required: true
schema:
type: object
properties:
dry_run:
type: boolean
responses:
'200':
description: Trigger a Retention job successfully.
'201':
$ref: '#/responses/201'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
get:
summary: Get Retention executions
operationId: listRetentionExecutions
description: Get Retention executions, execution status may be delayed before job service schedule it up.
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
- name: page
in: query
type: integer
format: int64
required: false
description: The page number.
- name: page_size
in: query
type: integer
format: int64
required: false
description: The size of per page.
responses:
'200':
description: Get a Retention execution successfully.
schema:
type: array
items:
type: object
$ref: '#/definitions/RetentionExecution'
headers:
X-Total-Count:
description: The total count of available items
type: integer
Link:
description: Link to previous page and next page
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/retentions/{id}/executions/{eid}:
patch:
summary: Stop a Retention execution
operationId: operateRetentionExecution
description: Stop a Retention execution, only support "stop" action now.
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
- name: eid
in: path
type: integer
format: int64
required: true
description: Retention execution ID.
- name: body
in: body
description: The action, only support "stop" now.
required: true
schema:
type: object
properties:
action:
type: string
responses:
'200':
description: Stop a Retention job successfully.
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/retentions/{id}/executions/{eid}/tasks:
get:
summary: Get Retention tasks
operationId: listRetentionTasks
description: Get Retention tasks, each repository as a task.
tags:
- Retention
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
- name: eid
in: path
type: integer
format: int64
required: true
description: Retention execution ID.
- name: page
in: query
type: integer
format: int64
required: false
description: The page number.
- name: page_size
in: query
type: integer
format: int64
required: false
description: The size of per page.
responses:
'200':
description: Get Retention job tasks successfully.
schema:
type: array
items:
type: object
$ref: '#/definitions/RetentionExecutionTask'
headers:
X-Total-Count:
description: The total count of available items
type: integer
Link:
description: Link to previous page and next page
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/retentions/{id}/executions/{eid}/tasks/{tid}:
get:
summary: Get Retention job task log
operationId: getRetentionTaskLog
description: Get Retention job task log, tags ratain or deletion detail will be shown in a table.
tags:
- Retention
produces:
- text/plain
parameters:
- $ref: '#/parameters/requestId'
- name: id
in: path
type: integer
format: int64
required: true
description: Retention ID.
- name: eid
in: path
type: integer
format: int64
required: true
description: Retention execution ID.
- name: tid
in: path
type: integer
format: int64
required: true
description: Retention execution ID.
responses:
'200':
description: Get Retention job task log successfully.
schema:
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/scanners':
get:
summary: List scanner registrations
description: |
Returns a list of currently configured scanner registrations.
tags:
- scanner
operationId: listScanners
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: A list of scanner registrations.
schema:
type: array
items:
$ref: '#/definitions/ScannerRegistration'
headers:
X-Total-Count:
description: The total count of available items
type: integer
Link:
description: Link to previous page and next page
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Create a scanner registration
description: |
Creats a new scanner registration with the given data.
tags:
- scanner
operationId: createScanner
parameters:
- $ref: '#/parameters/requestId'
- name: registration
in: body
description: A scanner registration to be created.
required: true
schema:
$ref: '#/definitions/ScannerRegistrationReq'
responses:
'201':
description: Created successfully
headers:
Location:
type: string
description: The URL of the created resource
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/scanners/ping':
post:
summary: Tests scanner registration settings
description: |
Pings scanner adapter to test endpoint URL and authorization settings.
tags:
- scanner
operationId: pingScanner
parameters:
- $ref: '#/parameters/requestId'
- name: settings
in: body
description: A scanner registration settings to be tested.
required: true
schema:
$ref: '#/definitions/ScannerRegistrationSettings'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/scanners/{registration_id}':
get:
summary: Get a scanner registration details
description: |
Retruns the details of the specified scanner registration.
tags:
- scanner
operationId: getScanner
parameters:
- $ref: '#/parameters/requestId'
- name: registration_id
in: path
description: The scanner registration identifer.
required: true
type: string
responses:
'200':
description: The details of the scanner registration.
schema:
$ref: '#/definitions/ScannerRegistration'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update a scanner registration
description: |
Updates the specified scanner registration.
tags:
- scanner
operationId: updateScanner
parameters:
- $ref: '#/parameters/requestId'
- name: registration_id
in: path
description: The scanner registration identifier.
required: true
type: string
- name: registration
in: body
required: true
description: A scanner registraiton to be updated.
schema:
$ref: '#/definitions/ScannerRegistrationReq'
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Delete a scanner registration
description: |
Deletes the specified scanner registration.
tags:
- scanner
operationId: deleteScanner
parameters:
- $ref: '#/parameters/requestId'
- name: registration_id
in: path
description: The scanner registration identifier.
required: true
type: string
responses:
'200':
description: Deleted successfully and return the deleted registration
schema:
$ref: '#/definitions/ScannerRegistration'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
patch:
summary: Set system default scanner registration
description: |
Set the specified scanner registration as the system default one.
tags:
- scanner
operationId: setScannerAsDefault
parameters:
- name: registration_id
in: path
description: The scanner registration identifier.
required: true
type: string
- name: payload
in: body
required: true
schema:
$ref: '#/definitions/IsDefault'
responses:
'200':
description: Successfully set the specified scanner registration as system default
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
'/scanners/{registration_id}/metadata':
get:
summary: Get the metadata of the specified scanner registration
description: |
Get the metadata of the specified scanner registration, including the capabilities and customized properties.
tags:
- scanner
operationId: getScannerMetadata
parameters:
- $ref: '#/parameters/requestId'
- name: registration_id
in: path
required: true
description: The scanner registration identifier.
type: string
responses:
'200':
description: The metadata of the specified scanner adapter
schema:
$ref: '#/definitions/ScannerAdapterMetadata'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
/users:
get:
summary: List users
tags:
- user
operationId: listUsers
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
responses:
'200':
description: return the list of users.
schema:
type: array
items:
$ref: '#/definitions/UserResp'
headers:
X-Total-Count:
description: The total count of users
type: integer
Link:
description: Link to previous page and next page
type: string
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'500':
$ref: '#/responses/500'
post:
summary: Create a local user.
description: This API can be used only when the authentication mode is for local DB. When self registration is disabled.
tags:
- user
operationId: createUser
parameters:
- $ref: '#/parameters/requestId'
- name: userReq
in: body
description: The new user
required: true
schema:
$ref: '#/definitions/UserCreationReq'
responses:
'201':
$ref: '#/responses/201'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'403':
description: When the self registration is disabled, non-admin does not have permission to create user. When self registration is enabled, this API can only be called from UI portal, calling it via script will get a 403 error.
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
/users/current:
get:
summary: Get current user info.
tags:
- user
operationId: getCurrentUserInfo
parameters:
- $ref: '#/parameters/requestId'
responses:
'200':
description: Get current user information successfully.
schema:
$ref: '#/definitions/UserResp'
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
/users/search:
get:
summary: Search users by username
description: |
This endpoint is to search the users by username. It's open for all authenticated requests.
tags:
- user
operationId: searchUsers
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: username
in: query
type: string
required: true
description: Username for filtering results.
responses:
'200':
description: Search users by username successfully.
schema:
type: array
items:
$ref: '#/definitions/UserSearchRespItem'
headers:
X-Total-Count:
description: The total count of available items
type: integer
Link:
description: Link to previous page and next page
type: string
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
'/users/{user_id}':
get:
summary: Get a user's profile.
parameters:
- $ref: '#/parameters/requestId'
- name: user_id
in: path
type: integer
format: int
required: true
tags:
- user
operationId: getUser
responses:
'200':
description: Get user's info successfully.
schema:
$ref: '#/definitions/UserResp'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update user's profile.
parameters:
- $ref: '#/parameters/requestId'
- name: user_id
in: path
type: integer
format: int
required: true
description: Registered user ID
- name: profile
in: body
description: 'Only email, realname and comment can be modified.'
required: true
schema:
$ref: '#/definitions/UserProfile'
tags:
- user
operationId: updateUserProfile
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
delete:
summary: Mark a registered user as be removed.
description: |
This endpoint let administrator of Harbor mark a registered user as removed.It actually won't be deleted from DB.
parameters:
- name: user_id
in: path
type: integer
format: int
required: true
description: User ID for marking as to be removed.
tags:
- user
operationId: deleteUser
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
/users/{user_id}/sysadmin:
put:
summary: Update a registered user to change to be an administrator of Harbor.
tags:
- user
operationId: setUserSysAdmin
parameters:
- name: user_id
in: path
type: integer
format: int
required: true
- name: sysadmin_flag
in: body
description: Toggle a user to admin or not.
required: true
schema:
$ref: '#/definitions/UserSysAdminFlag'
responses:
'200':
$ref: '#/responses/200'
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'500':
description: Unexpected internal errors.
'/users/{user_id}/password':
put:
summary: Change the password on a user that already exists.
description: |
This endpoint is for user to update password. Users with the admin role can change any user's password. Regular users can change only their own password.
tags:
- user
operationId: updateUserPassword
parameters:
- name: user_id
in: path
type: integer
format: int
required: true
- name: password
in: body
description: Password to be updated, the attribute 'old_password' is optional when the API is called by the system administrator.
required: true
schema:
$ref: '#/definitions/PasswordReq'
responses:
'200':
$ref: '#/responses/200'
'400':
description: Invalid user ID; Password does not meet requirement
'401':
$ref: '#/responses/401'
'403':
description: The caller does not have permission to update the password of the user with given ID, or the old password in request body is not correct.
'500':
$ref: '#/responses/500'
/users/current/permissions:
get:
summary: Get current user permissions.
tags:
- user
operationId: getCurrentUserPermissions
parameters:
- name: scope
in: query
type: string
required: false
description: The scope for the permission
- name: relative
in: query
type: boolean
required: false
description: |
If true, the resources in the response are relative to the scope,
eg for resource '/project/1/repository' if relative is 'true' then the resource in response will be 'repository'.
responses:
'200':
description: Get current user permission successfully.
schema:
type: array
items:
$ref: '#/definitions/Permission'
'401':
description: User need to log in first.
'500':
description: Internal errors.
'/users/{user_id}/cli_secret':
put:
summary: Set CLI secret for a user.
description: >-
This endpoint let user generate a new CLI secret for himself. This API only works when auth mode is set to 'OIDC'.
Once this API returns with successful status, the old secret will be invalid, as there will be only one CLI secret
for a user.
tags:
- user
operationId: setCliSecret
parameters:
- $ref: '#/parameters/requestId'
- name: user_id
in: path
type: integer
format: int
required: true
description: User ID
- name: secret
in: body
required: true
schema:
$ref: '#/definitions/OIDCCliSecretReq'
responses:
'200':
description: The secret is successfully updated
'400':
description: Invalid user ID. Or user is not onboarded via OIDC authentication. Or the secret does not meet the standard.
'401':
$ref: '#/responses/401'
'403':
$ref: '#/responses/403'
'404':
$ref: '#/responses/404'
'412':
description: The auth mode of the system is not "oidc_auth", or the user is not onboarded via OIDC AuthN.
'500':
$ref: '#/responses/500'
/labels:
get:
summary: List labels according to the query strings.
description: |
This endpoint let user list labels by name, scope and project_id
tags:
- label
operationId: ListLabels
parameters:
- $ref: '#/parameters/requestId'
- $ref: '#/parameters/query'
- $ref: '#/parameters/sort'
- $ref: '#/parameters/page'
- $ref: '#/parameters/pageSize'
- name: name
in: query
type: string
required: false
description: The label name.
- name: scope
in: query
type: string
required: false
description: The label scope. Valid values are g and p. g for global labels and p for project labels.
- name: project_id
in: query
type: integer
format: int64
required: false
description: Relevant project ID, required when scope is p.
responses:
'200':
description: Get successfully.
schema:
type: array
items:
$ref: '#/definitions/Label'
headers:
X-Total-Count:
description: The total count of available items
type: integer
Link:
description: Link to previous page and next page
type: string
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'500':
$ref: '#/responses/500'
post:
summary: Post creates a label
description: |
This endpoint let user creates a label.
tags:
- label
operationId: CreateLabel
parameters:
- name: label
in: body
description: The json object of label.
required: true
schema:
$ref: '#/definitions/Label'
responses:
'201':
description: Create successfully.
headers:
Location:
type: string
description: The URL of the created resource
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'409':
$ref: '#/responses/409'
'415':
$ref: '#/responses/415'
'500':
$ref: '#/responses/500'
'/labels/{label_id}':
get:
summary: Get the label specified by ID.
description: |
This endpoint let user get the label by specific ID.
tags:
- label
operationId: GetLabelByID
parameters:
- $ref: '#/parameters/labelId'
responses:
'200':
description: Get successfully.
schema:
$ref: '#/definitions/Label'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
put:
summary: Update the label properties.
description: |
This endpoint let user update label properties.
tags:
- label
operationId: UpdateLabel
parameters:
- $ref: '#/parameters/labelId'
- name: label
in: body
description: The updated label json object.
required: true
schema:
$ref: '#/definitions/Label'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'409':
$ref: '#/responses/409'
'500':
$ref: '#/responses/500'
delete:
summary: Delete the label specified by ID.
description: |
Delete the label specified by ID.
tags:
- label
operationId: DeleteLabel
parameters:
- $ref: '#/parameters/labelId'
responses:
'200':
$ref: '#/responses/200'
'400':
$ref: '#/responses/400'
'401':
$ref: '#/responses/401'
'404':
$ref: '#/responses/404'
'500':
$ref: '#/responses/500'
parameters:
query:
name: q
description: Query string to query resources. Supported query patterns are "exact match(k=v)", "fuzzy match(k=~v)", "range(k=[min~max])", "list with union releationship(k={v1 v2 v3})" and "list with intersetion relationship(k=(v1 v2 v3))". The value of range and list can be string(enclosed by " or '), integer or time(in format "2020-04-09 02:36:00"). All of these query patterns should be put in the query string "q=xxx" and splitted by ",". e.g. q=k1=v1,k2=~v2,k3=[min~max]
in: query
type: string
required: false
sort:
name: sort
description: Sort the resource list in ascending or descending order. e.g. sort by field1 in ascending orderr and field2 in descending order with "sort=field1,-field2"
in: query
type: string
required: false
page:
name: page
in: query
type: integer
format: int64
required: false
description: The page number
default: 1
pageSize:
name: page_size
in: query
type: integer
format: int64
required: false
description: The size of per page
default: 10
maximum: 100
requestId:
name: X-Request-Id
description: An unique ID for the request
in: header
type: string
required: false
minLength: 1
resourceNameInLocation:
name: X-Resource-Name-In-Location
description: The flag to indicate whether to return the name of the resource in Location. When X-Resource-Name-In-Location is true, the Location will return the name of the resource.
in: header
type: boolean
required: false
default: false
isResourceName:
name: X-Is-Resource-Name
description: The flag to indicate whether the parameter which supports both name and id in the path is the name of the resource. When the X-Is-Resource-Name is false and the parameter can be converted to an integer, the parameter will be as an id, otherwise, it will be as a name.
in: header
type: boolean
required: false
default: false
acceptVulnerabilities:
name: X-Accept-Vulnerabilities
in: header
type: string
default: 'application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0'
description: |-
A comma-separated lists of MIME types for the scan report or scan summary. The first mime type will be used when the report found for it.
Currently the mime type supports 'application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0' and 'application/vnd.security.vulnerability.report; version=1.1'
projectName:
name: project_name
in: path
description: The name of the project
required: true
type: string
projectNameOrId:
name: project_name_or_id
in: path
description: The name or id of the project
required: true
type: string
repositoryName:
name: repository_name
in: path
description: The name of the repository. If it contains slash, encode it with URL encoding. e.g. a/b -> a%252Fb
required: true
type: string
reference:
name: reference
in: path
description: The reference of the artifact, can be digest or tag
required: true
type: string
digest:
name: digest
in: path
description: The digest of the resource
required: true
type: string
tagName:
name: tag_name
in: path
description: The name of the tag
required: true
type: string
instanceName:
name: preheat_instance_name
in: path
description: Instance Name
required: true
type: string
preheatPolicyName:
name: preheat_policy_name
in: path
description: Preheat Policy Name
required: true
type: string
executionId:
name: execution_id
in: path
description: Execution ID
required: true
type: integer
taskId:
name: task_id
in: path
description: Task ID
required: true
type: integer
robotId:
name: robot_id
in: path
description: Robot ID
required: true
type: integer
gcId:
name: gc_id
in: path
description: The ID of the gc log
required: true
type: integer
format: int64
labelId:
name: label_id
in: path
description: Label ID
required: true
type: integer
format: int64
webhookPolicyId:
name: webhook_policy_id
in: path
description: The ID of the webhook policy
required: true
type: integer
format: int64
immutableRuleId:
name: immutable_rule_id
in: path
description: The ID of the immutable rule
required: true
type: integer
format: int64
responses:
'200':
description: Success
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
'201':
description: Created
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
Location:
description: The location of the resource
type: string
'202':
description: Accepted
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
'400':
description: Bad request
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'401':
description: Unauthorized
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'403':
description: Forbidden
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'404':
description: Not found
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'405':
description: Method not allowed
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'409':
description: Conflict
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'412':
description: Precondition failed
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'415':
description: Unsupported MediaType
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
'500':
description: Internal server error
headers:
X-Request-Id:
description: The ID of the corresponding request for the response
type: string
schema:
$ref: '#/definitions/Errors'
definitions:
Errors:
description: The error array that describe the errors got during the handling of request
type: object
properties:
errors:
type: array
items:
$ref: '#/definitions/Error'
Error:
description: a model for all the error response coming from harbor
type: object
properties:
code:
type: string
description: The error code
message:
type: string
description: The error message
Search:
type: object
properties:
project:
description: Search results of the projects that matched the filter keywords.
type: array
items:
$ref: '#/definitions/Project'
repository:
description: Search results of the repositories that matched the filter keywords.
type: array
items:
$ref: '#/definitions/SearchRepository'
chart:
description: Search results of the charts that macthed the filter keywords.
type: array
items:
$ref: '#/definitions/SearchResult'
x-omitempty: true
x-isnullable: true
SearchRepository:
type: object
properties:
project_id:
type: integer
description: The ID of the project that the repository belongs to
project_name:
type: string
description: The name of the project that the repository belongs to
project_public:
type: boolean
description: 'The flag to indicate the publicity of the project that the repository belongs to (1 is public, 0 is not)'
repository_name:
type: string
description: The name of the repository
pull_count:
type: integer
description: The count how many times the repository is pulled
artifact_count:
type: integer
description: The count of artifacts in the repository
SearchResult:
type: object
description: The chart search result item
properties:
Name:
type: string
description: The chart name with repo name
Score:
type: integer
description: The matched level
Chart:
$ref: '#/definitions/ChartVersion'
ChartVersion:
type: object
description: A specified chart entry
allOf:
- $ref: '#/definitions/ChartMetadata'
- type: object
properties:
created:
type: string
description: The created time of the chart entry
removed:
type: boolean
description: A flag to indicate if the chart entry is removed
digest:
type: string
description: The digest value of the chart entry
urls:
type: array
description: The urls of the chart entry
items:
type: string
properties:
labels:
type: array
description: A list of label
items:
$ref: '#/definitions/Label'
ChartMetadata:
type: object
description: The metadata of chart version
required:
- name
- version
- engine
- icon
- apiVersion
- appVersion
properties:
name:
type: string
description: The name of the chart
home:
type: string
description: The URL to the relevant project page
sources:
type: array
description: The URL to the source code of chart
items:
type: string
version:
type: string
description: A SemVer 2 version of chart
description:
type: string
description: A one-sentence description of chart
keywords:
type: array
description: A list of string keywords
items:
type: string
engine:
type: string
description: The name of template engine
icon:
type: string
description: The URL to an icon file
apiVersion:
type: string
description: The API version of this chart
appVersion:
type: string
description: The version of the application enclosed in the chart
deprecated:
type: boolean
description: Whether or not this chart is deprecated
Repository:
type: object
properties:
id:
type: integer
format: int64
description: The ID of the repository
project_id:
type: integer
format: int64
description: The ID of the project that the repository belongs to
name:
type: string
description: The name of the repository
description:
type: string
description: The description of the repository
artifact_count:
type: integer
format: int64
description: The count of the artifacts inside the repository
pull_count:
type: integer
format: int64
description: The count that the artifact inside the repository pulled
creation_time:
type: string
format: date-time
description: The creation time of the repository
update_time:
type: string
format: date-time
description: The update time of the repository
Artifact:
type: object
properties:
id:
type: integer
format: int64
description: The ID of the artifact
type:
type: string
description: The type of the artifact, e.g. image, chart, etc
media_type:
type: string
description: The media type of the artifact
manifest_media_type:
type: string
description: The manifest media type of the artifact
project_id:
type: integer
format: int64
description: The ID of the project that the artifact belongs to
repository_id:
type: integer
format: int64
description: The ID of the repository that the artifact belongs to
digest:
type: string
description: The digest of the artifact
size:
type: integer
format: int64
description: The size of the artifact
icon:
type: string
description: The digest of the icon
push_time:
type: string
format: date-time
description: The push time of the artifact
pull_time:
type: string
format: date-time
description: The latest pull time of the artifact
extra_attrs:
$ref: '#/definitions/ExtraAttrs'
annotations:
$ref: '#/definitions/Annotations'
references:
type: array
items:
$ref: '#/definitions/Reference'
tags:
type: array
items:
$ref: '#/definitions/Tag'
addition_links:
$ref: '#/definitions/AdditionLinks'
labels:
type: array
items:
$ref: '#/definitions/Label'
scan_overview:
$ref: '#/definitions/ScanOverview'
description: The overview of the scan result.
Tag:
type: object
properties:
id:
type: integer
format: int64
description: The ID of the tag
repository_id:
type: integer
format: int64
description: The ID of the repository that the tag belongs to
artifact_id:
type: integer
format: int64
description: The ID of the artifact that the tag attached to
name:
type: string
description: The name of the tag
push_time:
type: string
format: date-time
description: The push time of the tag
pull_time:
type: string
format: date-time
description: The latest pull time of the tag
immutable:
type: boolean
x-omitempty: false
description: The immutable status of the tag
signed:
type: boolean
x-omitempty: false
description: The attribute indicates whether the tag is signed or not
ExtraAttrs:
type: object
additionalProperties:
type: object
Annotations:
type: object
additionalProperties:
type: string
AdditionLinks:
type: object
additionalProperties:
$ref: '#/definitions/AdditionLink'
AdditionLink:
type: object
properties:
href:
type: string
description: The link of the addition
absolute:
type: boolean
x-omitempty: false
description: Determine whether the link is an absolute URL or not
Reference:
type: object
properties:
parent_id:
type: integer
format: int64
description: The parent ID of the reference
child_id:
type: integer
format: int64
description: The child ID of the reference
child_digest:
type: string
description: The digest of the child artifact
platform:
$ref: '#/definitions/Platform'
annotations:
$ref: '#/definitions/Annotations'
urls:
type: array
description: The download URLs
items:
type: string
Platform:
type: object
properties:
architecture:
type: string
description: The architecture that the artifact applys to
os:
type: string
description: The OS that the artifact applys to
'''os.version''':
type: string
description: The version of the OS that the artifact applys to
'''os.features''':
type: array
description: The features of the OS that the artifact applys to
items:
type: string
variant:
type: string
description: The variant of the CPU
Label:
type: object
properties:
id:
type: integer
format: int64
description: The ID of the label
name:
type: string
description: The name the label
description:
type: string
description: The description the label
color:
type: string
description: The color the label
scope:
type: string
description: The scope the label
project_id:
type: integer
format: int64
description: The ID of project that the label belongs to
creation_time:
type: string
format: date-time
description: The creation time the label
update_time:
type: string
format: date-time
description: The update time of the label
Scanner:
type: object
properties:
name:
type: string
description: Name of the scanner
example: "Trivy"
vendor:
type: string
description: Name of the scanner provider
example: "Aqua Security"
version:
type: string
description: Version of the scanner adapter
example: "v0.9.1"
ScanOverview:
type: object
description: 'The scan overview attached in the metadata of tag'
additionalProperties:
$ref: '#/definitions/NativeReportSummary'
NativeReportSummary:
type: object
description: 'The summary for the native report'
properties:
report_id:
type: string
description: 'id of the native scan report'
example: '5f62c830-f996-11e9-957f-0242c0a89008'
scan_status:
type: string
description: 'The status of the report generating process'
example: 'Success'
severity:
type: string
description: 'The overall severity'
example: 'High'
duration:
type: integer
format: int64
description: 'The seconds spent for generating the report'
example: 300
summary:
$ref: '#/definitions/VulnerabilitySummary'
start_time:
type: string
format: date-time
description: 'The start time of the scan process that generating report'
example: '2006-01-02T14:04:05'
end_time:
type: string
format: date-time
description: 'The end time of the scan process that generating report'
example: '2006-01-02T15:04:05'
complete_percent:
type: integer
description: 'The complete percent of the scanning which value is between 0 and 100'
example: 100
scanner:
$ref: '#/definitions/Scanner'
VulnerabilitySummary:
type: object
description: |
VulnerabilitySummary contains the total number of the foun d vulnerabilities number and numbers of each severity level.
properties:
total:
type: integer
format: int
description: 'The total number of the found vulnerabilities'
example: 500
x-omitempty: false
fixable:
type: integer
format: int
description: 'The number of the fixable vulnerabilities'
example: 100
x-omitempty: false
summary:
type: object
description: 'Numbers of the vulnerabilities with different severity'
additionalProperties:
type: integer
format: int
example: 10
example:
'Critical': 5
'High': 5
x-omitempty: false
AuditLog:
type: object
properties:
id:
type: integer
description: The ID of the audit log entry.
username:
type: string
description: Username of the user in this log entry.
resource:
type: string
description: Name of the repository in this log entry.
resource_type:
type: string
description: Tag of the repository in this log entry.
operation:
type: string
description: The operation against the repository in this log entry.
op_time:
type: string
format: date-time
example: '2006-01-02T15:04:05'
description: The time when this operation is triggered.
Metadata:
type: object
properties:
id:
type: string
description: id
name:
type: string
description: name
icon:
type: string
description: icon
maintainers:
type: array
description: maintainers
items:
type: string
version:
type: string
description: version
source:
type: string
description: source
Instance:
type: object
properties:
id:
type: integer
description: Unique ID
name:
type: string
description: Instance name
description:
type: string
description: Description of instance
vendor:
type: string
description: Based on which driver, identified by ID
endpoint:
type: string
description: The service endpoint of this instance
auth_mode:
type: string
description: The authentication way supported
auth_info:
type: object
description: The auth credential data if exists
additionalProperties:
type: string
status:
type: string
description: The health status
enabled:
type: boolean
description: Whether the instance is activated or not
x-omitempty: false
default:
type: boolean
description: Whether the instance is default or not
x-omitempty: false
insecure:
type: boolean
description: Whether the instance endpoint is insecure or not
x-omitempty: false
setup_timestamp:
type: integer
format: int64
description: The timestamp of instance setting up
PreheatPolicy:
type: object
properties:
id:
type: integer
description: The ID of preheat policy
name:
type: string
description: The Name of preheat policy
description:
type: string
description: The Description of preheat policy
project_id:
type: integer
description: The ID of preheat policy project
provider_id:
type: integer
description: The ID of preheat policy provider
provider_name:
type: string
description: The Name of preheat policy provider
filters:
type: string
description: The Filters of preheat policy
trigger:
type: string
description: The Trigger of preheat policy
enabled:
type: boolean
description: Whether the preheat policy enabled
x-omitempty: false
creation_time:
type: string
format: date-time
description: The Create Time of preheat policy
update_time:
type: string
format: date-time
description: The Update Time of preheat policy
Metrics:
type: object
properties:
task_count:
type: integer
description: The count of task
success_task_count:
type: integer
description: The count of success task
error_task_count:
type: integer
description: The count of error task
pending_task_count:
type: integer
description: The count of pending task
running_task_count:
type: integer
description: The count of running task
scheduled_task_count:
type: integer
description: The count of scheduled task
stopped_task_count:
type: integer
description: The count of stopped task
Execution:
type: object
properties:
id:
type: integer
description: The ID of execution
vendor_type:
type: string
description: The vendor type of execution
vendor_id:
type: integer
description: The vendor id of execution
status:
type: string
description: The status of execution
status_message:
type: string
description: The status message of execution
metrics:
$ref: '#/definitions/Metrics'
trigger:
type: string
description: The trigger of execution
extra_attrs:
$ref: '#/definitions/ExtraAttrs'
start_time:
type: string
description: The start time of execution
end_time:
type: string
description: The end time of execution
Task:
type: object
properties:
id:
type: integer
description: The ID of task
execution_id:
type: integer
description: The ID of task execution
status:
type: string
description: The status of task
status_message:
type: string
description: The status message of task
run_count:
type: integer
format: int32
description: The count of task run
extra_attrs:
$ref: '#/definitions/ExtraAttrs'
creation_time:
type: string
description: The creation time of task
update_time:
type: string
description: The update time of task
start_time:
type: string
description: The start time of task
end_time:
type: string
description: The end time of task
ProviderUnderProject:
type: object
properties:
id:
type: integer
provider:
type: string
enabled:
type: boolean
default:
type: boolean
Icon:
type: object
properties:
content-type:
type: string
description: The content type of the icon
content:
type: string
description: The base64 encoded content of the icon
ProjectReq:
type: object
properties:
project_name:
type: string
description: The name of the project.
public:
type: boolean
description: deprecated, reserved for project creation in replication
x-nullable: true
metadata:
description: The metadata of the project.
$ref: '#/definitions/ProjectMetadata'
cve_allowlist:
description: The CVE allowlist of the project.
$ref: '#/definitions/CVEAllowlist'
storage_limit:
type: integer
format: int64
description: The storage quota of the project.
x-nullable: true
registry_id:
type: integer
format: int64
description: The ID of referenced registry when creating the proxy cache project
x-nullable: true
Project:
type: object
properties:
project_id:
type: integer
format: int32
description: Project ID
owner_id:
type: integer
format: int32
description: The owner ID of the project always means the creator of the project.
name:
type: string
description: The name of the project.
registry_id:
type: integer
format: int64
description: The ID of referenced registry when the project is a proxy cache project.
creation_time:
type: string
format: date-time
description: The creation time of the project.
update_time:
type: string
format: date-time
description: The update time of the project.
deleted:
type: boolean
description: A deletion mark of the project.
owner_name:
type: string
description: The owner name of the project.
togglable:
type: boolean
description: Correspond to the UI about whether the project's publicity is updatable (for UI)
current_user_role_id:
type: integer
description: The role ID with highest permission of the current user who triggered the API (for UI). This attribute is deprecated and will be removed in future versions.
current_user_role_ids:
type: array
items:
type: integer
format: int32
description: The list of role ID of the current user who triggered the API (for UI)
repo_count:
type: integer
description: The number of the repositories under this project.
x-omitempty: false
chart_count:
type: integer
description: The total number of charts under this project.
x-omitempty: false
metadata:
description: The metadata of the project.
$ref: '#/definitions/ProjectMetadata'
cve_allowlist:
description: The CVE allowlist of this project.
$ref: '#/definitions/CVEAllowlist'
ProjectDeletable:
type: object
properties:
deletable:
type: boolean
description: Whether the project can be deleted.
message:
type: string
description: The detail message when the project can not be deleted.
ProjectMetadata:
type: object
properties:
public:
type: string
description: 'The public status of the project. The valid values are "true", "false".'
enable_content_trust:
type: string
description: 'Whether content trust is enabled or not. If it is enabled, user can''t pull unsigned images from this project. The valid values are "true", "false".'
x-nullable: true
prevent_vul:
type: string
description: 'Whether prevent the vulnerable images from running. The valid values are "true", "false".'
x-nullable: true
severity:
type: string
description: 'If the vulnerability is high than severity defined here, the images can''t be pulled. The valid values are "none", "low", "medium", "high", "critical".'
x-nullable: true
auto_scan:
type: string
description: 'Whether scan images automatically when pushing. The valid values are "true", "false".'
x-nullable: true
reuse_sys_cve_allowlist:
type: string
description: 'Whether this project reuse the system level CVE allowlist as the allowlist of its own. The valid values are "true", "false".
If it is set to "true" the actual allowlist associate with this project, if any, will be ignored.'
x-nullable: true
retention_id:
type: string
description: 'The ID of the tag retention policy for the project'
x-nullable: true
ProjectSummary:
type: object
properties:
repo_count:
type: integer
description: The number of the repositories under this project.
x-omitempty: false
chart_count:
type: integer
description: The total number of charts under this project.
x-omitempty: false
project_admin_count:
type: integer
description: The total number of project admin members.
maintainer_count:
type: integer
description: The total number of maintainer members.
developer_count:
type: integer
description: The total number of developer members.
guest_count:
type: integer
description: The total number of guest members.
limited_guest_count:
type: integer
description: The total number of limited guest members.
quota:
$ref: "#/definitions/ProjectSummaryQuota"
registry:
$ref: "#/definitions/Registry"
ProjectSummaryQuota:
type: object
properties:
hard:
$ref: "#/definitions/ResourceList"
description: The hard limits of the quota
used:
$ref: "#/definitions/ResourceList"
description: The used status of the quota
ProjectScanner:
type: object
required:
- uuid
properties:
uuid:
type: string
description: The identifier of the scanner registration
CVEAllowlist:
type: object
description: The CVE Allowlist for system or project
properties:
id:
type: integer
description: ID of the allowlist
project_id:
type: integer
description: ID of the project which the allowlist belongs to. For system level allowlist this attribute is zero.
expires_at:
type: integer
description: the time for expiration of the allowlist, in the form of seconds since epoch. This is an optional attribute, if it's not set the CVE allowlist does not expire.
x-nullable: true
items:
type: array
items:
$ref: "#/definitions/CVEAllowlistItem"
creation_time:
type: string
format: date-time
description: The creation time of the allowlist.
update_time:
type: string
format: date-time
description: The update time of the allowlist.
CVEAllowlistItem:
type: object
description: The item in CVE allowlist
properties:
cve_id:
type: string
description: The ID of the CVE, such as "CVE-2019-10164"
ReplicationPolicy:
type: object
properties:
id:
type: integer
format: int64
description: The policy ID.
name:
type: string
description: The policy name.
description:
type: string
description: The description of the policy.
src_registry:
description: The source registry.
$ref: '#/definitions/Registry'
dest_registry:
description: The destination registry.
$ref: '#/definitions/Registry'
dest_namespace:
type: string
description: The destination namespace.
dest_namespace_replace_count:
type: integer
format: int8
description: |-
Specify how many path components will be replaced by the provided destination namespace.
The default value is -1 in which case the legacy mode will be applied.
x-isnullable: true # make this field optional to keep backward compatibility
trigger:
$ref: '#/definitions/ReplicationTrigger'
filters:
type: array
description: The replication policy filter array.
items:
$ref: '#/definitions/ReplicationFilter'
replicate_deletion:
type: boolean
description: Whether to replicate the deletion operation.
deletion:
type: boolean
description: Deprecated, use "replicate_deletion" instead. Whether to replicate the deletion operation.
override:
type: boolean
description: Whether to override the resources on the destination registry.
enabled:
type: boolean
description: Whether the policy is enabled or not.
creation_time:
type: string
format: date-time
description: The create time of the policy.
update_time:
type: string
format: date-time
description: The update time of the policy.
ReplicationTrigger:
type: object
properties:
type:
type: string
description: 'The replication policy trigger type. The valid values are manual, event_based and scheduled.'
trigger_settings:
$ref: '#/definitions/ReplicationTriggerSettings'
ReplicationTriggerSettings:
type: object
properties:
cron:
type: string
description: The cron string for scheduled trigger
ReplicationFilter:
type: object
properties:
type:
type: string
description: 'The replication policy filter type.'
value:
type: object
description: 'The value of replication policy filter.'
RegistryCredential:
type: object
properties:
type:
type: string
description: Credential type, such as 'basic', 'oauth'.
access_key:
type: string
description: Access key, e.g. user name when credential type is 'basic'.
access_secret:
type: string
description: Access secret, e.g. password when credential type is 'basic'.
Registry:
type: object
properties:
id:
type: integer
format: int64
description: The registry ID.
x-omitempty: false
url:
type: string
description: The registry URL string.
name:
type: string
description: The registry name.
credential:
$ref: '#/definitions/RegistryCredential'
type:
type: string
description: Type of the registry, e.g. 'harbor'.
insecure:
type: boolean
description: Whether or not the certificate will be verified when Harbor tries to access the server.
description:
type: string
description: Description of the registry.
status:
type: string
description: Health status of the registry.
creation_time:
type: string
format: date-time
description: The create time of the policy.
update_time:
type: string
format: date-time
description: The update time of the policy.
RegistryUpdate:
type: object
properties:
name:
type: string
description: The registry name.
x-nullable: true
description:
type: string
description: Description of the registry.
x-nullable: true
url:
type: string
description: The registry URL.
x-nullable: true
credential_type:
type: string
description: Credential type of the registry, e.g. 'basic'.
x-nullable: true
access_key:
type: string
description: The registry access key.
x-nullable: true
access_secret:
type: string
description: The registry access secret.
x-nullable: true
insecure:
type: boolean
description: Whether or not the certificate will be verified when Harbor tries to access the server.
x-nullable: true
RegistryPing:
type: object
properties:
id:
type: integer
format: int64
description: The registry ID.
x-nullable: true
type:
type: string
description: Type of the registry, e.g. 'harbor'.
x-nullable: true
url:
type: string
description: The registry URL.
x-nullable: true
credential_type:
type: string
description: Credential type of the registry, e.g. 'basic'.
x-nullable: true
access_key:
type: string
description: The registry access key.
x-nullable: true
access_secret:
type: string
description: The registry access secret.
x-nullable: true
insecure:
type: boolean
description: Whether or not the certificate will be verified when Harbor tries to access the server.
x-nullable: true
RegistryInfo:
type: object
description: The registry info contains the base info and capability declarations of the registry
properties:
type:
type: string
description: The registry type
description:
type: string
description: The description
supported_resource_filters:
type: array
description: The filters that the registry supports
items:
$ref: '#/definitions/FilterStyle'
supported_triggers:
type: array
description: The triggers that the registry supports
items:
type: string
RegistryProviderInfo:
type: object
description: The registry provider info contains the base info and capability declarations of the registry provider
properties:
endpoint_pattern:
description: The endpoint pattern
$ref: '#/definitions/RegistryProviderEndpointPattern'
credential_pattern:
description: The credential pattern
$ref: '#/definitions/RegistryProviderCredentialPattern'
RegistryProviderEndpointPattern:
type: object
description: The registry endpoint pattern
properties:
endpoint_type:
type: string
description: The endpoint type
endpoints:
type: array
description: The endpoint list
items:
$ref: '#/definitions/RegistryEndpoint'
RegistryProviderCredentialPattern:
type: object
description: The registry credential pattern
properties:
access_key_type:
type: string
description: The access key type
access_key_data:
type: string
description: The access key data
access_secret_type:
type: string
description: The access secret type
access_secret_data:
type: string
description: The access secret data
RegistryEndpoint:
type: object
description: The style of the resource filter
properties:
key:
type: string
description: The endpoint key
value:
type: string
description: The endpoint value
FilterStyle:
type: object
description: The style of the resource filter
properties:
type:
type: string
description: The filter type
style:
type: string
description: The filter style
values:
type: array
description: The filter values
items:
type: string
ResourceList:
type: object
additionalProperties:
type: integer
format: int64
x-go-type:
type: ResourceList
import:
package: "github.com/goharbor/harbor/src/pkg/quota/types"
ReplicationExecution:
type: object
description: The replication execution
properties:
id:
type: integer
description: The ID of the execution
policy_id:
type: integer
description: The ID if the policy that the execution belongs to
status:
type: string
description: The status of the execution
trigger:
type: string
description: The trigger mode
start_time:
type: string
format: date-time
description: The start time
end_time:
type: string
format: date-time
description: The end time
status_text:
type: string
x-omitempty: false
description: The status text
total:
type: integer
x-omitempty: false
description: The total count of all executions
failed:
type: integer
x-omitempty: false
description: The count of failed executions
succeed:
type: integer
x-omitempty: false
description: The count of succeed executions
in_progress:
type: integer
x-omitempty: false
description: The count of in_progress executions
stopped:
type: integer
x-omitempty: false
description: The count of stopped executions
StartReplicationExecution:
type: object
properties:
policy_id:
type: integer
format: int64
description: The ID of policy that the execution belongs to.
ReplicationTask:
type: object
description: The replication task
properties:
id:
type: integer
description: The ID of the task
execution_id:
type: integer
description: The ID of the execution that the task belongs to
status:
type: string
description: The status of the task
job_id:
type: string
description: The ID of the underlying job that the task related to
operation:
type: string
description: The operation of the task
resource_type:
type: string
description: The type of the resource that the task operates
src_resource:
type: string
description: The source resource that the task operates
dst_resource:
type: string
description: The destination resource that the task operates
start_time:
type: string
format: date-time
description: The start time of the task
end_time:
type: string
format: date-time
description: The end time of the task
Robot:
type: object
properties:
id:
type: integer
format: int64
description: The ID of the robot
name:
type: string
description: The name of the tag
description:
type: string
description: The description of the robot
secret:
type: string
description: The secret of the robot
level:
type: string
description: The level of the robot, project or system
duration:
type: integer
format: int64
description: The duration of the robot in days
editable:
type: boolean
x-omitempty: false
description: The editable status of the robot
disable:
type: boolean
x-omitempty: false
description: The disable status of the robot
expires_at:
type: integer
format: int64
description: The expiration data of the robot
permissions:
type: array
items:
$ref: '#/definitions/RobotPermission'
creation_time:
type: string
format: date-time
description: The creation time of the robot.
update_time:
type: string
format: date-time
description: The update time of the robot.
RobotCreate:
type: object
description: The request for robot account creation.
properties:
name:
type: string
description: The name of the tag
description:
type: string
description: The description of the robot
secret:
type: string
description: The secret of the robot
level:
type: string
description: The level of the robot, project or system
disable:
type: boolean
description: The disable status of the robot
duration:
type: integer
format: int64
description: The duration of the robot in days
permissions:
type: array
items:
$ref: '#/definitions/RobotPermission'
RobotCreated:
type: object
description: The response for robot account creation.
properties:
id:
type: integer
format: int64
description: The ID of the robot
name:
type: string
description: The name of the tag
secret:
type: string
description: The secret of the robot
creation_time:
type: string
format: date-time
description: The creation time of the robot.
expires_at:
type: integer
format: int64
description: The expiration data of the robot
RobotSec:
type: object
description: The response for refresh/update robot account secret.
properties:
secret:
type: string
description: The secret of the robot
RobotPermission:
type: object
properties:
kind:
type: string
description: The kind of the permission
namespace:
type: string
description: The namespace of the permission
access:
type: array
items:
$ref: '#/definitions/Access'
Access:
type: object
properties:
resource:
type: string
description: The resource of the access
action:
type: string
description: The action of the access
effect:
type: string
description: The effect of the access
RobotCreateV1:
type: object
properties:
name:
type: string
description: The name of robot account
description:
type: string
description: The description of robot account
expires_at:
type: integer
description: The expiration time on or after which the JWT MUST NOT be accepted for processing.
access:
type: array
description: The permission of robot account
items:
$ref: '#/definitions/Access'
Storage:
type: object
properties:
total:
type: integer
format: uint64
description: Total volume size.
free:
type: integer
format: uint64
description: Free volume size.
GeneralInfo:
type: object
properties:
with_notary:
type: boolean
x-nullable: true
x-omitempty: true
description: If the Harbor instance is deployed with nested notary.
with_chartmuseum:
type: boolean
x-nullable: true
x-omitempty: true
description: If the Harbor instance is deployed with nested chartmuseum.
registry_url:
type: string
x-nullable: true
x-omitempty: true
description: The url of registry against which the docker command should be issued.
external_url:
type: string
x-nullable: true
x-omitempty: true
description: The external URL of Harbor, with protocol.
auth_mode:
type: string
x-nullable: true
x-omitempty: true
description: The auth mode of current Harbor instance.
project_creation_restriction:
type: string
x-nullable: true
x-omitempty: true
description: 'Indicate who can create projects, it could be ''adminonly'' or ''everyone''.'
self_registration:
type: boolean
x-nullable: true
x-omitempty: true
description: Indicate whether the Harbor instance enable user to register himself.
has_ca_root:
type: boolean
x-nullable: true
x-omitempty: true
description: Indicate whether there is a ca root cert file ready for download in the file system.
harbor_version:
type: string
x-nullable: true
x-omitempty: true
description: The build version of Harbor.
registry_storage_provider_name:
type: string
x-nullable: true
x-omitempty: true
description: The storage provider's name of Harbor registry
read_only:
type: boolean
x-nullable: true
x-omitempty: true
description: The flag to indicate whether Harbor is in readonly mode.
notification_enable:
type: boolean
x-nullable: true
x-omitempty: true
description: The flag to indicate whether notification mechanism is enabled on Harbor instance.
authproxy_settings:
description: The setting of auth proxy this is only available when Harbor relies on authproxy for authentication.
x-nullable: true
x-omitempty: true
$ref: '#/definitions/AuthproxySetting'
AuthproxySetting:
type: object
properties:
endpoint:
type: string
description: The fully qualified URI of login endpoint of authproxy, such as 'https://192.168.1.2:8443/login'
tokenreivew_endpoint:
type: string
description: The fully qualified URI of token review endpoint of authproxy, such as 'https://192.168.1.2:8443/tokenreview'
skip_search:
type: boolean
description: The flag to determine whether Harbor can skip search the user/group when adding him as a member.
verify_cert:
type: boolean
description: The flag to determine whether Harbor should verify the certificate when connecting to the auth proxy.
server_certificate:
type: string
description: The certificate to be pinned when connecting auth proxy.
SystemInfo:
type: object
properties:
storage:
type: array
description: The storage of system.
items:
$ref: '#/definitions/Storage'
GCHistory:
type: object
properties:
id:
type: integer
description: the id of gc job.
job_name:
type: string
description: the job name of gc job.
job_kind:
type: string
description: the job kind of gc job.
job_parameters:
type: string
description: the job parameters of gc job.
schedule:
$ref: '#/definitions/ScheduleObj'
job_status:
type: string
description: the status of gc job.
deleted:
type: boolean
description: if gc job was deleted.
creation_time:
type: string
format: date-time
description: the creation time of gc job.
update_time:
type: string
format: date-time
description: the update time of gc job.
Schedule:
type: object
properties:
id:
type: integer
description: The id of the schedule.
readOnly: true
status:
type: string
description: The status of the schedule.
readOnly: true
creation_time:
type: string
format: date-time
description: the creation time of the schedule.
readOnly: true
update_time:
type: string
format: date-time
description: the update time of the schedule.
readOnly: true
schedule:
$ref: '#/definitions/ScheduleObj'
parameters:
type: object
description: The parameters of schedule job
additionalProperties:
type: object
ScheduleObj:
type: object
properties:
type:
type: string
description: |
The schedule type. The valid values are 'Hourly', 'Daily', 'Weekly', 'Custom', 'Manual' and 'None'.
'Manual' means to trigger it right away and 'None' means to cancel the schedule.
enum:
- Hourly
- Daily
- Weekly
- Custom
- Manual
- None
cron:
type: string
description: A cron expression, a time-based job scheduler.
Stats:
type: object
description: Stats provides the overall progress of the scan all process.
properties:
total:
type: integer
format: int
description: 'The total number of scan processes triggered by the scan all action'
example: 100
x-omitempty: false
completed:
type: integer
format: int
description: 'The number of the finished scan processes triggered by the scan all action'
example: 90
x-omitempty: false
metrics:
type: object
description: 'The metrics data for the each status'
additionalProperties:
type: integer
format: int
example: 10
example:
'Success': 5
'Error': 2
'Running': 3
ongoing:
type: boolean
description: A flag indicating job status of scan all.
x-omitempty: false
trigger:
type: string
description: The trigger of the scan all job.
enum:
- Manual
- Schedule
- Event
RetentionMetadata:
type: object
description: the tag retention metadata
properties:
templates:
type: array
description: templates
items:
$ref: '#/definitions/RetentionRuleMetadata'
scope_selectors:
type: array
description: supported scope selectors
items:
$ref: '#/definitions/RetentionSelectorMetadata'
tag_selectors:
type: array
description: supported tag selectors
items:
$ref: '#/definitions/RetentionSelectorMetadata'
RetentionRuleMetadata:
type: object
description: the tag retention rule metadata
properties:
rule_template:
type: string
description: rule id
display_text:
type: string
description: rule display text
action:
type: string
description: rule action
params:
type: array
description: rule params
items:
$ref: '#/definitions/RetentionRuleParamMetadata'
RetentionRuleParamMetadata:
type: object
description: rule param
properties:
type:
type: string
unit:
type: string
required:
type: boolean
RetentionSelectorMetadata:
type: object
description: retention selector
properties:
display_text:
type: string
kind:
type: string
decorations:
type: array
items:
type: string
RetentionPolicy:
type: object
description: retention policy
properties:
id:
type: integer
format: int64
algorithm:
type: string
rules:
type: array
items:
$ref: '#/definitions/RetentionRule'
trigger:
type: object
$ref: '#/definitions/RetentionRuleTrigger'
scope:
type: object
$ref: '#/definitions/RetentionPolicyScope'
RetentionRuleTrigger:
type: object
properties:
kind:
type: string
settings:
type: object
references:
type: object
RetentionPolicyScope:
type: object
properties:
level:
type: string
ref:
type: integer
RetentionRule:
type: object
properties:
id:
type: integer
priority:
type: integer
disabled:
type: boolean
action:
type: string
template:
type: string
params:
type: object
additionalProperties:
type: object
tag_selectors:
type: array
items:
$ref: '#/definitions/RetentionSelector'
scope_selectors:
type: object
additionalProperties:
type: array
items:
$ref: '#/definitions/RetentionSelector'
RetentionSelector:
type: object
properties:
kind:
type: string
decoration:
type: string
pattern:
type: string
extras:
type: string
RetentionExecution:
type: object
properties:
id:
type: integer
format: int64
policy_id:
type: integer
format: int64
start_time:
type: string
end_time:
type: string
status:
type: string
trigger:
type: string
dry_run:
type: boolean
RetentionExecutionTask:
type: object
properties:
id:
type: integer
format: int64
execution_id:
type: integer
format: int64
repository:
type: string
job_id:
type: string
status:
type: string
status_code:
type: integer
x-omitempty: false
status_revision:
type: integer
format: int64
start_time:
type: string
end_time:
type: string
total:
type: integer
x-omitempty: false
retained:
type: integer
x-omitempty: false
QuotaUpdateReq:
type: object
properties:
hard:
$ref: "#/definitions/ResourceList"
description: The new hard limits for the quota
QuotaRefObject:
type: object
additionalProperties: {}
Quota:
type: object
description: The quota object
properties:
id:
type: integer
description: ID of the quota
ref:
$ref: "#/definitions/QuotaRefObject"
description: The reference object of the quota
hard:
$ref: "#/definitions/ResourceList"
description: The hard limits of the quota
x-omitempty: false
used:
$ref: "#/definitions/ResourceList"
description: The used status of the quota
x-omitempty: false
creation_time:
type: string
format: date-time
description: the creation time of the quota
update_time:
type: string
format: date-time
description: the update time of the quota
ScannerRegistration:
type: object
description: |
Registration represents a named configuration for invoking a scanner via its adapter.
properties:
uuid:
type: string
description: The unique identifier of this registration.
name:
type: string
example: Trivy
description: The name of this registration.
description:
type: string
description: An optional description of this registration.
example: |
A free-to-use tool that scans container images for package vulnerabilities.
x-omitempty: false
url:
type: string
format: url
description: A base URL of the scanner adapter
example: http://harbor-scanner-trivy:8080
disabled:
type: boolean
default: false
description: Indicate whether the registration is enabled or not
x-omitempty: false
is_default:
type: boolean
default: false
description: Indicate if the registration is set as the system default one
x-omitempty: false
auth:
type: string
default: ""
description: |
Specify what authentication approach is adopted for the HTTP communications.
Supported types Basic", "Bearer" and api key header "X-ScannerAdapter-API-Key"
example: "Bearer"
x-omitempty: false
access_credential:
type: string
description: |
An optional value of the HTTP Authorization header sent with each request to the Scanner Adapter API.
example: "Bearer: JWTTOKENGOESHERE"
x-omitempty: false
skip_certVerify:
type: boolean
default: false
description: Indicate if skip the certificate verification when sending HTTP requests
x-omitempty: false
use_internal_addr:
type: boolean
default: false
description: Indicate whether use internal registry addr for the scanner to pull content or not
x-omitempty: false
create_time:
type: string
format: date-time
description: The creation time of this registration
update_time:
type: string
format: date-time
description: The update time of this registration
adapter:
type: string
description: Optional property to describe the name of the scanner registration
example: "Clair"
vendor:
type: string
description: Optional property to describe the vendor of the scanner registration
example: "CentOS"
version:
type: string
description: Optional property to describe the version of the scanner registration
example: "1.0.1"
health:
type: string
default: ""
description: Indicate the healthy of the registration
example: "healthy"
ScannerRegistrationReq:
type: object
required:
- name
- url
properties:
name:
type: string
description: The name of this registration
example: Trivy
description:
type: string
description: An optional description of this registration.
example: |
A free-to-use tool that scans container images for package vulnerabilities.
url:
type: string
format: uri
description: A base URL of the scanner adapter.
example: http://harbor-scanner-trivy:8080
auth:
type: string
description: |
Specify what authentication approach is adopted for the HTTP communications.
Supported types Basic", "Bearer" and api key header "X-ScannerAdapter-API-Key"
example: "Bearer"
access_credential:
type: string
description: |
An optional value of the HTTP Authorization header sent with each request to the Scanner Adapter API.
example: "Bearer: JWTTOKENGOESHERE"
skip_certVerify:
type: boolean
default: false
description: Indicate if skip the certificate verification when sending HTTP requests
use_internal_addr:
type: boolean
default: false
description: Indicate whether use internal registry addr for the scanner to pull content or not
disabled:
type: boolean
default: false
description: Indicate whether the registration is enabled or not
ScannerRegistrationSettings:
type: object
required:
- name
- url
properties:
name:
type: string
description: The name of this registration
example: Trivy
url:
type: string
format: uri
description: A base URL of the scanner adapter.
example: http://harbor-scanner-trivy:8080
auth:
type: string
default: ""
description: |
Specify what authentication approach is adopted for the HTTP communications.
Supported types Basic", "Bearer" and api key header "X-ScannerAdapter-API-Key"
access_credential:
type: string
description: |
An optional value of the HTTP Authorization header sent with each request to the Scanner Adapter API.
example: "Bearer: JWTTOKENGOESHERE"
IsDefault:
type: object
properties:
is_default:
type: boolean
description: A flag indicating whether a scanner registration is default.
ScannerCapability:
type: object
properties:
consumes_mime_types:
type: array
items:
type: string
example: "application/vnd.docker.distribution.manifest.v2+json"
produces_mime_types:
type: array
items:
type: string
example: "application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0"
ScannerAdapterMetadata:
type: object
description: The metadata info of the scanner adapter
properties:
scanner:
$ref: '#/definitions/Scanner'
capabilities:
type: array
items:
$ref: '#/definitions/ScannerCapability'
properties:
type: object
additionalProperties:
type: string
example:
'harbor.scanner-adapter/registry-authorization-type': 'Bearer'
ImmutableRule:
type: object
properties:
id:
type: integer
priority:
type: integer
disabled:
type: boolean
action:
type: string
template:
type: string
params:
type: object
additionalProperties:
type: object
tag_selectors:
type: array
items:
$ref: '#/definitions/ImmutableSelector'
scope_selectors:
type: object
additionalProperties:
type: array
items:
$ref: '#/definitions/ImmutableSelector'
ImmutableSelector:
type: object
properties:
kind:
type: string
decoration:
type: string
pattern:
type: string
extras:
type: string
LdapConf:
type: object
description: The ldap configure properties
properties:
ldap_url:
type: string
description: The url of ldap service.
ldap_search_dn:
type: string
description: The search dn of ldap service.
ldap_search_password:
type: string
description: The search password of ldap service.
ldap_base_dn:
type: string
description: The base dn of ldap service.
ldap_filter:
type: string
description: The serach filter of ldap service.
ldap_uid:
type: string
description: The serach uid from ldap service attributes.
ldap_scope:
type: integer
format: int64
description: The serach scope of ldap service.
ldap_connection_timeout:
type: integer
format: int64
description: The connect timeout of ldap service(second).
ldap_verify_cert:
type: boolean
description: Verify Ldap server certificate.
LdapPingResult:
type: object
description: The ldap ping result
properties:
success:
type: boolean
description: Test success
message:
type: string
description: The ping operation output message.
LdapImportUsers:
type: object
properties:
ldap_uid_list:
type: array
description: selected uid list
items:
type: string
LdapFailedImportUser:
type: object
properties:
uid:
type: string
description: the uid can't add to system.
error:
type: string
description: fail reason.
LdapUser:
type: object
properties:
username:
type: string
description: ldap username.
realname:
type: string
description: The user realname from "uid" or "cn" attribute.
email:
type: string
description: The user email address from "mail" or "email" attribute.
UserGroup:
type: object
properties:
id:
type: integer
description: The ID of the user group
group_name:
type: string
description: The name of the user group
group_type:
type: integer
description: 'The group type, 1 for LDAP group, 2 for HTTP group.'
ldap_group_dn:
type: string
description: The DN of the LDAP group if group type is 1 (LDAP group).
SupportedWebhookEventTypes:
type: object
description: Supportted webhook event types and notify types.
properties:
event_type:
type: array
items:
$ref: '#/definitions/EventType'
notify_type:
type: array
items:
$ref: '#/definitions/NotifyType'
EventType:
type: string
description: Webhook supportted event type.
example: 'pullImage'
NotifyType:
type: string
description: Webhook supportted notify type.
example: 'http'
WebhookTargetObject:
type: object
description: The webhook policy target object.
properties:
type:
type: string
description: The webhook target notify type.
address:
type: string
description: The webhook target address.
auth_header:
type: string
description: The webhook auth header.
skip_cert_verify:
type: boolean
description: Whether or not to skip cert verify.
WebhookPolicy:
type: object
description: The webhook policy object
properties:
id:
type: integer
format: int64
description: The webhook policy ID.
name:
type: string
description: The name of webhook policy.
description:
type: string
description: The description of webhook policy.
project_id:
type: integer
description: The project ID of webhook policy.
targets:
type: array
items:
$ref: '#/definitions/WebhookTargetObject'
event_types:
type: array
items:
type: string
creator:
type: string
description: The creator of the webhook policy.
creation_time:
type: string
description: The create time of the webhook policy.
format: date-time
update_time:
type: string
description: The update time of the webhook policy.
format: date-time
enabled:
type: boolean
description: Whether the webhook policy is enabled or not.
x-omitempty: false
WebhookLastTrigger:
type: object
description: The webhook policy and last trigger time group by event type.
properties:
policy_name:
type: string
description: The webhook policy name.
event_type:
type: string
description: The webhook event type.
enabled:
type: boolean
description: Whether or not the webhook policy enabled.
creation_time:
type: string
description: The creation time of webhook policy.
format: date-time
last_trigger_time:
type: string
description: The last trigger time of webhook policy.
format: date-time
WebhookJob:
type: object
description: The webhook job.
properties:
id:
type: integer
format: int64
description: The webhook job ID.
policy_id:
type: integer
format: int64
description: The webhook policy ID.
event_type:
type: string
description: The webhook job event type.
notify_type:
type: string
description: The webhook job notify type.
status:
type: string
description: The webhook job status.
job_detail:
type: string
description: The webhook job notify detailed data.
creation_time:
type: string
description: The webhook job creation time.
format: date-time
update_time:
type: string
description: The webhook job update time.
format: date-time
InternalConfigurationsResponse:
type: object
x-go-type:
type: InternalCfg
import:
package: "github.com/goharbor/harbor/src/lib/config"
ConfigurationsResponse:
type: object
properties:
auth_mode:
$ref: '#/definitions/StringConfigItem'
description: The auth mode of current system, such as "db_auth", "ldap_auth", "oidc_auth"
email_from:
$ref: '#/definitions/StringConfigItem'
description: The sender name for Email notification.
email_host:
$ref: '#/definitions/StringConfigItem'
description: The hostname of SMTP server that sends Email notification.
email_identity:
$ref: '#/definitions/StringConfigItem'
description: By default it's empty so the email_username is picked
email_insecure:
$ref: '#/definitions/BoolConfigItem'
description: Whether or not the certificate will be verified when Harbor tries to access the email server.
email_port:
$ref: '#/definitions/IntegerConfigItem'
description: The port of SMTP server
email_ssl:
$ref: '#/definitions/BoolConfigItem'
description: When it''s set to true the system will access Email server via TLS by default. If it''s set to false, it still will handle "STARTTLS" from server side.
email_username:
$ref: '#/definitions/StringConfigItem'
description: The username for authenticate against SMTP server
ldap_base_dn:
$ref: '#/definitions/StringConfigItem'
description: The Base DN for LDAP binding.
ldap_filter:
$ref: '#/definitions/StringConfigItem'
description: The filter for LDAP search
ldap_group_base_dn:
$ref: '#/definitions/StringConfigItem'
description: The base DN to search LDAP group.
ldap_group_admin_dn:
$ref: '#/definitions/StringConfigItem'
description: Specify the ldap group which have the same privilege with Harbor admin
ldap_group_attribute_name:
$ref: '#/definitions/StringConfigItem'
description: The attribute which is used as identity of the LDAP group, default is cn.'
ldap_group_search_filter:
$ref: '#/definitions/StringConfigItem'
description: The filter to search the ldap group
ldap_group_search_scope:
$ref: '#/definitions/IntegerConfigItem'
description: The scope to search ldap group. ''0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE''
ldap_scope:
$ref: '#/definitions/IntegerConfigItem'
description: The scope to search ldap users,'0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE'
ldap_search_dn:
$ref: '#/definitions/StringConfigItem'
description: The DN of the user to do the search.
ldap_timeout:
$ref: '#/definitions/IntegerConfigItem'
description: Timeout in seconds for connection to LDAP server
ldap_uid:
$ref: '#/definitions/StringConfigItem'
description: The attribute which is used as identity for the LDAP binding, such as "CN" or "SAMAccountname"
ldap_url:
$ref: '#/definitions/StringConfigItem'
description: The URL of LDAP server
ldap_verify_cert:
$ref: '#/definitions/BoolConfigItem'
description: Whether verify your OIDC server certificate, disable it if your OIDC server is hosted via self-hosted certificate.
ldap_group_membership_attribute:
$ref: '#/definitions/StringConfigItem'
description: The user attribute to identify the group membership
project_creation_restriction:
$ref: '#/definitions/StringConfigItem'
description: Indicate who can create projects, it could be ''adminonly'' or ''everyone''.
read_only:
$ref: '#/definitions/BoolConfigItem'
description: The flag to indicate whether Harbor is in readonly mode.
self_registration:
$ref: '#/definitions/BoolConfigItem'
description: Whether the Harbor instance supports self-registration. If it''s set to false, admin need to add user to the instance.
token_expiration:
$ref: '#/definitions/IntegerConfigItem'
description: The expiration time of the token for internal Registry, in minutes.
uaa_client_id:
$ref: '#/definitions/StringConfigItem'
description: The client id of UAA
uaa_client_secret:
$ref: '#/definitions/StringConfigItem'
description: The client secret of the UAA
uaa_endpoint:
$ref: '#/definitions/StringConfigItem'
description: The endpoint of the UAA
uaa_verify_cert:
$ref: '#/definitions/BoolConfigItem'
description: Verify the certificate in UAA server
http_authproxy_endpoint:
$ref: '#/definitions/StringConfigItem'
description: The endpoint of the HTTP auth
http_authproxy_tokenreview_endpoint:
$ref: '#/definitions/StringConfigItem'
description: The token review endpoint
http_authproxy_admin_groups:
$ref: '#/definitions/StringConfigItem'
description: The group which has the harbor admin privileges
http_authproxy_admin_usernames:
$ref: '#/definitions/StringConfigItem'
description: The usernames which has the harbor admin privileges
http_authproxy_verify_cert:
$ref: '#/definitions/BoolConfigItem'
description: Verify the HTTP auth provider's certificate
http_authproxy_skip_search:
$ref: '#/definitions/BoolConfigItem'
description: Search user before onboard
http_authproxy_server_certificate:
$ref: '#/definitions/StringConfigItem'
description: The certificate of the HTTP auth provider
oidc_name:
$ref: '#/definitions/StringConfigItem'
description: The OIDC provider name
oidc_endpoint:
$ref: '#/definitions/StringConfigItem'
description: The endpoint of the OIDC provider
oidc_client_id:
$ref: '#/definitions/StringConfigItem'
description: The client ID of the OIDC provider
oidc_groups_claim:
$ref: '#/definitions/StringConfigItem'
description: The attribute claims the group name
oidc_admin_group:
$ref: '#/definitions/StringConfigItem'
description: The OIDC group which has the harbor admin privileges
oidc_scope:
$ref: '#/definitions/StringConfigItem'
description: The scope of the OIDC provider
oidc_user_claim:
$ref: '#/definitions/StringConfigItem'
description: The attribute claims the username
oidc_verify_cert:
$ref: '#/definitions/BoolConfigItem'
description: Verify the OIDC provider's certificate'
oidc_auto_onboard:
$ref: '#/definitions/BoolConfigItem'
description: Auto onboard the OIDC user
oidc_extra_redirect_parms:
$ref: '#/definitions/StringConfigItem'
description: Extra parameters to add when redirect request to OIDC provider
robot_token_duration:
$ref: '#/definitions/IntegerConfigItem'
description: The robot account token duration in days
robot_name_prefix:
$ref: '#/definitions/StringConfigItem'
description: The rebot account name prefix
notification_enable:
$ref: '#/definitions/BoolConfigItem'
description: Enable notification
quota_per_project_enable:
$ref: '#/definitions/BoolConfigItem'
description: Enable quota per project
storage_per_project:
$ref: '#/definitions/IntegerConfigItem'
description: The storage quota per project
scan_all_policy:
type: object
properties:
type:
type: string
description: 'The type of scan all policy, currently the valid values are "none" and "daily"'
parameter:
type: object
properties:
daily_time:
type: integer
description: 'The offset in seconds of UTC 0 o''clock, only valid when the policy type is "daily"'
description: 'The parameters of the policy, the values are dependant on the type of the policy.'
Configurations:
type: object
additionalProperties:
type: object
StringConfigItem:
type: object
properties:
value:
type: string
description: The string value of current config item
editable:
type: boolean
description: The configure item can be updated or not
BoolConfigItem:
type: object
properties:
value:
type: boolean
description: The boolean value of current config item
editable:
type: boolean
description: The configure item can be updated or not
IntegerConfigItem:
type: object
properties:
value:
type: integer
description: The integer value of current config item
editable:
type: boolean
description: The configure item can be updated or not
ProjectMemberEntity:
type: object
properties:
id:
type: integer
description: the project member id
project_id:
type: integer
description: the project id
entity_name:
type: string
description: the name of the group member.
role_name:
type: string
description: the name of the role
role_id:
type: integer
description: the role id
entity_id:
type: integer
description: 'the id of entity, if the member is a user, it is user_id in user table. if the member is a user group, it is the user group''s ID in user_group table.'
entity_type:
type: string
description: 'the entity''s type, u for user entity, g for group entity.'
ProjectMember:
type: object
properties:
role_id:
type: integer
description: 'The role id 1 for projectAdmin, 2 for developer, 3 for guest, 4 for maintainer'
member_user:
$ref: '#/definitions/UserEntity'
member_group:
$ref: '#/definitions/UserGroup'
RoleRequest:
type: object
properties:
role_id:
type: integer
description: 'The role id 1 for projectAdmin, 2 for developer, 3 for guest, 4 for maintainer'
UserEntity:
type: object
properties:
user_id:
type: integer
description: The ID of the user.
username:
type: string
description: The name of the user.
UserProfile:
type: object
properties:
email:
type: string
realname:
type: string
comment:
type: string
UserCreationReq:
type: object
properties:
email:
type: string
realname:
type: string
comment:
type: string
password:
type: string
username:
type: string
OIDCUserInfo:
type: object
properties:
id:
type: integer
format: int
description: the ID of the OIDC info record
user_id:
type: integer
format: int
description: the ID of the user
subiss:
type: string
description: the concatenation of sub and issuer in the ID token
secret:
type: string
description: the secret of the OIDC user that can be used for CLI to push/pull artifacts
creation_time:
type: string
format: date-time
description: The creation time of the OIDC user info record.
update_time:
type: string
format: date-time
description: The update time of the OIDC user info record.
UserResp:
type: object
properties:
email:
type: string
realname:
type: string
comment:
type: string
user_id:
type: integer
format: int
username:
type: string
sysadmin_flag:
type: boolean
x-omitempty: false
admin_role_in_auth:
type: boolean
x-omitempty: false
description: indicate the admin privilege is grant by authenticator (LDAP), is always false unless it is the current login user
oidc_user_meta:
$ref: '#/definitions/OIDCUserInfo'
creation_time:
type: string
format: date-time
description: The creation time of the user.
update_time:
type: string
format: date-time
description: The update time of the user.
UserSysAdminFlag:
type: object
properties:
sysadmin_flag:
type: boolean
description: 'true-admin, false-not admin.'
UserSearch:
type: object
properties:
user_id:
type: integer
format: int
description: The ID of the user.
username:
type: string
PasswordReq:
type: object
properties:
old_password:
type: string
description: The user's existing password.
new_password:
type: string
description: New password for marking as to be updated.
UserSearchRespItem:
type: object
properties:
user_id:
type: integer
format: int
description: The ID of the user.
username:
type: string
Permission:
type: object
properties:
resource:
type: string
description: The permission resoruce
action:
type: string
description: The permission action
OIDCCliSecretReq:
type: object
properties:
secret:
type: string
description: The new secret
OverallHealthStatus:
type: object
description: The system health status
properties:
status:
type: string
description: The overall health status. It is "healthy" only when all the components' status are "healthy"
components:
type: array
items:
$ref: '#/definitions/ComponentHealthStatus'
ComponentHealthStatus:
type: object
description: The health status of component
properties:
name:
type: string
description: The component name
status:
type: string
description: The health status of component
error:
type: string
description: (optional) The error message when the status is "unhealthy"
Statistic:
type: object
properties:
private_project_count:
type: integer
format: int64
description: The count of the private projects
x-omitempty: false
private_repo_count:
type: integer
format: int64
description: The count of the private repositories
x-omitempty: false
public_project_count:
type: integer
format: int64
description: The count of the public projects
x-omitempty: false
public_repo_count:
type: integer
format: int64
description: The count of the public repositories
x-omitempty: false
total_project_count:
type: integer
format: int64
description: The count of the total projects, only be seen by the system admin
x-omitempty: false
total_repo_count:
type: integer
format: int64
description: The count of the total repositories, only be seen by the system admin
x-omitempty: false
total_storage_consumption:
type: integer
format: int64
description: The total storage consumption of blobs, only be seen by the system admin
x-omitempty: false