Red Hat Quay API reference
Preface Copy linkLink copied to clipboard!
The Red Hat Quay application programming interface (API) provides a comprehensive, RESTful interface for managing and automating tasks within Red Hat Quay. Designed around the OAuth 2.0 protocol, this API enables secure, fine-grained access to Red Hat Quay resources, and allows administrators and users to perform such actions as creating repositories, managing images, setting permissions, and more.
Red Hat Quay follows Semantic Versioning (SemVer) principles, ensuring predictable API stability across releases, such as:
- Major releases: Introduce new capabilities. Might include breaking changes to API compatibility. For example, the API of Red Hat Quay 2.0 differs from Red Hat Quay 3.0.
- Minor releases: Add new functionality in a backward-compatible manner. For example, a 3.y release adds functionality to the version 3. release.
- Patch releases: Deliver bug fixes and improvements while preserving backward compatibility with minor releases, such as 3.y.z.
The following guide describes the Red Hat Quay API in more detail, and provides details on the following topics:
- API endpoint structure, including supported HTTP methods
- Request and response schemas for each endpoint
- Required and optional parameters
- Authentication and authorization requirements
- Common error codes and troubleshooting information
For a more guided approach, including token overview, management strategies, understanding API endpoints, and more, refer to the Red Hat Quay API guide.
Chapter 1. Authorization Copy linkLink copied to clipboard!
oauth2_implicit
Scopes
The following scopes are used to control access to the API endpoints:
| Scope | Description |
|---|---|
| repo:read | This application will be able to view and pull all repositories visible to the granting user or robot account |
| repo:write | This application will be able to view, push and pull to all repositories to which the granting user or robot account has write access |
| repo:admin | This application will have administrator access to all repositories to which the granting user or robot account has access |
| repo:create | This application will be able to create repositories in to any namespaces that the granting user or robot account is allowed to create repositories |
| user:read | This application will be able to read user information such as username and email address. |
| org:admin | This application will be able to administer your organizations including creating robots, creating teams, adjusting team membership, and changing billing settings. You should have absolute trust in the requesting application before granting this permission. |
| super:user | This application will be able to administer your installation including managing users, managing organizations and other features found in the superuser panel. You should have absolute trust in the requesting application before granting this permission. |
| user:admin | This application will be able to administer your account including creating robots and granting them permissions to your repositories. You should have absolute trust in the requesting application before granting this permission. |
Chapter 2. appspecifictokens Copy linkLink copied to clipboard!
Manages app specific tokens for the current user.
2.1. createAppToken Copy linkLink copied to clipboard!
Create a new app specific token for user.
POST /api/v1/user/apptoken
Authorizations: oauth2_implicit (user:admin)
Request body schema (application/json)
Description of a new token.
| Name | Description | Schema |
|---|---|---|
|
title | Friendly name to help identify the token | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"title": "MyAppToken"
}' \
"http://quay-server.example.com/api/v1/user/apptoken"
2.2. listAppTokens Copy linkLink copied to clipboard!
Lists the app specific tokens for the user.
GET /api/v1/user/apptoken
Authorizations: oauth2_implicit (user:admin)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
expiring | If true, only returns those tokens expiring soon | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <access_token>" \
"http://quay-server.example.com/api/v1/user/apptoken"
2.3. getAppToken Copy linkLink copied to clipboard!
Returns a specific app token for the user.
GET /api/v1/user/apptoken/{token_uuid}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
token_uuid | The uuid of the app specific token | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <access_token>" \
"http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"
2.4. revokeAppToken Copy linkLink copied to clipboard!
Revokes a specific app token for the user.
DELETE /api/v1/user/apptoken/{token_uuid}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
token_uuid | The uuid of the app specific token | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <access_token>" \
"http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"
Chapter 3. build Copy linkLink copied to clipboard!
Create, list, cancel and get status/logs of repository builds.
3.1. getRepoBuildStatus Copy linkLink copied to clipboard!
Return the status for the builds specified by the build uuids.
GET /api/v1/repository/{repository}/build/{build_uuid}/status
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
build_uuid | The UUID of the build | string |
Responses
3.2. getRepoBuildLogs Copy linkLink copied to clipboard!
Return the build logs for the build specified by the build uuid.
GET /api/v1/repository/{repository}/build/{build_uuid}/logs
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
build_uuid | The UUID of the build | string |
Responses
3.3. getRepoBuild Copy linkLink copied to clipboard!
Returns information about a build.
GET /api/v1/repository/{repository}/build/{build_uuid}
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
build_uuid | The UUID of the build | string |
Responses
3.4. cancelRepoBuild Copy linkLink copied to clipboard!
Cancels a repository build.
DELETE /api/v1/repository/{repository}/build/{build_uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
build_uuid | The UUID of the build | string |
Responses
3.5. requestRepoBuild Copy linkLink copied to clipboard!
Request that a repository be built and pushed from the specified input.
POST /api/v1/repository/{repository}/build/
Authorizations: oauth2_implicit (repo:write)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Description of a new repository build.
| Name | Description | Schema |
|---|---|---|
|
file_id | The file id that was generated when the build spec was uploaded | string |
|
archive_url | The URL of the .tar.gz to build. Must start with "http" or "https". | string |
|
subdirectory | Subdirectory in which the Dockerfile can be found. You can only specify this or dockerfile_path | string |
|
dockerfile_path | Path to a dockerfile. You can only specify this or subdirectory. | string |
|
context | Pass in the context for the dockerfile. This is optional. | string |
|
pull_robot | Username of a Quay robot account to use as pull credentials | string |
|
tags | The tags to which the built images will be pushed. If none specified, "latest" is used. |
array of string |
Responses
3.6. getRepoBuilds Copy linkLink copied to clipboard!
Get the list of repository builds.
GET /api/v1/repository/{repository}/build/
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
since | Returns all builds since the given unix timecode | integer |
| query |
limit | The maximum number of builds to return | integer |
Responses
Chapter 4. discovery Copy linkLink copied to clipboard!
API discovery information.
4.1. discovery Copy linkLink copied to clipboard!
List all of the API endpoints available in the swagger API format.
GET /api/v1/discovery
Authorizations:
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
internal | Whether to include internal APIs. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/discovery?query=true" \
-H "Authorization: Bearer <access_token>"
Chapter 5. error Copy linkLink copied to clipboard!
Error details API.
5.1. getErrorDescription Copy linkLink copied to clipboard!
Get a detailed description of the error.
GET /api/v1/error/{error_type}
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
error_type | The error code identifying the type of error. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/error/<error_type>" \
-H "Authorization: Bearer <access_token>"
Chapter 6. globalmessages Copy linkLink copied to clipboard!
Messages API.
6.1. createGlobalMessage Copy linkLink copied to clipboard!
Create a message.
POST /api/v1/messages
Authorizations: oauth2_implicit (super:user)
Request body schema (application/json)
Create a new message
| Name | Description | Schema |
|---|---|---|
|
message | A single message | object |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/messages" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"message": {
"content": "Hi",
"media_type": "text/plain",
"severity": "info"
}
}'
6.2. getGlobalMessages Copy linkLink copied to clipboard!
Return a super users messages.
GET /api/v1/messages
Authorizations:
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/messages" \
-H "Authorization: Bearer <access_token>"
6.3. deleteGlobalMessage Copy linkLink copied to clipboard!
Delete a message.
DELETE /api/v1/message/{uuid}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
uuid | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/message/<uuid>" \
-H "Authorization: Bearer <access_token>"
Chapter 7. logs Copy linkLink copied to clipboard!
Access usage logs for organizations or repositories.
7.1. getAggregateUserLogs Copy linkLink copied to clipboard!
Returns the aggregated logs for the current user.
GET /api/v1/user/aggregatelogs
Authorizations: oauth2_implicit (user:admin)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
performer | Username for which to filter logs. | string |
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
"<quay-server.example.com>/api/v1/user/aggregatelogs?performer=<username>&starttime=<MM/DD/YYYY>&endtime=<MM/DD/YYYY>"
7.2. exportUserLogs Copy linkLink copied to clipboard!
Returns the aggregated logs for the current user.
POST /api/v1/user/exportlogs
Authorizations: oauth2_implicit (user:admin)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Request body schema (application/json)
Configuration for an export logs operation
| Name | Description | Schema |
|---|---|---|
|
callback_url | The callback URL to invoke with a link to the exported logs | string |
|
callback_email | The e-mail address at which to e-mail a link to the exported logs | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"starttime": "<MM/DD/YYYY>",
"endtime": "<MM/DD/YYYY>",
"callback_email": "your.email@example.com"
}' \
"http://<quay-server.example.com>/api/v1/user/exportlogs"
7.3. listUserLogs Copy linkLink copied to clipboard!
List the logs for the current user.
GET /api/v1/user/logs
Authorizations: oauth2_implicit (user:admin)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
next_page | The page token for the next page | string |
| query |
performer | Username for which to filter logs. | string |
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" "<quay-server.example.com>/api/v1/user/logs"
7.4. getAggregateOrgLogs Copy linkLink copied to clipboard!
Gets the aggregated logs for the specified organization.
GET /api/v1/organization/{orgname}/aggregatelogs
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
performer | Username for which to filter logs. | string |
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
"<quay-server.example.com>/api/v1/organization/{orgname}/aggregatelogs"
7.5. exportOrgLogs Copy linkLink copied to clipboard!
Exports the logs for the specified organization.
POST /api/v1/organization/{orgname}/exportlogs
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Request body schema (application/json)
Configuration for an export logs operation
| Name | Description | Schema |
|---|---|---|
|
callback_url | The callback URL to invoke with a link to the exported logs | string |
|
callback_email | The e-mail address at which to e-mail a link to the exported logs | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"starttime": "<MM/DD/YYYY>",
"endtime": "<MM/DD/YYYY>",
"callback_email": "org.logs@example.com"
}' \
"http://<quay-server.example.com>/api/v1/organization/{orgname}/exportlogs"
7.6. listOrgLogs Copy linkLink copied to clipboard!
List the logs for the specified organization.
GET /api/v1/organization/{orgname}/logs
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
next_page | The page token for the next page | string |
| query |
performer | Username for which to filter logs. | string |
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
"http://<quay-server.example.com>/api/v1/organization/{orgname}/logs"
7.7. getAggregateRepoLogs Copy linkLink copied to clipboard!
Returns the aggregated logs for the specified repository.
GET /api/v1/repository/{repository}/aggregatelogs
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
"<quay-server.example.com>/api/v1/repository/<repository_name>/<namespace>/aggregatelogs?starttime=2024-01-01&endtime=2024-06-18""
7.8. exportRepoLogs Copy linkLink copied to clipboard!
Queues an export of the logs for the specified repository.
POST /api/v1/repository/{repository}/exportlogs
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Request body schema (application/json)
Configuration for an export logs operation
| Name | Description | Schema |
|---|---|---|
|
callback_url | The callback URL to invoke with a link to the exported logs | string |
|
callback_email | The e-mail address at which to e-mail a link to the exported logs | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"starttime": "2024-01-01",
"endtime": "2024-06-18",
"callback_url": "http://your-callback-url.example.com"
}' \
"http://<quay-server.example.com>/api/v1/repository/{repository}/exportlogs"
7.9. listRepoLogs Copy linkLink copied to clipboard!
List the logs for the specified repository.
GET /api/v1/repository/{repository}/logs
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
next_page | The page token for the next page | string |
| query |
endtime | Latest time for logs. Format: "%m/%d/%Y" in UTC. | string |
| query |
starttime | Earliest time for logs. Format: "%m/%d/%Y" in UTC. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
"http://<quay-server.example.com>/api/v1/repository/{repository}/logs"
Chapter 8. manifest Copy linkLink copied to clipboard!
Manage the manifests of a repository.
8.1. getManifestLabel Copy linkLink copied to clipboard!
Retrieves the label with the specific ID under the manifest.
GET /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid}
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
manifestref | The digest of the manifest | string |
| path |
labelid | The ID of the label | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<label_id>
8.2. deleteManifestLabel Copy linkLink copied to clipboard!
Deletes an existing label from a manifest.
DELETE /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid}
Authorizations: oauth2_implicit (repo:write)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
manifestref | The digest of the manifest | string |
| path |
labelid | The ID of the label | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<labelid>
8.3. addManifestLabel Copy linkLink copied to clipboard!
Adds a new label into the tag manifest.
POST /api/v1/repository/{repository}/manifest/{manifestref}/labels
Authorizations: oauth2_implicit (repo:write)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
manifestref | The digest of the manifest | string |
Request body schema (application/json)
Adds a label to a manifest
| Name | Description | Schema |
|---|---|---|
|
key | The key for the label | string |
|
value | The value for the label | string |
|
media_type | The media type for this label |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
--data '{
"key": "<key>",
"value": "<value>",
"media_type": "<media_type>"
}' \
https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels
8.4. listManifestLabels Copy linkLink copied to clipboard!
GET /api/v1/repository/{repository}/manifest/{manifestref}/labels
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
manifestref | The digest of the manifest | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
filter | If specified, only labels matching the given prefix will be returned | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels
8.5. getRepoManifest Copy linkLink copied to clipboard!
GET /api/v1/repository/{repository}/manifest/{manifestref}
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
manifestref | The digest of the manifest | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>
Chapter 9. mirror Copy linkLink copied to clipboard!
9.1. syncCancel Copy linkLink copied to clipboard!
Update the sync_status for a given Repository’s mirroring configuration.
POST /api/v1/repository/{repository}/mirror/sync-cancel
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-cancel" \
9.2. syncNow Copy linkLink copied to clipboard!
Update the sync_status for a given Repository’s mirroring configuration.
POST /api/v1/repository/{repository}/mirror/sync-now
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-now" \
-H "Authorization: Bearer <access_token>"
9.3. getRepoMirrorConfig Copy linkLink copied to clipboard!
Return the Mirror configuration for a given Repository.
GET /api/v1/repository/{repository}/mirror
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror" \
-H "Authorization: Bearer <access_token>"
9.4. changeRepoMirrorConfig Copy linkLink copied to clipboard!
Allow users to modifying the repository’s mirroring configuration.
PUT /api/v1/repository/{repository}/mirror
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Update the repository mirroring configuration.
| Name | Description | Schema |
|---|---|---|
|
is_enabled | Used to enable or disable synchronizations. | boolean |
|
external_reference | Location of the external repository. | string |
|
external_registry_username | Username used to authenticate with external registry. | |
|
external_registry_password | Password used to authenticate with external registry. | |
|
sync_start_date | Determines the next time this repository is ready for synchronization. | string |
|
sync_interval | Number of seconds after next_start_date to begin synchronizing. | integer |
|
robot_username | Username of robot which will be used for image pushes. | string |
|
root_rule | A list of glob-patterns used to determine which tags should be synchronized. | object |
|
external_registry_config | object | |
|
skopeo_timeout_interval | Number of seconds mirroring job will run before timing out. | Integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"is_enabled": <false>,
"external_reference": "<external_reference>",
"external_registry_username": "<external_registry_username>",
"external_registry_password": "<external_registry_password>",
"sync_start_date": "<sync_start_date>",
"sync_interval": <sync_interval>,
"robot_username": "<robot_username>",
"skopeo_timeout_interval": 600,
"root_rule": {
"rule": "<rule>",
"rule_type": "<rule_type>"
}
}'
- 1
- Disables automatic synchronization.
9.5. createRepoMirrorConfig Copy linkLink copied to clipboard!
Create a RepoMirrorConfig for a given Repository.
POST /api/v1/repository/{repository}/mirror
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Create the repository mirroring configuration.
| Name | Description | Schema |
|---|---|---|
|
is_enabled | Used to enable or disable synchronizations. | boolean |
|
external_reference | Location of the external repository. | string |
|
external_registry_username | Username used to authenticate with external registry. | |
|
external_registry_password | Password used to authenticate with external registry. | |
|
sync_start_date | Determines the next time this repository is ready for synchronization. | string |
|
sync_interval | Number of seconds after next_start_date to begin synchronizing. | integer |
|
robot_username | Username of robot which will be used for image pushes. | string |
|
root_rule | A list of glob-patterns used to determine which tags should be synchronized. | object |
|
external_registry_config | object | |
|
skopeo_timeout_interval | Number of seconds mirroring job will run before timing out. | Integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"is_enabled": <is_enabled>,
"external_reference": "<external_reference>",
"external_registry_username": "<external_registry_username>",
"external_registry_password": "<external_registry_password>",
"sync_start_date": "<sync_start_date>",
"sync_interval": <sync_interval>,
"robot_username": "<robot_username>",
"skopeo_timeout_interval": 600,
"root_rule": {
"rule": "<rule>",
"rule_type": "<rule_type>"
}
}'
Chapter 10. org_mirror Copy linkLink copied to clipboard!
Organization-level repository mirroring API endpoints.
Enables users to configure a single mirroring task to replicate all repositories from a source namespace (e.g., Harbor project, Quay organization) into a target Quay organization.
10.1. createOrgMirrorConfig Copy linkLink copied to clipboard!
Create organization mirror configuration.
POST /api/v1/organization/{orgname}/mirror
Authorizations: oauth2_implicit (org:admin)
Request body schema (application/json)
Create organization mirror configuration
| Name | Description | Schema |
|---|---|---|
|
external_registry_type |
Type of source registry (e.g. | string |
|
external_registry_url | URL of the source registry | string |
|
external_namespace | Source namespace/project name | string |
|
robot_username | Robot account for creating repos (format: orgname+robotname) | string |
|
visibility |
Visibility for created repositories ( | string |
|
sync_interval | Seconds between syncs (minimum 60) | integer |
|
sync_start_date |
Initial sync time (ISO 8601 format, e.g. | string |
|
is_enabled | Enable or disable mirroring | boolean |
|
external_registry_username | Username for source registry authentication | |
|
external_registry_password | Password for source registry authentication | |
|
external_registry_config | TLS and proxy settings | object |
|
repository_filters | Glob patterns for filtering repositories |
array of string |
|
skopeo_timeout | Timeout for Skopeo operations in seconds | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"external_registry_type": "quay", "external_registry_url": "https://quay.example.com", "external_namespace": "<source_namespace>", "robot_username": "<orgname>+<robotname>", "visibility": "private", "sync_interval": 3600, "sync_start_date": "2025-01-01T00:00:00Z", "is_enabled": true}' \
https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror
10.2. getOrgMirrorConfig Copy linkLink copied to clipboard!
Get the organization-level mirror configuration.
GET /api/v1/organization/{orgname}/mirror
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror
10.3. listOrgMirrorRepositories Copy linkLink copied to clipboard!
List all discovered repositories from source namespace.
Query Parameters:
page (int): Page number, default 1
limit (int): Items per page, default 100, max 500
Returns:
JSON object with:
- repositories: List of repository objects
- page: Current page number
- limit: Items per page
- total: Total number of matching repositories
- has_next: Whether there are more pages
GET /api/v1/organization/{orgname}/mirror/repositories
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
"https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror/repositories?page=1&limit=100"
10.4. syncOrgMirrorNow Copy linkLink copied to clipboard!
Trigger immediate discovery and sync for the organization.
Sets sync_status to SYNC_NOW and sync_start_date to now for
immediate pickup by the repomirrorworker.
Returns 204 on success, 404 if config not found or already syncing.
POST /api/v1/organization/{orgname}/mirror/sync-now
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror/sync-now
10.5. updateOrgMirrorConfig Copy linkLink copied to clipboard!
Update organization mirror configuration.
PUT /api/v1/organization/{orgname}/mirror
Authorizations: oauth2_implicit (org:admin)
Request body schema (application/json)
Update organization mirror configuration
| Name | Description | Schema |
|---|---|---|
|
is_enabled | boolean | |
|
external_registry_url | string | |
|
external_namespace | string | |
|
robot_username | string | |
|
visibility | string | |
|
sync_interval | integer | |
|
sync_start_date | string | |
|
external_registry_username | ||
|
external_registry_password | ||
|
external_registry_config | object | |
|
repository_filters |
array of string | |
|
skopeo_timeout | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"is_enabled": true, "sync_interval": 7200}' \
https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror
10.6. verifyOrgMirrorConnection Copy linkLink copied to clipboard!
Verify connection to source registry.
Tests connectivity, authentication, and TLS configuration without
triggering a full sync operation. Useful for validating configuration
before enabling mirroring.
Returns:
JSON object with:
- success: Boolean indicating if connection was successful
- message: Human-readable status message
POST /api/v1/organization/{orgname}/mirror/verify
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror/verify
10.7. cancelOrgMirrorSync Copy linkLink copied to clipboard!
Cancel ongoing discovery or sync operation.
Transitions the config to CANCEL status from any state except already CANCEL.
The worker detects the CANCEL status and propagates it to associated repository
syncs during tag processing. Repo status changes are applied when the worker
picks up the cancellation request, not immediately.
Returns 204 on success, 404 if config not found, 400 if already cancelled.
POST /api/v1/organization/{orgname}/mirror/sync-cancel
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror/sync-cancel
10.8. deleteOrgMirrorConfig Copy linkLink copied to clipboard!
Delete organization mirror configuration.
DELETE /api/v1/organization/{orgname}/mirror
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/organization/<orgname>/mirror
Chapter 11. capabilities Copy linkLink copied to clipboard!
Registry capabilities API endpoint.
11.1. getRegistryCapabilities Copy linkLink copied to clipboard!
Get registry capabilities.
Returns information about supported registry features including sparse manifest support and required architectures.
GET /api/v1/registry/capabilities
Authorizations:
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
"https://quay-server.example.com/api/v1/registry/capabilities" \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json"
Chapter 12. namespacequota Copy linkLink copied to clipboard!
12.1. listUserQuota Copy linkLink copied to clipboard!
GET /api/v1/user/quota
Authorizations: oauth2_implicit (user:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota" \
-H "Authorization: Bearer <access_token>"
12.2. getOrganizationQuotaLimit Copy linkLink copied to clipboard!
GET /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
limit_id | string | |
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \
-H "Authorization: Bearer <access_token>"
12.3. changeOrganizationQuotaLimit Copy linkLink copied to clipboard!
PUT /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
limit_id | string | |
| path |
orgname | string |
Request body schema (application/json)
Description of changing organization quota limit
| Name | Description | Schema |
|---|---|---|
|
type | Type of quota limit: "Warning" or "Reject" | string |
|
threshold_percent | Quota threshold, in percent of quota | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"type": "<type>",
"threshold_percent": <threshold_percent>
}'
12.4. deleteOrganizationQuotaLimit Copy linkLink copied to clipboard!
DELETE /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
limit_id | string | |
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \
-H "Authorization: Bearer <access_token>"
12.5. createOrganizationQuotaLimit Copy linkLink copied to clipboard!
POST /api/v1/organization/{orgname}/quota/{quota_id}/limit
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
orgname | string |
Request body schema (application/json)
Description of a new organization quota limit
| Name | Description | Schema |
|---|---|---|
|
type | Type of quota limit: "Warning" or "Reject" | string |
|
threshold_percent | Quota threshold, in percent of quota | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"limit_bytes": 21474836480,
"type": "Reject",
"threshold_percent": 90
}'
12.6. listOrganizationQuotaLimit Copy linkLink copied to clipboard!
GET /api/v1/organization/{orgname}/quota/{quota_id}/limit
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit" \
-H "Authorization: Bearer <access_token>"
12.7. getUserQuotaLimit Copy linkLink copied to clipboard!
GET /api/v1/user/quota/{quota_id}/limit/{limit_id}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
limit_id | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit/{limit_id}" \
-H "Authorization: Bearer <access_token>"
12.8. listUserQuotaLimit Copy linkLink copied to clipboard!
GET /api/v1/user/quota/{quota_id}/limit
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit" \
-H "Authorization: Bearer <access_token>"
12.9. getOrganizationQuota Copy linkLink copied to clipboard!
GET /api/v1/organization/{orgname}/quota/{quota_id}
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \
-H "Authorization: Bearer <access_token>"S
12.10. changeOrganizationQuota Copy linkLink copied to clipboard!
PUT /api/v1/organization/{orgname}/quota/{quota_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
orgname | string |
Request body schema (application/json)
Description of a new organization quota
| Name | Description | Schema |
|---|---|---|
|
limit_bytes | Number of bytes the organization is allowed | integer |
|
limits |
Human readable storage capacity of the organization. Accepts SI units like Mi, Gi, or Ti, as well as non-standard units like GB or MB. Must be mutually exclusive with | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"limit_bytes": <limit_in_bytes>
}'
12.11. deleteOrganizationQuota Copy linkLink copied to clipboard!
DELETE /api/v1/organization/{orgname}/quota/{quota_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string | |
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \
-H "Authorization: Bearer <access_token>"
12.12. createOrganizationQuota Copy linkLink copied to clipboard!
Create a new organization quota.
POST /api/v1/organization/{orgname}/quota
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | string |
Request body schema (application/json)
Description of a new organization quota
| Name | Description | Schema |
|---|---|---|
|
limit_bytes | Number of bytes the organization is allowed | integer |
|
limits |
Human readable storage capacity of the organization. Accepts SI units like Mi, Gi, or Ti, as well as non-standard units like GB or MB. Must be mutually exclusive with | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"limit_bytes": 10737418240,
"limits": "10 Gi"
}'
12.13. listOrganizationQuota Copy linkLink copied to clipboard!
GET /api/v1/organization/{orgname}/quota
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -k -X GET -H "Authorization: Bearer <token>" -H 'Content-Type: application/json' https://<quay-server.example.com>/api/v1/organization/<organization_name>/quota
12.14. getUserQuota Copy linkLink copied to clipboard!
GET /api/v1/user/quota/{quota_id}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
quota_id | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}" \
-H "Authorization: Bearer <access_token>"
Chapter 13. organization Copy linkLink copied to clipboard!
Manage organizations, members and OAuth applications.
13.1. createOrganization Copy linkLink copied to clipboard!
Create a new organization.
POST /api/v1/organization/
Authorizations: oauth2_implicit (user:admin)
Request body schema (application/json)
Description of a new organization.
| Name | Description | Schema |
|---|---|---|
|
name | Organization username | string |
|
email | Organization contact email | string |
|
recaptcha_response | The (may be disabled) recaptcha response code for verification | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{
"name": "<new_organization_name>"
}' "https://<quay-server.example.com>/api/v1/organization/"
13.2. validateProxyCacheConfig Copy linkLink copied to clipboard!
POST /api/v1/organization/{orgname}/validateproxycache
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | string |
Request body schema (application/json)
Proxy cache configuration for an organization
| Name | Description | Schema |
|---|---|---|
|
upstream_registry | Name of the upstream registry that is to be cached | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 202 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/{orgname}/validateproxycache" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"upstream_registry": "<upstream_registry>"
"upstream_registry_username": "your_robot_account_username"
"upstream_registry_password": "your_robot_account_password"
}'
13.3. getOrganizationCollaborators Copy linkLink copied to clipboard!
List outside collaborators of the specified organization.
GET /api/v1/organization/{orgname}/collaborators
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/collaborators" \
-H "Authorization: Bearer <access_token>"
13.4. getOrganizationApplication Copy linkLink copied to clipboard!
Retrieves the application with the specified client_id under the specified organization.
GET /api/v1/organization/{orgname}/applications/{client_id}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
client_id | The OAuth client ID | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications/<client_id>" \
-H "Authorization: Bearer <access_token>"
13.5. updateOrganizationApplication Copy linkLink copied to clipboard!
Updates an application under this organization.
PUT /api/v1/organization/{orgname}/applications/{client_id}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
client_id | The OAuth client ID | string |
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Description of an updated application.
| Name | Description | Schema |
|---|---|---|
|
name | The name of the application | string |
|
redirect_uri | The URI for the application’s OAuth redirect | string |
|
application_uri | The URI for the application’s homepage | string |
|
description | The human-readable description for the application | string |
|
avatar_email | The e-mail address of the avatar to use for the application | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://quay-server.example.com/api/v1/organization/test/applications/12345" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Application Name",
"redirect_uri": "https://example.com/oauth/callback",
"application_uri": "https://example.com",
"description": "Updated description for the application",
"avatar_email": "avatar@example.com"
}'
13.6. deleteOrganizationApplication Copy linkLink copied to clipboard!
Deletes the application under this organization.
DELETE /api/v1/organization/{orgname}/applications/{client_id}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
client_id | The OAuth client ID | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/applications/{client_id}" \
-H "Authorization: Bearer <access_token>"
13.7. createOrganizationApplication Copy linkLink copied to clipboard!
Creates a new application under this organization.
POST /api/v1/organization/{orgname}/applications
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Description of a new organization application.
| Name | Description | Schema |
|---|---|---|
|
name | The name of the application | string |
|
redirect_uri | The URI for the application’s OAuth redirect | string |
|
application_uri | The URI for the application’s homepage | string |
|
description | The human-readable description for the application | string |
|
avatar_email | The e-mail address of the avatar to use for the application | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"name": "<app_name>",
"redirect_uri": "<redirect_uri>",
"application_uri": "<application_uri>",
"description": "<app_description>",
"avatar_email": "<avatar_email>"
}'
13.8. getOrganizationApplications Copy linkLink copied to clipboard!
List the applications for the specified organization.
GET /api/v1/organization/{orgname}/applications
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications" \
-H "Authorization: Bearer <access_token>"
13.9. getProxyCacheConfig Copy linkLink copied to clipboard!
Retrieves the proxy cache configuration of the organization.
GET /api/v1/organization/{orgname}/proxycache
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \
-H "Authorization: Bearer <access_token>"
13.10. deleteProxyCacheConfig Copy linkLink copied to clipboard!
Delete proxy cache configuration for the organization.
DELETE /api/v1/organization/{orgname}/proxycache
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \
-H "Authorization: Bearer <access_token>"
13.11. createProxyCacheConfig Copy linkLink copied to clipboard!
Creates proxy cache configuration for the organization.
POST /api/v1/organization/{orgname}/proxycache
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Proxy cache configuration for an organization
| Name | Description | Schema |
|---|---|---|
|
upstream_registry | Name of the upstream registry that is to be cached | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/<orgname>/proxycache" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"upstream_registry": "<upstream_registry>"
"upstream_registry_username": "your_robot_account_username"
"upstream_registry_password": "your_robot_account_password"
}'
13.12. getOrganizationMember Copy linkLink copied to clipboard!
Retrieves the details of a member of the organization.
GET /api/v1/organization/{orgname}/members/{membername}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
membername | The username of the organization member | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \
-H "Authorization: Bearer <access_token>"
13.13. removeOrganizationMember Copy linkLink copied to clipboard!
Removes a member from an organization, revoking all its repository priviledges and removing it from all teams in the organization.
DELETE /api/v1/organization/{orgname}/members/{membername}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
membername | The username of the organization member | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \
-H "Authorization: Bearer <access_token>"
13.14. getOrganizationMembers Copy linkLink copied to clipboard!
List the human members of the specified organization.
GET /api/v1/organization/{orgname}/members
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members" \
-H "Authorization: Bearer <access_token>"
13.15. getOrganization Copy linkLink copied to clipboard!
Get the details for the specified organization.
GET /api/v1/organization/{orgname}
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>"
13.16. changeOrganizationDetails Copy linkLink copied to clipboard!
Change the details for the specified organization.
PUT /api/v1/organization/{orgname}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Description of updates for an existing organization
| Name | Description | Schema |
|---|---|---|
|
email | Organization contact email | string |
|
invoice_email | Whether the organization desires to receive emails for invoices | boolean |
|
invoice_email_address | The email address at which to receive invoices | |
|
tag_expiration_s | The number of seconds for tag expiration | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>"
13.17. deleteAdminedOrganization Copy linkLink copied to clipboard!
Deletes the specified organization.
DELETE /api/v1/organization/{orgname}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>"
13.18. getApplicationInformation Copy linkLink copied to clipboard!
Get information on the specified application.
GET /api/v1/app/{client_id}
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
client_id | The OAuth client ID | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/app/<client_id>" \
-H "Authorization: Bearer <access_token>"
Chapter 14. permission Copy linkLink copied to clipboard!
Manage repository permissions.
14.1. getUserTransitivePermission Copy linkLink copied to clipboard!
Get the fetch the permission for the specified user.
GET /api/v1/repository/{repository}/permissions/user/{username}/transitive
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
username | The username of the user to which the permissions apply | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <access_token>" \
"https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>/transitive"
14.2. getUserPermissions Copy linkLink copied to clipboard!
Get the permission for the specified user.
GET /api/v1/repository/{repository}/permissions/user/{username}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
username | The username of the user to which the permission applies | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <access_token>" \
"https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>"
14.3. changeUserPermissions Copy linkLink copied to clipboard!
Update the perimssions for an existing repository.
PUT /api/v1/repository/{repository}/permissions/user/{username}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
username | The username of the user to which the permission applies | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Description of a user permission.
| Name | Description | Schema |
|---|---|---|
|
role | Role to use for the user | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{"role": "admin"}' \
https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>
14.4. deleteUserPermissions Copy linkLink copied to clipboard!
Delete the permission for the user.
DELETE /api/v1/repository/{repository}/permissions/user/{username}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
username | The username of the user to which the permission applies | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>
14.5. getTeamPermissions Copy linkLink copied to clipboard!
Fetch the permission for the specified team.
GET /api/v1/repository/{repository}/permissions/team/{teamname}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
teamname | The name of the team to which the permission applies | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <access_token>" \
"https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
14.6. changeTeamPermissions Copy linkLink copied to clipboard!
Update the existing team permission.
PUT /api/v1/repository/{repository}/permissions/team/{teamname}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
teamname | The name of the team to which the permission applies | string |
Request body schema (application/json)
Description of a team permission.
| Name | Description | Schema |
|---|---|---|
|
role | Role to use for the team | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
$ curl -X PUT \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"role": "<role>"}' \
"https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
14.7. deleteTeamPermissions Copy linkLink copied to clipboard!
Delete the permission for the specified team.
DELETE /api/v1/repository/{repository}/permissions/team/{teamname}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
teamname | The name of the team to which the permission applies | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <access_token>" \
"https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
14.8. listRepoTeamPermissions Copy linkLink copied to clipboard!
List all team permission.
GET /api/v1/repository/{repository}/permissions/team/
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <access_token>" \
"https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/"
14.9. listRepoUserPermissions Copy linkLink copied to clipboard!
List all user permissions.
GET /api/v1/repository/{repository}/permissions/user/
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository>/permissions/user/<username>/
Chapter 15. policy Copy linkLink copied to clipboard!
15.1. createOrganizationAutoPrunePolicy Copy linkLink copied to clipboard!
Creates an auto-prune policy for the organization
POST /api/v1/organization/{orgname}/autoprunepolicy/
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
The policy configuration that is to be applied to the user namespace
| Name | Description | Schema |
|---|---|---|
|
method | The method to use for pruning tags (number_of_tags, creation_date) | string |
|
value | The value to use for the pruning method (number of tags e.g. 10, time delta e.g. 7d (7 days)) | |
|
tagPattern | Tags only matching this pattern will be pruned | string |
|
tagPatternMatches | Determine whether pruned tags should or should not match the tagPattern | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
15.2. listOrganizationAutoPrunePolicies Copy linkLink copied to clipboard!
Lists the auto-prune policies for the organization
GET /api/v1/organization/{orgname}/autoprunepolicy/
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/organization/example_org/autoprunepolicy/" \
-H "Authorization: Bearer <your_access_token>"
15.3. getOrganizationAutoPrunePolicy Copy linkLink copied to clipboard!
Fetches the auto-prune policy for the organization
GET /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/<policy_uuid>
15.4. deleteOrganizationAutoPrunePolicy Copy linkLink copied to clipboard!
Deletes the auto-prune policy for the organization
DELETE /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/organization/example_org/autoprunepolicy/example_policy_uuid" \
-H "Authorization: Bearer <your_access_token>"
15.5. updateOrganizationAutoPrunePolicy Copy linkLink copied to clipboard!
Updates the auto-prune policy for the organization
PUT /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
The policy configuration that is to be applied to the user namespace
| Name | Description | Schema |
|---|---|---|
|
method | The method to use for pruning tags (number_of_tags, creation_date) | string |
|
value | The value to use for the pruning method (number of tags e.g. 10, time delta e.g. 7d (7 days)) | |
|
tagPattern | Tags only matching this pattern will be pruned | string |
|
tagPatternMatches | Determine whether pruned tags should or should not match the tagPattern | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{
"method": "creation_date",
"value": "4d",
"tagPattern": "^v*",
"tagPatternMatches": true
}' "<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/<uuid>"
15.6. createRepositoryAutoPrunePolicy Copy linkLink copied to clipboard!
Creates an auto-prune policy for the repository
POST /api/v1/repository/{repository}/autoprunepolicy/
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
The policy configuration that is to be applied to the user namespace
| Name | Description | Schema |
|---|---|---|
|
method | The method to use for pruning tags (number_of_tags, creation_date) | string |
|
value | The value to use for the pruning method (number of tags e.g. 10, time delta e.g. 7d (7 days)) | |
|
tagPattern | Tags only matching this pattern will be pruned | string |
|
tagPatternMatches | Determine whether pruned tags should or should not match the tagPattern | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
15.7. listRepositoryAutoPrunePolicies Copy linkLink copied to clipboard!
Lists the auto-prune policies for the repository
GET /api/v1/repository/{repository}/autoprunepolicy/
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/autoprunepolicy/" \
-H "Authorization: Bearer <your_access_token>"
15.8. getRepositoryAutoPrunePolicy Copy linkLink copied to clipboard!
Fetches the auto-prune policy for the repository
GET /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/autoprunepolicy/123e4567-e89b-12d3-a456-426614174000" \
-H "Authorization: Bearer <your_access_token>"
15.9. deleteRepositoryAutoPrunePolicy Copy linkLink copied to clipboard!
Deletes the auto-prune policy for the repository
DELETE /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/autoprunepolicy/123e4567-e89b-12d3-a456-426614174000" \
-H "Authorization: Bearer <your_access_token>"
15.10. updateRepositoryAutoPrunePolicy Copy linkLink copied to clipboard!
Updates the auto-prune policy for the repository
PUT /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
The policy configuration that is to be applied to the user namespace
| Name | Description | Schema |
|---|---|---|
|
method | The method to use for pruning tags (number_of_tags, creation_date) | string |
|
value | The value to use for the pruning method (number of tags e.g. 10, time delta e.g. 7d (7 days)) | |
|
tagPattern | Tags only matching this pattern will be pruned | string |
|
tagPatternMatches | Determine whether pruned tags should or should not match the tagPattern | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"method": "number_of_tags",
"value": "5",
"tagPattern": "^test.*",
"tagPatternMatches": true
}' \
"https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/autoprunepolicy/<uuid>"
15.11. createUserAutoPrunePolicy Copy linkLink copied to clipboard!
Creates the auto-prune policy for the currently logged in user
POST /api/v1/user/autoprunepolicy/
Authorizations: oauth2_implicit (user:admin)
Request body schema (application/json)
The policy configuration that is to be applied to the user namespace
| Name | Description | Schema |
|---|---|---|
|
method | The method to use for pruning tags (number_of_tags, creation_date) | string |
|
value | The value to use for the pruning method (number of tags e.g. 10, time delta e.g. 7d (7 days)) | |
|
tagPattern | Tags only matching this pattern will be pruned | string |
|
tagPatternMatches | Determine whether pruned tags should or should not match the tagPattern | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/user/autoprunepolicy/" \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"method": "number_of_tags",
"value": 10,
"tagPattern": "v*",
"tagPatternMatches": true
}'
15.12. listUserAutoPrunePolicies Copy linkLink copied to clipboard!
Lists the auto-prune policies for the currently logged in user
GET /api/v1/user/autoprunepolicy/
Authorizations: oauth2_implicit (user:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/user/autoprunepolicy/" \
-H "Authorization: Bearer <your_access_token>"
15.13. getUserAutoPrunePolicy Copy linkLink copied to clipboard!
Fetches the auto-prune policy for the currently logged in user
GET /api/v1/user/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/user/autoprunepolicy/{policy_uuid}" \
-H "Authorization: Bearer <your_access_token>"
15.14. deleteUserAutoPrunePolicy Copy linkLink copied to clipboard!
Deletes the auto-prune policy for the currently logged in user
DELETE /api/v1/user/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/user/autoprunepolicy/<policy_uuid>" \
-H "Authorization: Bearer <your_access_token>"
15.15. updateUserAutoPrunePolicy Copy linkLink copied to clipboard!
Updates the auto-prune policy for the currently logged in user
PUT /api/v1/user/autoprunepolicy/{policy_uuid}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
policy_uuid | The unique ID of the policy | string |
Request body schema (application/json)
The policy configuration that is to be applied to the user namespace
| Name | Description | Schema |
|---|---|---|
|
method | The method to use for pruning tags (number_of_tags, creation_date) | string |
|
value | The value to use for the pruning method (number of tags e.g. 10, time delta e.g. 7d (7 days)) | |
|
tagPattern | Tags only matching this pattern will be pruned | string |
|
tagPatternMatches | Determine whether pruned tags should or should not match the tagPattern | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://quay-server.example.com/api/v1/user/autoprunepolicy/<policy_uuid>" \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"method": "number_of_tags",
"value": "10",
"tagPattern": ".*-old",
"tagPatternMatches": true
}'
Chapter 16. prototype Copy linkLink copied to clipboard!
Manage default permissions added to repositories.
16.1. updateOrganizationPrototypePermission Copy linkLink copied to clipboard!
Update the role of an existing permission prototype.
PUT /api/v1/organization/{orgname}/prototypes/{prototypeid}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
prototypeid | The ID of the prototype | string |
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Description of a the new prototype role
| Name | Description | Schema |
|---|---|---|
|
role | Role that should be applied to the permission | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
--data '{
"role": "write"
}' \
https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes/<prototypeid>
16.2. deleteOrganizationPrototypePermission Copy linkLink copied to clipboard!
Delete an existing permission prototype.
DELETE /api/v1/organization/{orgname}/prototypes/{prototypeid}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
prototypeid | The ID of the prototype | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes/<prototype_id>
16.3. createOrganizationPrototypePermission Copy linkLink copied to clipboard!
Create a new permission prototype.
POST /api/v1/organization/{orgname}/prototypes
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Description of a new prototype
| Name | Description | Schema |
|---|---|---|
|
role | Role that should be applied to the delegate | string |
|
activating_user | Repository creating user to whom the rule should apply | object |
|
delegate | Information about the user or team to which the rule grants access | object |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" --data '{
"role": "<admin_read_or_write>",
"delegate": {
"name": "<username>",
"kind": "user"
},
"activating_user": {
"name": "<robot_name>"
}
}' https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes
16.4. getOrganizationPrototypePermissions Copy linkLink copied to clipboard!
List the existing prototypes for this organization.
GET /api/v1/organization/{orgname}/prototypes
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes
Chapter 17. referrers Copy linkLink copied to clipboard!
List v2 API referrers
17.1. getReferrers Copy linkLink copied to clipboard!
List v2 API referrers of an image digest.
GET /v2/{organization_name}/{repository_name}/referrers/{digest}
Request body schema (application/json)
Referrers of an image digest.
| Type | Name | Description | Schema |
| path |
orgname | The name of the organization | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
referrers | Looks up the OCI referrers of a manifest under a repository. | string |
Chapter 18. repository Copy linkLink copied to clipboard!
List, create and manage repositories.
18.1. createRepo Copy linkLink copied to clipboard!
Create a new repository.
POST /api/v1/repository
Authorizations: oauth2_implicit (repo:create)
Request body schema (application/json)
Description of a new repository
| Name | Description | Schema |
|---|---|---|
|
repository | Repository name | string |
|
visibility | Visibility which the repository will start with | string |
|
namespace | Namespace in which the repository should be created. If omitted, the username of the caller is used | string |
|
description | Markdown encoded description for the repository | string |
|
repo_kind | The kind of repository |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"repository": "<new_repository_name>",
"visibility": "<public>",
"description": "<This is a description of the new repository>."
}' \
"https://quay-server.example.com/api/v1/repository"
18.2. listRepos Copy linkLink copied to clipboard!
Fetch the list of repositories visible to the current user under a variety of situations.
GET /api/v1/repository
Authorizations: oauth2_implicit (repo:read)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
next_page | The page token for the next page | string |
| query |
repo_kind | The kind of repositories to return | string |
| query |
popularity | Whether to include the repository’s popularity metric. | boolean |
| query |
last_modified | Whether to include when the repository was last modified. | boolean |
| query |
public | Adds any repositories visible to the user by virtue of being public | boolean |
| query |
starred | Filters the repositories returned to those starred by the user | boolean |
| query |
namespace | Filters the repositories returned to this namespace | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
"https://quay-server.example.com/api/v1/repository?public=true&starred=false&namespace=<NAMESPACE>"
18.3. changeRepoVisibility Copy linkLink copied to clipboard!
Change the visibility of a repository.
POST /api/v1/repository/{repository}/changevisibility
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Change the visibility for the repository.
| Name | Description | Schema |
|---|---|---|
|
visibility | Visibility which the repository will start with | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example Command
$ curl -X POST \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"visibility": "private"
}' \
"https://quay-server.example.com/api/v1/repository/<NAMESPACE>/<REPO_NAME>/changevisibility"
18.4. changeRepoState Copy linkLink copied to clipboard!
Change the state of a repository.
PUT /api/v1/repository/{repository}/changestate
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Change the state of the repository.
| Name | Description | Schema |
|---|---|---|
|
state | Determines whether pushes are allowed. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
18.5. getRepo Copy linkLink copied to clipboard!
Fetch the specified repository.
GET /api/v1/repository/{repository}
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
includeTags | Whether to include repository tags | boolean |
| query |
includeStats | Whether to include action statistics | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
18.6. updateRepo Copy linkLink copied to clipboard!
Update the description in the specified repository.
PUT /api/v1/repository/{repository}
Authorizations: oauth2_implicit (repo:write)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Fields which can be updated in a repository.
| Name | Description | Schema |
|---|---|---|
|
description | Markdown encoded description for the repository | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"description": "This is an updated description for the repository."
}' \
"https://quay-server.example.com/api/v1/repository/<NAMESPACE>/<REPOSITORY>"
18.7. deleteRepository Copy linkLink copied to clipboard!
Delete a repository.
DELETE /api/v1/repository/{repository}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
Chapter 19. repositorynotification Copy linkLink copied to clipboard!
List, create and manage repository events/notifications.
19.1. testRepoNotification Copy linkLink copied to clipboard!
Queues a test notification for this repository.
POST /api/v1/repository/{repository}/notification/{uuid}/test
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
uuid | The UUID of the notification | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>/test
19.2. getRepoNotification Copy linkLink copied to clipboard!
Get information for the specified notification.
GET /api/v1/repository/{repository}/notification/{uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
uuid | The UUID of the notification | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>
19.3. deleteRepoNotification Copy linkLink copied to clipboard!
Deletes the specified notification.
DELETE /api/v1/repository/{repository}/notification/{uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
uuid | The UUID of the notification | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification/<uuid>
19.4. resetRepositoryNotificationFailures Copy linkLink copied to clipboard!
Resets repository notification to 0 failures.
POST /api/v1/repository/{repository}/notification/{uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
uuid | The UUID of the notification | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>
19.5. createRepoNotification Copy linkLink copied to clipboard!
POST /api/v1/repository/{repository}/notification/
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Information for creating a notification on a repository
| Name | Description | Schema |
|---|---|---|
|
event | The event on which the notification will respond | string |
|
method | The method of notification (such as email or web callback) | string |
|
config | JSON config information for the specific method of notification | object |
|
eventConfig | JSON config information for the specific event of notification | object |
|
title | The human-readable title of the notification | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
--data '{
"event": "<event>",
"method": "<method>",
"config": {
"<config_key>": "<config_value>"
},
"eventConfig": {
"<eventConfig_key>": "<eventConfig_value>"
}
}' \
https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification/
19.6. listRepoNotifications Copy linkLink copied to clipboard!
List the notifications for the specified repository.
GET /api/v1/repository/{repository}/notification/
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification
Chapter 20. robot Copy linkLink copied to clipboard!
Manage user and organization robot accounts.
20.1. getUserRobots Copy linkLink copied to clipboard!
List the available robots for the user.
GET /api/v1/user/robots
Authorizations: oauth2_implicit (user:admin)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
limit | If specified, the number of robots to return. | integer |
| query |
token | If false, the robot’s token is not returned. | boolean |
| query |
permissions | Whether to include repositories and teams in which the robots have permission. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/user/robots?limit=10&token=false&permissions=true" \
-H "Authorization: Bearer <your_access_token>"
20.2. getOrgRobotPermissions Copy linkLink copied to clipboard!
Returns the list of repository permissions for the org’s robot.
GET /api/v1/organization/{orgname}/robots/{robot_shortname}/permissions
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"https://quay-server.example.com/api/v1/organization/<ORGNAME>/robots/<ROBOT_SHORTNAME>/permissions"
20.3. regenerateOrgRobotToken Copy linkLink copied to clipboard!
Regenerates the token for an organization robot.
POST /api/v1/organization/{orgname}/robots/{robot_shortname}/regenerate
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate"
20.4. getUserRobotPermissions Copy linkLink copied to clipboard!
Returns the list of repository permissions for the user’s robot.
GET /api/v1/user/robots/{robot_shortname}/permissions
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"https://quay-server.example.com/api/v1/user/robots/<ROBOT_SHORTNAME>/permissions"
20.5. regenerateUserRobotToken Copy linkLink copied to clipboard!
Regenerates the token for a user’s robot.
POST /api/v1/user/robots/{robot_shortname}/regenerate
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate"
20.6. getOrgRobot Copy linkLink copied to clipboard!
Returns the organization’s robot with the specified name.
GET /api/v1/organization/{orgname}/robots/{robot_shortname}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"https://quay-server.example.com/api/v1/organization/<ORGNAME>/robots/<ROBOT_SHORTNAME>"
20.7. createOrgRobot Copy linkLink copied to clipboard!
Create a new robot in the organization.
PUT /api/v1/organization/{orgname}/robots/{robot_shortname}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Optional data for creating a robot
| Name | Description | Schema |
|---|---|---|
|
description | Optional text description for the robot | string |
|
unstructured_metadata | Optional unstructured metadata for the robot | object |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_name>"
20.8. deleteOrgRobot Copy linkLink copied to clipboard!
Delete an existing organization robot.
DELETE /api/v1/organization/{orgname}/robots/{robot_shortname}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_shortname>"
20.9. getOrgRobots Copy linkLink copied to clipboard!
List the organization’s robots.
GET /api/v1/organization/{orgname}/robots
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
orgname | The name of the organization | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
limit | If specified, the number of robots to return. | integer |
| query |
token | If false, the robot’s token is not returned. | boolean |
| query |
permissions | Whether to include repositories and teams in which the robots have permission. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots"
20.10. getUserRobot Copy linkLink copied to clipboard!
Returns the user’s robot with the specified name.
GET /api/v1/user/robots/{robot_shortname}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
20.11. createUserRobot Copy linkLink copied to clipboard!
Create a new user robot with the specified name.
PUT /api/v1/user/robots/{robot_shortname}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
Request body schema (application/json)
Optional data for creating a robot
| Name | Description | Schema |
|---|---|---|
|
description | Optional text description for the robot | string |
|
unstructured_metadata | Optional unstructured metadata for the robot | object |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/user/robots/<robot_name>"
20.12. deleteUserRobot Copy linkLink copied to clipboard!
Delete an existing robot.
DELETE /api/v1/user/robots/{robot_shortname}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
robot_shortname | The short name for the robot, without any user or organization prefix | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
"<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
20.13. Auth Federated Robot Token Copy linkLink copied to clipboard!
Return an expiring robot token using the robot identity federation mechanism.
GET oauth2/federation/robot/token
Authorizations: oauth2_implicit (robot:auth)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful authentication and token generation | { "token": "string" } |
| 401 | Unauthorized: missing or invalid authentication | { "error": "string" } |
Request Body
| Type | Name | Description | Schema |
|---|---|---|---|
| body |
auth_result | The result of the authentication process, containing information about the robot identity. | { "missing": "boolean", "error_message": "string", "context": { "robot": "RobotObject" } } |
Example command
$ curl -X GET "https://quay-server.example.com/oauth2/federation/robot/token" \
-H "Authorization: Bearer <your_access_token>"
20.14. createOrgRobotFederation Copy linkLink copied to clipboard!
Create a federation configuration for the specified organization robot.
POST /api/v1/organization/{orgname}/robots/{robot_shortname}/federation
Retrieve the federation configuration for the specified organization robot.
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path | orgname + robot_shortnamerequired | The name of the organization and the short name for the robot, without any user or organization prefix | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/organization/{orgname}/robots/{robot_shortname}/federation" \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json"
Chapter 21. search Copy linkLink copied to clipboard!
Conduct searches against all registry context.
21.1. conductRepoSearch Copy linkLink copied to clipboard!
Get a list of apps and repositories that match the specified query.
GET /api/v1/find/repositories
Authorizations:
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
includeUsage | Whether to include usage metadata | boolean |
| query |
page | The page. | integer |
| query |
query | The search query. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/find/repositories?query=<repo_name>&page=1&includeUsage=true" \
-H "Authorization: Bearer <bearer_token>"
21.2. conductSearch Copy linkLink copied to clipboard!
Get a list of entities and resources that match the specified query.
GET /api/v1/find/all
Authorizations: oauth2_implicit (repo:read)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
query | The search query. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/find/all?query=<mysearchterm>" \
-H "Authorization: Bearer <bearer_token>"
21.3. getMatchingEntities Copy linkLink copied to clipboard!
Get a list of entities that match the specified prefix.
GET /api/v1/entities/{prefix}
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
prefix | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
includeOrgs | Whether to include orgs names. | boolean |
| query |
includeTeams | Whether to include team names. | boolean |
| query |
namespace | Namespace to use when querying for org entities. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/entities/<prefix>?includeOrgs=<true_or_false>&includeTeams=<true_or_false>&namespace=<namespace>" \
-H "Authorization: Bearer <bearer_token>"
Chapter 22. secscan Copy linkLink copied to clipboard!
List and manage repository vulnerabilities and other security information.
22.1. getRepoManifestSecurity Copy linkLink copied to clipboard!
GET /api/v1/repository/{repository}/manifest/{manifestref}/security
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
manifestref | The digest of the manifest | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
vulnerabilities | Include vulnerabilities informations | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
"https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/manifest/<manifest_digest>/security?vulnerabilities=<true_or_false>"
Chapter 23. superuser Copy linkLink copied to clipboard!
Superuser API.
23.1. getConfigDump Copy linkLink copied to clipboard!
Returns the full configuration dump of the Quay instance.
GET /api/v1/superuser/config
Authorizations: oauth2_implicit (super:user)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Response structure
The JSON response includes the following top-level keys:
| Name | Description | Schema |
|---|---|---|
| All config.yaml and defaulted parameters used by the Flask app that are part of the defined schema. | object | |
| Any parameters from config.yaml or defaults that are not defined in the schema. | object | |
| All environment variables available to the Flask app. | object | |
| The complete config schema (CONFIG_SCHEMA) defining expected keys and types. | object |
Example command
$ curl -X GET -H "Authorization: Bearer <bearer_token>"
"https://<quay-server.example.com>/api/v1/superuser/config" | jq -r .config
23.2. createInstallUser Copy linkLink copied to clipboard!
Creates a new user.
POST /api/v1/superuser/users/
Authorizations: oauth2_implicit (super:user)
Request body schema (application/json)
Data for creating a user
| Name | Description | Schema |
|---|---|---|
|
username | The username of the user being created | string |
|
email | The email address of the user being created | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{
"username": "newuser",
"email": "newuser@example.com"
}' "https://<quay-server.example.com>/api/v1/superuser/users/"
23.3. changeInstallUser Copy linkLink copied to clipboard!
Updates information about the specified user.
PUT /api/v1/superuser/users/{username}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
username | The username of the user being managed | string |
Request body schema (application/json)
Description of updates for a user
| Name | Description | Schema |
|---|---|---|
|
password | The new password for the user | string |
|
email | The new e-mail address for the user | string |
|
enabled | Whether the user is enabled | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://<quay-server.example.com>/api/v1/superuser/users/<username>" \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"password": "<N3wP@ssw0rd!>",
"email": "<updated-email@example.com>",
"enabled": true
}'
23.4. deleteInstallUser Copy linkLink copied to clipboard!
Deletes a user.
DELETE /api/v1/superuser/users/{username}
Authorizations: oauth2_implicit (super:user)
Request body schema (application/json)
Data for deleting a user
| Name | Description | Schema |
|---|---|---|
|
username | The username of the user being deleted | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/{username}"
23.5. listAllUsers Copy linkLink copied to clipboard!
Returns a list of all users in the system.
GET /api/v1/superuser/users/
Authorizations: oauth2_implicit (super:user)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
next_page | The page token for the next page | string |
| query |
limit | Limit to the number of results to return per page. Max 100. | integer |
| query |
disabled | If false, only enabled users will be returned. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/"
23.6. listAllLogs Copy linkLink copied to clipboard!
List the usage logs for the current system.
GET /api/v1/superuser/logs
Authorizations: oauth2_implicit (super:user)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
next_page | The page token for the next page | string |
| query |
page | The page number for the logs | integer |
| query |
endtime | Latest time to which to get logs (%m/%d/%Y %Z) | string |
| query |
starttime | Earliest time from which to get logs (%m/%d/%Y %Z) | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"https://<quay_server>/api/v1/superuser/logs?starttime=<start_time>&endtime=<end_time>&page=<page_number>&next_page=<next_page_token>"
23.7. listAllOrganizations Copy linkLink copied to clipboard!
List the organizations for the current system.
GET /api/v1/superuser/organizations
Authorizations: oauth2_implicit (super:user)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
name | The name of the organization being managed | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/organizations/"
23.8. createServiceKey Copy linkLink copied to clipboard!
POST /api/v1/superuser/keys
Authorizations: oauth2_implicit (super:user)
Request body schema (application/json)
Description of creation of a service key
| Name | Description | Schema |
|---|---|---|
|
service | The service authenticating with this key | string |
|
name | The friendly name of a service key | string |
|
metadata | The key/value pairs of this key’s metadata | object |
|
notes | If specified, the extra notes for the key | string |
|
expiration | The expiration date as a unix timestamp |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"service": "<service_name>",
"expiration": <unix_timestamp>
}' \
"<quay_server>/api/v1/superuser/keys"
23.9. listServiceKeys Copy linkLink copied to clipboard!
GET /api/v1/superuser/keys
Authorizations: oauth2_implicit (super:user)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"https://<quay_server>/api/v1/superuser/keys"
23.10. listAllAppTokens Copy linkLink copied to clipboard!
Returns a list of all app specific tokens in the system.
This endpoint is for system-wide auditing by superusers and global read-only superusers.
GET /api/v1/superuser/apptokens
Authorizations: oauth2_implicit (super:user)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
expiring | If true, only returns those tokens expiring soon | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
Example: List all app-specific tokens
$ curl -X GET \
"https://quay-server.example.com/api/v1/superuser/apptokens" \
-H "Authorization: Bearer <superuser_access_token>" \
-H "Accept: application/json"
Example: List app-specific tokens expiring soon
$ curl -X GET \
"https://quay-server.example.com/api/v1/superuser/apptokens?expiring=true" \
-H "Authorization: Bearer <superuser_access_token>" \
-H "Accept: application/json"
23.11. changeUserQuotaSuperUser Copy linkLink copied to clipboard!
PUT /api/v1/superuser/organization/{namespace}/quota/{quota_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string | |
| path |
quota_id | string |
Request body schema (application/json)
Description of a new organization quota
| Name | Description | Schema |
|---|---|---|
|
limit_bytes | Number of bytes the organization is allowed | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota/<quota_id>" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"limit_bytes": <NEW_QUOTA_LIMIT>
}'
23.12. deleteUserQuotaSuperUser Copy linkLink copied to clipboard!
DELETE /api/v1/superuser/organization/{namespace}/quota/{quota_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string | |
| path |
quota_id | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota/<quota_id>" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
23.13. createUserQuotaSuperUser Copy linkLink copied to clipboard!
POST /api/v1/superuser/organization/{namespace}/quota
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string |
Request body schema (application/json)
Description of a new organization quota
| Name | Description | Schema |
|---|---|---|
|
limit_bytes | Number of bytes the organization is allowed | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"limit_bytes": 10737418240
}'
23.14. listUserQuotaSuperUser Copy linkLink copied to clipboard!
GET /api/v1/superuser/organization/{namespace}/quota
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
23.15. changeOrganizationQuotaSuperUser Copy linkLink copied to clipboard!
PUT /api/v1/superuser/users/{namespace}/quota/{quota_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string | |
| path |
quota_id | string |
Request body schema (application/json)
Description of a new organization quota
| Name | Description | Schema |
|---|---|---|
|
limit_bytes | Number of bytes the organization is allowed | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://quay-server.example.com/api/v1/superuser/users/<username>/quota/<quota_id>" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"limit_bytes": <NEW_QUOTA_LIMIT>
}'
23.16. deleteOrganizationQuotaSuperUser Copy linkLink copied to clipboard!
DELETE /api/v1/superuser/users/{namespace}/quota/{quota_id}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string | |
| path |
quota_id | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/superuser/users/<username>/quota/<quota_id>" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
23.17. createOrganizationQuotaSuperUser Copy linkLink copied to clipboard!
POST /api/v1/superuser/users/{namespace}/quota
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string |
Request body schema (application/json)
Description of a new organization quota
| Name | Description | Schema |
|---|---|---|
|
limit_bytes | Number of bytes the organization is allowed | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/superuser/users/<username>/quota" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"limit_bytes": <QUOTA_LIMIT>
}'
23.18. listOrganizationQuotaSuperUser Copy linkLink copied to clipboard!
GET /api/v1/superuser/users/{namespace}/quota
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/users/<username>/quota" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
23.19. changeOrganization Copy linkLink copied to clipboard!
Updates information about the specified user.
PUT /api/v1/superuser/organizations/{name}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
name | The name of the organizaton being managed | string |
Request body schema (application/json)
Description of updates for an existing organization
| Name | Description | Schema |
|---|---|---|
|
email | Organization contact email | string |
|
invoice_email | Whether the organization desires to receive emails for invoices | boolean |
|
invoice_email_address | The email address at which to receive invoices | |
|
tag_expiration_s | The number of seconds for tag expiration | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"email": "<contact_email>",
"invoice_email": <boolean_value>,
"invoice_email_address": "<invoice_email_address>",
"tag_expiration_s": <expiration_seconds>
}' \
"https://<quay_server>/api/v1/superuser/organizations/<organization_name>"
23.20. deleteOrganization Copy linkLink copied to clipboard!
Deletes the specified organization.
DELETE /api/v1/superuser/organizations/{name}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
name | The name of the organizaton being managed | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
"https://<quay_server>/api/v1/superuser/organizations/<organization_name>"
23.21. approveServiceKey Copy linkLink copied to clipboard!
POST /api/v1/superuser/approvedkeys/{kid}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
kid | The unique identifier for a service key | string |
Request body schema (application/json)
Information for approving service keys
| Name | Description | Schema |
|---|---|---|
|
notes | Optional approval notes | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"notes": "<approval_notes>"
}' \
"https://<quay_server>/api/v1/superuser/approvedkeys/<kid>"
23.22. deleteServiceKey Copy linkLink copied to clipboard!
DELETE /api/v1/superuser/keys/{kid}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
kid | The unique identifier for a service key | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <bearer_token>" \
"https://<quay_server>/api/v1/superuser/keys/<kid>"
23.23. updateServiceKey Copy linkLink copied to clipboard!
PUT /api/v1/superuser/keys/{kid}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
kid | The unique identifier for a service key | string |
Request body schema (application/json)
Description of updates for a service key
| Name | Description | Schema |
|---|---|---|
|
name | The friendly name of a service key | string |
|
metadata | The key/value pairs of this key’s metadata | object |
|
expiration | The expiration date as a unix timestamp |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
-d '{
"name": "<service_key_name>",
"metadata": {"<key>": "<value>"},
"expiration": <unix_timestamp>
}' \
"https://<quay_server>/api/v1/superuser/keys/<kid>"
23.24. getServiceKey Copy linkLink copied to clipboard!
GET /api/v1/superuser/keys/{kid}
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
kid | The unique identifier for a service key | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"https://<quay_server>/api/v1/superuser/keys/<kid>"
23.25. getRepoBuildStatusSuperUser Copy linkLink copied to clipboard!
Return the status for the builds specified by the build uuids.
GET /api/v1/superuser/{build_uuid}/status
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
build_uuid | The UUID of the build | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/status" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
23.26. getRepoBuildSuperUser Copy linkLink copied to clipboard!
Returns information about a build.
GET /api/v1/superuser/{build_uuid}/build
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
build_uuid | The UUID of the build | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/build" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
23.27. getRepoBuildLogsSuperUser Copy linkLink copied to clipboard!
Return the build logs for the build specified by the build uuid.
GET /api/v1/superuser/{build_uuid}/logs
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
build_uuid | The UUID of the build | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/logs" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
23.28. getRegistrySize Copy linkLink copied to clipboard!
GET /api/v1/superuser/registrysize/
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string |
Description of a image registry size
| Name | Description | Schema |
|---|---|---|
|
size_bytes* | Number of bytes the organization is allowed | integer |
| last_ran | integer | |
| queued | boolean | |
| running | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | CREATED | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
"https://<quay_server>/api/v1/superuser/registrysize/"
23.29. postRegistrySize Copy linkLink copied to clipboard!
POST /api/v1/superuser/registrysize/
Authorizations: oauth2_implicit (super:user)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
namespace | string |
Request body schema (application/json)
Description of a image registry size
| Name | Description | Schema |
|---|---|---|
| last_ran | integer | |
| queued | boolean | |
| running | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | CREATED | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/superuser/registrysize/" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"namespace": "<namespace>",
"last_ran": 1700000000,
"queued": true,
"running": false
}'
Chapter 24. tag Copy linkLink copied to clipboard!
Manage the tags of a repository.
24.1. restoreTag Copy linkLink copied to clipboard!
Restores a repository tag back to a previous image in the repository.
POST /api/v1/repository/{repository}/tag/{tag}/restore
Authorizations: oauth2_implicit (repo:write)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
tag | The name of the tag | string |
Request body schema (application/json)
Restores a tag to a specific image
| Name | Description | Schema |
|---|---|---|
|
manifest_digest | If specified, the manifest digest that should be used | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
--data '{
"manifest_digest": <manifest_digest>
}' \
quay-server.example.com/api/v1/repository/quayadmin/busybox/tag/test/restore
24.2. changeTag Copy linkLink copied to clipboard!
Change which image a tag points to or create a new tag.
PUT /api/v1/repository/{repository}/tag/{tag}
Authorizations: oauth2_implicit (repo:write)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
tag | The name of the tag | string |
Request body schema (application/json)
Makes changes to a specific tag
| Name | Description | Schema |
|---|---|---|
|
manifest_digest | (If specified) The manifest digest to which the tag should point | |
|
expiration | (If specified) The expiration for the image | |
|
immutable | (If specified) Whether the tag should be immutable. Write permission required to set, admin permission required to unset. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <bearer_token>" \
-H "Content-Type: application/json" \
--data '{
"manifest_digest": "<manifest_digest>"
"immutable": true
}' \
https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/tag/<tag>
24.3. deleteFullTag Copy linkLink copied to clipboard!
Delete the specified repository tag.
DELETE /api/v1/repository/{repository}/tag/{tag}
Authorizations: oauth2_implicit (repo:write)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
tag | The name of the tag | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/<tag_name>" \
-H "Authorization: Bearer <your_access_token>"
24.4. listRepoTags Copy linkLink copied to clipboard!
GET /api/v1/repository/{repository}/tag/
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
onlyActiveTags | Filter to only active tags. | boolean |
| query |
page | Page index for the results. Default 1. | integer |
| query |
limit | Limit to the number of results to return per page. Max 100. | integer |
| query |
filter_tag_name | Syntax: <op>:<name> Filters the tag names based on the operation.<op> can be 'like' or 'eq'. | string |
| query |
specificTag | Filters the tags to the specific tag. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <bearer_token>" \
-H "Accept: application/json" \
https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/tag/
24.5. getTagPullStatistics Copy linkLink copied to clipboard!
Get pull statistics for a specific tag.
GET /api/v1/repository/{repository}/tag/{tag}/pull_statistics
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
| path |
tag | The name of the tag | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/repository/<organization>/<repository>/tag/<tag>/pull_statistics" -H "Authorization: <bearer_token>" -H "Accept: application/json"
24.6. getManifestPullStatistics Copy linkLink copied to clipboard!
Get pull statistics for a specific manifest.
GET /api/v1/repository/{repository}/manifest/{manifestref}/pull_statistics
Authorizations: oauth2_implicit (repo:read)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
manifestref | The digest of the manifest | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
curl -X GET \
"https://<quay-server.example.com>/api/v1/repository/<organization>/<repository>/manifest/sha256:<manifest>/pull_statistics" \
-H "Authorization: <bearer_token>" \
-H "Accept: application/json"
Chapter 25. immutability_policy Copy linkLink copied to clipboard!
25.1. createOrgImmutabilityPolicy Copy linkLink copied to clipboard!
POST /api/v1/organization/{orgname}/immutabilitypolicy/
Authorizations: oauth2_implicit (org:admin)
Request body schema (application/json)
The immutability policy configuration
| Name | Description | Schema |
|---|---|---|
|
tagPattern | Regex pattern to match tag names | string |
|
tagPatternMatches | If true, matching tags are immutable. If false, non-matching tags are immutable. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/<orgname>/immutabilitypolicy/" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"tagPattern": ".*", "tagPatternMatches": true}'
25.2. createRepositoryImmutabilityPolicy Copy linkLink copied to clipboard!
POST /api/v1/repository/{repository}/immutabilitypolicy/
Authorizations: oauth2_implicit (repo:admin)
Request body schema (application/json)
The immutability policy configuration
| Name | Description | Schema |
|---|---|---|
|
tagPattern | Regex pattern to match tag names | string |
|
tagPatternMatches | If true, matching tags are immutable. If false, non-matching tags are immutable. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/immutabilitypolicy/" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"tagPattern": ".*", "tagPatternMatches": true}'
25.3. deleteOrgImmutabilityPolicy Copy linkLink copied to clipboard!
DELETE /api/v1/organization/{orgname}/immutabilitypolicy/{policy_uuid}
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/immutabilitypolicy/<policy_uuid>" \
-H "Authorization: Bearer <access_token>"
25.4. deleteRepositoryImmutabilityPolicy Copy linkLink copied to clipboard!
DELETE /api/v1/repository/{repository}/immutabilitypolicy/{policy_uuid}
Authorizations: oauth2_implicit (repo:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/immutabilitypolicy/<policy_uuid>" \
-H "Authorization: Bearer <access_token>"
25.5. getOrgImmutabilityPolicy Copy linkLink copied to clipboard!
GET /api/v1/organization/{orgname}/immutabilitypolicy/{policy_uuid}
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/immutabilitypolicy/<policy_uuid>" \
-H "Authorization: Bearer <access_token>"
25.6. getRepositoryImmutabilityPolicy Copy linkLink copied to clipboard!
GET /api/v1/repository/{repository}/immutabilitypolicy/{policy_uuid}
Authorizations: oauth2_implicit (repo:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/immutabilitypolicy/<policy_uuid>" \
-H "Authorization: Bearer <access_token>"
25.7. listOrgImmutabilityPolicies Copy linkLink copied to clipboard!
GET /api/v1/organization/{orgname}/immutabilitypolicy/
Authorizations: oauth2_implicit (org:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/immutabilitypolicy/" \
-H "Authorization: Bearer <access_token>"
25.8. listRepositoryImmutabilityPolicies Copy linkLink copied to clipboard!
GET /api/v1/repository/{repository}/immutabilitypolicy/
Authorizations: oauth2_implicit (repo:admin)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/immutabilitypolicy/" \
-H "Authorization: Bearer <access_token>"
25.9. updateOrgImmutabilityPolicy Copy linkLink copied to clipboard!
PUT /api/v1/organization/{orgname}/immutabilitypolicy/{policy_uuid}
Authorizations: oauth2_implicit (org:admin)
Request body schema (application/json)
The immutability policy configuration
| Name | Description | Schema |
|---|---|---|
|
tagPattern | Regex pattern to match tag names | string |
|
tagPatternMatches | If true, matching tags are immutable. If false, non-matching tags are immutable. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://<quay-server.example.com>/api/v1/organization/<orgname>/immutabilitypolicy/<policy_uuid>" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"tagPattern": ".*", "tagPatternMatches": true}'
25.10. updateRepositoryImmutabilityPolicy Copy linkLink copied to clipboard!
PUT /api/v1/repository/{repository}/immutabilitypolicy/{policy_uuid}
Authorizations: oauth2_implicit (repo:admin)
Request body schema (application/json)
The immutability policy configuration
| Name | Description | Schema |
|---|---|---|
|
tagPattern | Regex pattern to match tag names | string |
|
tagPatternMatches | If true, matching tags are immutable. If false, non-matching tags are immutable. | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/immutabilitypolicy/<policy_uuid>" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"tagPattern": ".*", "tagPatternMatches": true}'
Chapter 26. team Copy linkLink copied to clipboard!
Create, list and manage an organization’s teams.
26.1. getOrganizationTeamPermissions Copy linkLink copied to clipboard!
Returns the list of repository permissions for the org’s team.
GET /api/v1/organization/{orgname}/team/{teamname}/permissions
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
teamname | The name of the team | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <your_access_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/permissions"
26.2. updateOrganizationTeamMember Copy linkLink copied to clipboard!
Adds or invites a member to an existing team.
PUT /api/v1/organization/{orgname}/team/{teamname}/members/{membername}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
teamname | The name of the team | string |
| path |
membername | The username of the team member | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <your_access_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"
26.3. deleteOrganizationTeamMember Copy linkLink copied to clipboard!
Delete a member of a team.
If the user is merely invited to join the team, then the invite is removed instead.
DELETE /api/v1/organization/{orgname}/team/{teamname}/members/{membername}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
teamname | The name of the team | string |
| path |
membername | The username of the team member | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <your_access_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"
26.4. getOrganizationTeamMembers Copy linkLink copied to clipboard!
Retrieve the list of members for the specified team.
GET /api/v1/organization/{orgname}/team/{teamname}/members
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
teamname | The name of the team | string |
| path |
orgname | The name of the organization | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
includePending | Whether to include pending members | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET \
-H "Authorization: Bearer <your_access_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members"
26.5. inviteTeamMemberEmail Copy linkLink copied to clipboard!
Invites an email address to an existing team.
PUT /api/v1/organization/{orgname}/team/{teamname}/invite/{email}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
email | string | |
| path |
teamname | string | |
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT \
-H "Authorization: Bearer <your_access_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"
26.6. deleteTeamMemberEmailInvite Copy linkLink copied to clipboard!
Delete an invite of an email address to join a team.
DELETE /api/v1/organization/{orgname}/team/{teamname}/invite/{email}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
email | string | |
| path |
teamname | string | |
| path |
orgname | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
+
$ curl -X DELETE \
-H "Authorization: Bearer <your_access_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"
26.7. updateOrganizationTeam Copy linkLink copied to clipboard!
Update the org-wide permission for the specified team.
This API is also used to create a team.
PUT /api/v1/organization/{orgname}/team/{teamname}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
teamname | The name of the team | string |
| path |
orgname | The name of the organization | string |
Request body schema (application/json)
Description of a team
| Name | Description | Schema |
|---|---|---|
|
role | Org wide permissions that should apply to the team | string |
|
description | Markdown description for the team | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -k -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -H "Authorization: Bearer <bearer_token>" --data '{"role": "creator"}' https://<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>
26.8. deleteOrganizationTeam Copy linkLink copied to clipboard!
Delete the specified team.
DELETE /api/v1/organization/{orgname}/team/{teamname}
Authorizations: oauth2_implicit (org:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
teamname | The name of the team | string |
| path |
orgname | The name of the organization | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE \
-H "Authorization: Bearer <your_access_token>" \
"<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>"
Chapter 27. trigger Copy linkLink copied to clipboard!
Create, list and manage build triggers.
27.1. activateBuildTrigger Copy linkLink copied to clipboard!
Activate the specified build trigger.
POST /api/v1/repository/{repository}/trigger/{trigger_uuid}/activate
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
trigger_uuid | The UUID of the build trigger | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
| Name | Description | Schema |
|---|---|---|
|
config | Arbitrary json. | object |
|
pull_robot | The name of the robot that will be used to pull images. | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid/activate" \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"config": {
"branch": "main"
},
"pull_robot": "example+robot"
}'
27.2. listTriggerRecentBuilds Copy linkLink copied to clipboard!
List the builds started by the specified trigger.
GET /api/v1/repository/{repository}/trigger/{trigger_uuid}/builds
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
trigger_uuid | The UUID of the build trigger | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
limit | The maximum number of builds to return | integer |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid/builds?limit=10" \
-H "Authorization: Bearer <your_access_token>"
27.3. manuallyStartBuildTrigger Copy linkLink copied to clipboard!
Manually start a build from the specified trigger.
POST /api/v1/repository/{repository}/trigger/{trigger_uuid}/start
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
trigger_uuid | The UUID of the build trigger | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Optional run parameters for activating the build trigger
| Name | Description | Schema |
|---|---|---|
|
branch_name | (SCM only) If specified, the name of the branch to build. | string |
|
commit_sha | (Custom Only) If specified, the ref/SHA1 used to checkout a git repository. | string |
|
refs | (SCM Only) If specified, the ref to build. |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid/start" \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"branch_name": "main",
"commit_sha": "abcdef1234567890",
"refs": "refs/heads/main"
}'
27.4. getBuildTrigger Copy linkLink copied to clipboard!
Get information for the specified build trigger.
GET /api/v1/repository/{repository}/trigger/{trigger_uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
trigger_uuid | The UUID of the build trigger | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \
-H "Authorization: Bearer <your_access_token>"
27.5. updateBuildTrigger Copy linkLink copied to clipboard!
Updates the specified build trigger.
PUT /api/v1/repository/{repository}/trigger/{trigger_uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
trigger_uuid | The UUID of the build trigger | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Request body schema (application/json)
Options for updating a build trigger
| Name | Description | Schema |
|---|---|---|
|
enabled | Whether the build trigger is enabled | boolean |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X PUT "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
27.6. deleteBuildTrigger Copy linkLink copied to clipboard!
Delete the specified build trigger.
DELETE /api/v1/repository/{repository}/trigger/{trigger_uuid}
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
trigger_uuid | The UUID of the build trigger | string |
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \
-H "Authorization: Bearer <your_access_token>"
27.7. listBuildTriggers Copy linkLink copied to clipboard!
List the triggers for the specified repository.
GET /api/v1/repository/{repository}/trigger/
Authorizations: oauth2_implicit (repo:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/" \
-H "Authorization: Bearer <your_access_token>"
Chapter 28. user Copy linkLink copied to clipboard!
Manage the current user.
28.1. createStar Copy linkLink copied to clipboard!
Star a repository.
POST /api/v1/user/starred
Authorizations: oauth2_implicit (repo:read)
Request body schema (application/json)
| Name | Description | Schema |
|---|---|---|
|
namespace | Namespace in which the repository belongs | string |
|
repository | Repository name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 201 | Successful creation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X POST "https://quay-server.example.com/api/v1/user/starred" \
-H "Authorization: Bearer <your_access_token>" \
-H "Content-Type: application/json" \
-d '{
"namespace": "<namespace>",
"repository": "<repository_name>"
}'
28.2. listStarredRepos Copy linkLink copied to clipboard!
List all starred repositories.
GET /api/v1/user/starred
Authorizations: oauth2_implicit (user:admin)
Query parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| query |
next_page | The page token for the next page | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/user/starred?next_page=<next_page_token>" \
-H "Authorization: Bearer <your_access_token>"
28.3. getLoggedInUser Copy linkLink copied to clipboard!
Get user information for the authenticated user.
GET /api/v1/user/
Authorizations: oauth2_implicit (user:read)
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/user/" \
-H "Authorization: Bearer <your_access_token>"
28.4. deleteStar Copy linkLink copied to clipboard!
Removes a star from a repository.
DELETE /api/v1/user/starred/{repository}
Authorizations: oauth2_implicit (user:admin)
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
repository | The full path of the repository. e.g. namespace/name | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 204 | Deleted | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X DELETE "https://quay-server.example.com/api/v1/user/starred/namespace/repository-name" \
-H "Authorization: Bearer <your_access_token>"
28.5. getUserInformation Copy linkLink copied to clipboard!
Get user information for the specified user.
GET /api/v1/users/{username}
Authorizations:
Path parameters
| Type | Name | Description | Schema |
|---|---|---|---|
| path |
username | string |
Responses
| HTTP Code | Description | Schema |
|---|---|---|
| 200 | Successful invocation | |
| 400 | Bad Request | |
| 401 | Session required | |
| 403 | Unauthorized access | |
| 404 | Not found |
Example command
$ curl -X GET "https://quay-server.example.com/api/v1/users/example_user" \
-H "Authorization: Bearer <your_access_token>"
Chapter 29. Definitions Copy linkLink copied to clipboard!
29.1. ApiError Copy linkLink copied to clipboard!
| Name | Description | Schema |
|---|---|---|
|
status | Status code of the response. | integer |
|
type | Reference to the type of the error. | string |
|
detail | Details about the specific instance of the error. | string |
|
title | Unique error code to identify the type of error. | string |
|
error_message | Deprecated; alias for detail | string |
|
error_type | Deprecated; alias for detail | string |
29.2. UserView Copy linkLink copied to clipboard!
| Name | Description | Schema |
|---|---|---|
|
verified | Whether the user’s email address has been verified | boolean |
|
anonymous | true if this user data represents a guest user | boolean |
|
email | The user’s email address | string |
|
avatar | Avatar data representing the user’s icon | object |
|
organizations | Information about the organizations in which the user is a member |
array of object |
|
logins | The list of external login providers against which the user has authenticated |
array of object |
|
can_create_repo | Whether the user has permission to create repositories | boolean |
|
preferred_namespace | If true, the user’s namespace is the preferred namespace to display | boolean |
29.3. ViewMirrorConfig Copy linkLink copied to clipboard!
| Name | Description | Schema |
|---|---|---|
|
is_enabled | Used to enable or disable synchronizations. | boolean |
|
external_reference | Location of the external repository. | string |
|
external_registry_username | Username used to authenticate with external registry. | |
|
external_registry_password | Password used to authenticate with external registry. | |
|
sync_start_date | Determines the next time this repository is ready for synchronization. | string |
|
sync_interval | Number of seconds after next_start_date to begin synchronizing. | integer |
|
robot_username | Username of robot which will be used for image pushes. | string |
|
root_rule | A list of glob-patterns used to determine which tags should be synchronized. | object |
|
external_registry_config | object |
29.4. ApiErrorDescription Copy linkLink copied to clipboard!
| Name | Description | Schema |
|---|---|---|
|
type | A reference to the error type resource | string |
|
title | The title of the error. Can be used to uniquely identify the kind of error. | string |
|
description | A more detailed description of the error that may include help for fixing the issue. | string |