openapi: 3.2.0 info: title: Harbor Registry API description: These APIs provide services for manipulating Harbor project. version: '2.0' servers: - url: http://localhost/api/v2.0 - url: https://localhost/api/v2.0 security: - basic: [] - {} tags: - name: Registry paths: /replication/adapters: get: summary: List registry adapters tags: - Registry operationId: listRegistryProviderTypes parameters: - $ref: '#/components/parameters/requestId' responses: '200': description: Success. content: application/json: schema: type: array items: type: string '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' /replication/adapterinfos: get: summary: List all registered registry provider information tags: - Registry operationId: listRegistryProviderInfos parameters: - $ref: '#/components/parameters/requestId' responses: '200': description: Success. content: application/json: schema: type: object additionalProperties: $ref: '#/components/schemas/RegistryProviderInfo' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' /registries: post: summary: Create a registry tags: - Registry operationId: createRegistry parameters: - $ref: '#/components/parameters/requestId' responses: '201': $ref: '#/components/responses/201' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '409': $ref: '#/components/responses/409' '500': $ref: '#/components/responses/500' requestBody: content: application/json: schema: $ref: '#/components/schemas/Registry' description: The registry required: true get: summary: List the registries tags: - Registry operationId: listRegistries parameters: - $ref: '#/components/parameters/requestId' - $ref: '#/components/parameters/query' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pageSize' - name: name in: query required: false description: Deprecated, use `q` instead. schema: type: string responses: '200': description: Success headers: X-Total-Count: description: The total count of the resources schema: type: integer Link: description: Link refers to the previous page and next page schema: type: string content: application/json: schema: type: array items: $ref: '#/components/schemas/Registry' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' /registries/ping: post: summary: Check status of a registry tags: - Registry operationId: pingRegistry parameters: - $ref: '#/components/parameters/requestId' responses: '200': $ref: '#/components/responses/200' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '500': $ref: '#/components/responses/500' requestBody: content: application/json: schema: $ref: '#/components/schemas/RegistryPing' description: The registry required: true /registries/{id}: get: summary: Get the specific registry tags: - Registry operationId: getRegistry parameters: - $ref: '#/components/parameters/requestId' - name: id in: path required: true description: Registry ID schema: type: integer format: int64 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Registry' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '500': $ref: '#/components/responses/500' delete: summary: Delete the specific registry tags: - Registry operationId: deleteRegistry parameters: - $ref: '#/components/parameters/requestId' - name: id in: path required: true description: Registry ID schema: type: integer format: int64 responses: '200': $ref: '#/components/responses/200' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '412': $ref: '#/components/responses/412' '500': $ref: '#/components/responses/500' put: summary: Update the registry tags: - Registry operationId: updateRegistry parameters: - $ref: '#/components/parameters/requestId' - name: id in: path required: true description: The registry ID schema: type: integer format: int64 responses: '200': $ref: '#/components/responses/200' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '409': $ref: '#/components/responses/409' '500': $ref: '#/components/responses/500' requestBody: content: application/json: schema: $ref: '#/components/schemas/RegistryUpdate' description: The registry required: true /registries/{id}/info: get: summary: Get the registry info tags: - Registry operationId: getRegistryInfo parameters: - $ref: '#/components/parameters/requestId' - name: id in: path required: true description: Registry ID schema: type: integer format: int64 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/RegistryInfo' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '500': $ref: '#/components/responses/500' components: responses: '500': description: Internal server error. Inspect the `errors` array in the response body for details. headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string content: application/json: schema: $ref: '#/components/schemas/Errors' '201': description: Created headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string Location: description: The location of the resource schema: type: string '403': description: Forbidden. The caller does not have sufficient permission to perform the requested operation. headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string content: application/json: schema: $ref: '#/components/schemas/Errors' '200': description: Success headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string '412': description: Precondition failed. A dependency or policy check failed; inspect the `errors` array for the constraint that was violated. headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string content: application/json: schema: $ref: '#/components/schemas/Errors' '409': description: Conflict. The resource already exists or the current state prevents the operation. headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string content: application/json: schema: $ref: '#/components/schemas/Errors' '401': description: Unauthorized. Authentication is required to access this resource. headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string content: application/json: schema: $ref: '#/components/schemas/Errors' '404': description: Not found. The requested resource does not exist. headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string content: application/json: schema: $ref: '#/components/schemas/Errors' '400': description: Bad request. The request body or query parameters are invalid. Inspect the `errors` array in the response body for details. headers: X-Request-Id: description: The ID of the corresponding request for the response schema: type: string content: application/json: schema: $ref: '#/components/schemas/Errors' parameters: sort: name: sort description: Sort the resource list in ascending or descending order. e.g. sort by field1 in ascending order and field2 in descending order with "sort=field1,-field2" in: query required: false schema: type: string requestId: name: X-Request-Id description: An unique ID for the request in: header required: false schema: type: string minLength: 1 pageSize: name: page_size in: query required: false description: The size of per page schema: type: integer format: int64 default: 10 maximum: 100 page: name: page in: query required: false description: The page number schema: type: integer format: int64 default: 1 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 required: false schema: type: string schemas: 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 example: code: NOT_FOUND message: artifact library/hello-world:latest not found 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 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: '#/components/schemas/RegistryProviderEndpointPattern' credential_pattern: description: The credential pattern $ref: '#/components/schemas/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: '#/components/schemas/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 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: '#/components/schemas/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. ca_certificate: type: - string - 'null' description: The PEM-encoded CA certificate for this registry endpoint. If provided, this CA will be used to verify the registry's certificate instead of the system CA pool. 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. 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'. RegistryUpdate: type: object properties: name: type: - string - 'null' description: The registry name. description: type: - string - 'null' description: Description of the registry. url: type: - string - 'null' description: The registry URL. credential_type: type: - string - 'null' description: Credential type of the registry, e.g. 'basic'. access_key: type: - string - 'null' description: The registry access key. access_secret: type: - string - 'null' description: The registry access secret. insecure: type: - boolean - 'null' description: Whether or not the certificate will be verified when Harbor tries to access the server. ca_certificate: type: - string - 'null' description: The PEM-encoded CA certificate for this registry endpoint. Errors: description: The error array that describe the errors got during the handling of request type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' RegistryPing: type: object properties: id: type: - integer - 'null' format: int64 description: The registry ID. type: type: - string - 'null' description: Type of the registry, e.g. 'harbor'. url: type: - string - 'null' description: The registry URL. credential_type: type: - string - 'null' description: Credential type of the registry, e.g. 'basic'. access_key: type: - string - 'null' description: The registry access key. access_secret: type: - string - 'null' description: The registry access secret. insecure: type: - boolean - 'null' description: Whether or not the certificate will be verified when Harbor tries to access the server. ca_certificate: type: - string - 'null' description: The PEM-encoded CA certificate for this registry endpoint. 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 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: '#/components/schemas/FilterStyle' supported_triggers: type: array description: The triggers that the registry supports items: type: string supported_copy_by_chunk: type: boolean description: The registry whether support copy by chunk. x-omitempty: true x-isnullable: true securitySchemes: basic: type: http scheme: basic