Red Hat Quay API 指南


Red Hat Quay 3

Red Hat Quay API 指南

Red Hat OpenShift Documentation Team

摘要

使用 Red Hat Quay API

前言

Red Hat Quay 应用程序编程接口(API)提供了一个全面的 RESTful 接口,用于管理和自动化 Red Hat Quay 中的任务。此 API 围绕 OAuth 2.0 协议 而设计,支持安全、精细访问 Red Hat Quay 资源,并允许管理员和用户执行诸如创建存储库、管理镜像、设置权限等操作。

Red Hat Quay 遵循 Semantic Versioning (SemVer)原则,确保跨版本的可预测的 API 稳定性,例如:

  • 主发行版本 :引入新功能。可能包括破坏对 API 兼容性的更改。例如,Red Hat Quay 2.0 的 API 与 Red Hat Quay 3.0 不同。
  • 次发行版本 :以向后兼容的方式添加新功能。例如,3. y 版本为 版本 3. 发行版本添加了功能。
  • 补丁版本 :提供 bug 修复和改进,同时保持与次要发行本(如 3.y.z )的向后兼容性。

以下指南更详细地描述了 Red Hat Quay API,并提供了有关以下主题的详情:

  • OAuth 2 访问令牌以及如何比较传统的 API 令牌和 Red Hat Quay 机器人令牌
  • 生成 OAuth 2 访问令牌
  • 令牌管理的最佳实践
  • OAuth 2 访问令牌功能
  • 使用 Red Hat Quay API
  • Red Hat Quay API 配置示例

第 1 章 Red Hat Quay OAuth 2.0 令牌简介

Red Hat Quay OAuth 2 令牌系统提供了一种安全、基于标准的方法来访问 Red Hat Quay 的 API 和其他相关资源。基于 OAuth 2 令牌的方法提供了一种安全方法,用于处理复杂环境的身份验证和授权。与更传统的 API 令牌相比,Red Hat Quay 的 OAuth 2 令牌系统包括以下改进:

  • 基于标准的安全性,遵循 OAuth 2.0 协议
  • 通过删除存在 OAuth 2 令牌的应用程序来撤销访问。
  • 细粒度访问控制,允许 Red Hat Quay 管理员为令牌分配特定权限。
  • 委派访问,允许第三方应用程序和服务代表用户执行。
  • 永不过时,这有助于确保 Red Hat Quay 保持与其他服务、平台和集成兼容。

Red Hat Quay 主要支持两种类型的令牌:OAuth 2 访问令牌和机器人帐户令牌。在保证时,也提供了第三个 令牌 类型(即 OCI 引用令牌)来列出存储库下清单的 OCI 引用器。

以下章节详细介绍了每种令牌类型以及如何生成每种令牌类型。

第 2 章 OAuth 2 访问令牌

OAuth 2 访问令牌(包括 Red Hat Quay 的 "API 令牌")启用对 Red Hat Quay API 的用户身份验证访问,适用于需要用户身份验证的应用程序。这些令牌通过 OAuth 2 授权过程获得,其中 Red Hat Quay 管理员代表自己或其他用户生成令牌来访问 Red Hat Quay API 端点。OAuth 2 令牌根据为令牌定义的范围来授权对 API 端点的操作。

注意

虽然 OAuth 2 令牌根据令牌定义的范围来授权对 API 端点的操作,但访问资源本身取决于 Red Hat Quay 基于角色的访问控制(RBAC)机制。可以在资源上创建操作,例如存储库,前者为您提供了针对该命名空间的正确角色(AdminCreator)。即使 API 令牌被授予了 repo:admin 范围,也是如此。

OAuth 2 访问令牌只能通过 Red Hat Quay UI 创建;无法使用 CLI 创建 OAuth 2 访问令牌。在创建 OAuth 2 令牌时,可以为令牌拥有者选择以下选项:

  • 管理组织.选择后,允许用户管理机构,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。
  • 管理存储库.选择后,提供对授予用户有权访问的所有存储库的管理员访问权限。
  • 创建存储库。选择后,允许用户在授予用户创建存储库的任何命名空间中创建存储库。
  • 查看所有可见的存储库。选择后,用户可以查看和拉取授予用户可见的所有存储库。
  • 对任何可访问的存储库进行读/写。选择后,允许用户查看、推送和拉取到授予用户具有写入访问权限的所有存储库。
  • 超级用户访问.选择后,为用户提供了管理安装的能力,包括管理用户、管理超级用户面板中的机构和其他功能。
  • 选择了用户时,允许用户管理您的帐户,包括创建机器人并将其权限授予您的存储库。
  • 读取用户信息.选择后,为用户提供读取用户信息(如用户名和电子邮件地址)的能力。

令牌经销商应注意,他们在代表用户生成令牌时授予其授权,并且在授予了管理机构、Super User Access管理用户 等权限前,用户应具有绝对信任。此外,访问令牌仅在创建时显示;它们无法通过 CLI 列出,也无法在 Red Hat Quay UI 中找到。如果访问令牌丢失或忘记,则必须创建新令牌;无法恢复令牌。

OAuth 2 访问令牌在 API 调用的 Authorization 标头中作为 Bearer 令牌传递,因此,用于向定义的 API 端点提供身份验证和授权,如镜像标签、存储库、机构等。

该 API 位于 Red Hat Quay 主机的 /api/v1 端点中。例如: https://<quay-server.example.com>/api/v1。它允许用户通过其浏览器连接到端点,通过启用 Swagger UI 来通过浏览器连接到 GETPOSTDELETEPUT Red Hat Quay 设置。API 可以被发出 API 调用的应用访问,并使用 OAuth 令牌,它将数据作为 JSON 发送和接收数据。

使用 Red Hat Quay 时,目前无法在 OAuth 2 访问令牌上轮转或设置过期时间,令牌生命周期为 10 年。当令牌被泄露时,可以通过删除创建令牌的应用程序来删除令牌。但是,这会删除在该特定应用程序内所做的所有令牌。

注意

在实践中,Red Hat Quay 管理员可以在每次要为用户创建新 OAuth 令牌时,在组织的 Applications 页面中创建新的 OAuth 应用程序。这将确保单个应用不负责所有 OAuth 令牌。因此,如果用户的令牌被破坏,管理员将删除被入侵令牌的应用。这有助于避免对令牌可能属于同一应用的其他用户造成中断。

以下小节介绍了如何生成和重新分配 OAuth 2 访问令牌。

2.1. 创建 OAuth 2 访问令牌

使用 Red Hat Quay 时,您必须创建一个 OAuth 2 访问令牌,然后才能访问机构的 API 端点。OAuth 2 访问令牌只能通过 Red Hat Quay UI 生成;CLI 无法用于生成 OAuth 2 访问令牌。

使用以下步骤创建 OAuth2 访问令牌。

先决条件

  • 您已以管理员身份登录到 Red Hat Quay。
  • 您已创建了 OAuth 2 应用。

流程

  1. 在主页上,选择一个机构。
  2. 在导航窗格中,选择 Applications
  3. 单击应用程序的名称,如 Test application
  4. 在导航窗格中,选择 Generate Token
  5. 选中以下选项的复选框:

    1. 管理组织.选择后,允许用户管理机构,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。
    2. 管理存储库.选择后,提供对授予用户有权访问的所有存储库的管理员访问权限。
    3. 创建存储库。选择后,允许用户在授予用户创建存储库的任何命名空间中创建存储库。
    4. 查看所有可见的存储库。选择后,用户可以查看和拉取授予用户可见的所有存储库。
    5. 对任何可访问的存储库进行读/写。选择后,允许用户查看、推送和拉取到授予用户具有写入访问权限的所有存储库。
    6. 超级用户访问.选择后,为用户提供了管理安装的能力,包括管理用户、管理超级用户面板中的机构和其他功能。
    7. 选择了用户时,允许用户管理您的帐户,包括创建机器人并将其权限授予您的存储库。
    8. 读取用户信息.选择后,为用户提供读取用户信息(如用户名和电子邮件地址)的能力。
  6. 单击 Generate Access Token。您将被重定向到新页面。
  7. 查看您允许的权限,然后点 授权应用程序。点 Authorize Application 确认您的决定。
  8. 您将被重定向到 Access Token 页面。复制并保存访问令牌。

    重要

    这是复制并保存访问令牌的唯一机会。在离开此页面后,无法恢复它。

2.2. 重新分配 OAuth 访问令牌

机构管理员可分配 OAuth API 令牌,供其他用户具有特定权限创建。这允许在没有机构管理权限创建 OAuth API 令牌的用户使用令牌时准确反映审计日志。

注意

以下流程仅适用于当前的 Red Hat Quay UI。目前没有在 Red Hat Quay v2 UI 中实施。

先决条件

  • 您以具有机构管理特权的用户身份登录,供您分配 OAuth API 令牌。

    注意

    OAuth API 令牌用于身份验证,而不是授权。例如,您要分配 OAuth 令牌的用户必须具有 Admin 团队角色才能使用管理 API 端点。如需更多信息,请参阅管理对存储库的访问

流程

  1. 可选。如果还没有更新,更新 Red Hat Quay config.yaml 文件,使其包含 FEATURE_ASSIGN_OAUTH_TOKEN: true 字段:

    # ...
    FEATURE_ASSIGN_OAUTH_TOKEN: true
    # ...
  2. 可选。重启 Red Hat Quay registry。
  3. 以机构管理员身份登录到您的 Red Hat Quay registry。
  4. 单击为您为其创建 OAuth 令牌的组织名称。
  5. 在导航窗格中,单击 Applications
  6. 点正确的应用程序名称。
  7. 在导航窗格中,单击 Generate Token
  8. 单击 Assign another user,并输入将要接管 OAuth 令牌的用户名称。
  9. 选中您希望新用户具有的所需权限框。例如,如果您只希望新用户能够创建存储库,请单击 Create Repositories

    重要

    权限控制由机构中的团队角色定义,无论这里选择的选项如何。例如,您要分配 OAuth 令牌的用户必须具有 Admin 团队角色才能使用管理 API 端点。

    仅选中 Super User Access 框并不实际授予用户这个权限。超级用户必须通过 config.yaml 文件配置,并且 此处必须选中该框。

  10. 单击 Assign token。此时会出现一个弹出框,确认带有以下信息的授权,并显示批准的权限:

    This will prompt user <username> to generate a token with the following permissions:
    repo:create
  11. 在弹出窗口中,单击 Assign token。您会被重定向到显示以下信息的新页面:

    Token assigned successfully

验证

  1. 在重新分配 OAuth 令牌后,分配的用户必须接受令牌来接收 bearer 令牌,该令牌需要使用 API 端点。请求分配的用户登录到 Red Hat Quay registry。
  2. 登录后,他们必须在 Users 和 Organizations 下单击其用户名。
  3. 在导航窗格中,他们必须单击 External Logins & Applications
  4. Authorized Applications 下,它们必须单击 授权应用程序 来确认应用程序。它们会被定向到一个新页面,其中必须单击 授权应用程序 进行确认。
  5. 它们会被重定向到显示其 bearer 令牌的新页面。它们必须保存此 bearer 令牌,因为它无法再次查看。

2.3. 删除 OAuth 2 访问令牌

由于 OAuth 2 访问令牌是通过 OAuth 应用创建的,所以无法轮转或更新它们。如果令牌被破坏,或者您需要删除令牌,您必须通过 Red Hat Quay UI 删除其关联的应用程序。

重要

删除应用程序会删除该特定应用程序中的所有令牌。请谨慎使用。

先决条件

  • 您已创建了 OAuth 2 访问令牌。

流程

  1. 在 Red Hat Quay UI 上,单击托管应用的组织的名称。然后,在导航窗格中,单击 Applications
  2. 单击应用名称,如 Test application
  3. 在导航窗格中,单击 Delete Application。您将被重定向到新页面。点 Delete application 并确认您的决定。

第 3 章 机器人帐户令牌

机器人帐户 令牌是 密码类型 凭证,用于通过普通的 Docker v2 端点访问 Red Hat Quay registry;它们被定义为 UI 上的 令牌,因为密码本身是加密的。

机器人帐户令牌是设计用于自动化和持续集成工作流的持久令牌。默认情况下,Red Hat Quay 的机器人帐户令牌不会过期,不需要用户交互,这使得机器人帐户成为非互动用例的理想选择。

机器人帐户令牌在创建机器人时自动生成,且特定于非用户;也就是说,它们连接到创建它们的用户和机构命名空间。例如,一个机器名为 project_tools+<robot_name> 的机器人project_tools 命名空间关联。

机器人帐户令牌提供访问权限,而无需用户个人凭据。配置机器人帐户的方式(例如,READWRITEADMIN 权限之一)最终定义机器人帐户可以执行的操作。

由于机器人帐户令牌具有持久性且不默认过期,因此它们非常适合自动工作流,要求在不进行手动续订的情况下对 Red Hat Quay 进行一致访问。尽管如此,但可以通过 UI 轻松生成机器人帐户令牌。也可以通过 CLI 使用正确的 API 端点来重新生成它们。为增强 Red Hat Quay 部署的安全性,管理员应定期刷新机器人帐户令牌。另外,有了 带有机器人帐户功能的无密钥身份验证,可以为外部 OIDC 令牌交换机器人令牌,并利用它们,以便它们仅有一小时,从而增强 registry 的安全性。

当命名空间被删除时,或者删除机器人帐户时,会在收集器调度运行时收集它们。

以下部分介绍了如何使用 API 为机构机器人和用户机器人生成机器人令牌。

3.1. 使用 Red Hat Quay UI 重新生成机器人令牌

使用以下步骤使用 Red Hat Quay UI 重新生成机器人令牌。

先决条件

  • 已登陆到 Red Hat Quay。

流程

  1. 点机构的名称。
  2. 在导航窗格中,单击 Robot accounts
  3. 单击机器人帐户的名称,例如 testorg3+test
  4. 在弹出窗口中点 Regenerate token

3.2. 使用 Red Hat Quay API 重新生成机器人令牌

使用以下步骤使用 Red Hat Quay API 重新生成机器人帐户令牌。

先决条件

  • 您已创建了 OAuth 访问令牌
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  • 输入以下命令,使用 POST /api/v1/organization/{orgname}/robots/{robot_shortname}/regenerate 端点为机构重新生成机器人令牌:

    $ curl -X POST \
      -H "Authorization: Bearer <bearer_token>" \
      "<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate"

    输出示例

    {"name": "test-org+test", "created": "Fri, 10 May 2024 17:46:02 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}

  • 输入以下命令,使用 POST /api/v1/user/robots/{robot_shortname}/regenerate 端点为当前用户重新生成机器人令牌:

    $ curl -X POST \
      -H "Authorization: Bearer <bearer_token>" \
      "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate"

    输出示例

    {"name": "quayadmin+test", "created": "Fri, 10 May 2024 14:12:11 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}

第 4 章 OCI 引用器 OAuth 访问令牌

在某些情况下,根据 Red Hat Quay 部署配置为使用的功能,您可能需要利用 OCI 引用器 OAuth 访问令牌。OCI 引用 OAuth 访问令牌用于列出存储库下清单的 OCI 引用器,并使用 curl 命令向 Red Hat Quay v2/auth 端点发出 GET 请求。

这些令牌通过基本的 HTTP 身份验证获取,其中用户提供了以 Base64 编码的用户名和密码,以便直接使用 v2/auth API 端点进行身份验证。因此,它们基于用户的凭证,它们不会遵循与 OAuth 2 相同的详细的授权流,但仍然允许用户授权 API 请求。

OCI 引用器 OAuth 访问令牌 不提供基于范围的权限,也不会过期。它们只用于列出仓库下清单的 OCI 引用器。

其他资源

4.1. 创建 OCI 引用器 OAuth 访问令牌

此 OCI 引用 OAuth 访问令牌用于列出存储库下清单的 OCI 引用器。

流程

  1. 更新 config.yaml 文件,使其包含 FEATURE_REFERRERS_API: true 字段。例如:

    # ...
    FEATURE_REFERRERS_API: true
    # ...
  2. 输入以下命令对凭证进行 Base64 编码:

    $ echo -n '<username>:<password>' | base64

    输出示例

    abcdeWFkbWluOjE5ODlraWROZXQxIQ==

  3. 输入以下命令使用 base64 编码字符串,并将 URL 端点改为 Red Hat Quay 服务器:

    $ curl --location '<quay-server.example.com>/v2/auth?service=<quay-server.example.com>&scope=repository:quay/listocireferrs:pull,push' --header 'Authorization: Basic <base64_username:password_encode_token>' -k | jq

    输出示例

    {
      "token": "<example_secret>
    }

第 5 章 启用并使用 Red Hat Quay API

通过使用 Red Hat Quay API,您可以简化容器 registry 管理,自动执行任务,并将 Red Hat Quay 的功能整合到现有工作流中。这可以提高效率,提供更高的灵活性(通过存储库管理、用户管理、用户权限、镜像管理等),提高您的组织的稳定性、存储库或整体部署等。

以下章节解释了如何启用和使用 Red Hat Quay API。

5.1. 配置 Red Hat Quay 以接受 API 调用

在使用 Red Hat Quay API 之前,您必须在 config.yaml 文件中禁用 BROWSER_API_CALLS_XHR_ONLY。如果从 浏览器调用,您可以避免使用 X-Requested-With 标头调用 API 调用 的错误。

流程

  1. 在 Red Hat Quay config.yaml 文件中,将 BROWSER_API_CALLS_XHR_ONLY 设置为 false。例如:

    # ...
    BROWSER_API_CALLS_XHR_ONLY: false
    # ...
  2. 重启 Red Hat Quay 部署。

5.2. 使用 Red Hat Quay API

创建应用程序并使用所需设置生成 OAuth 2 访问令牌后,您可以通过使用 CLI 的 API 将访问令牌传递给 GETPUTPOSTDELETE 设置。通常,Red Hat Quay API 命令类似以下示例:

$ curl -X GET -H "Authorization: Bearer <your_access_token>" 1
    https://<quay-server.example.com>/api/v1/<example>/<endpoint>/ 2
1
通过 Red Hat Quay UI 生成的 OAuth 2 访问令牌。
2
Red Hat Quay 部署和所需的 API 端点的 URL。

所有 Red Hat Quay API 均记录在 应用程序编程接口(API) 章节中。了解它们的记录方式对于成功调用至关重要。例如,为 createAppToken API 端点使用以下条目:

*createAppToken* 1
Create a new app specific token for user. 2

*POST /api/v1/user/apptoken* 3

**Authorizations: **oauth2_implicit (**user:admin**) 4

 Request body schema (application/json)

*Path parameters* 5

Name: **title**
Description: Friendly name to help identify the token.
Schema: string

*Responses* 6

|HTTP Code|Description             |Schema
|201      |Successful creation     |
|400      |Bad Request             |&lt;&lt;_apierror,ApiError&gt;&gt;
|401      |Session required        |&lt;&lt;_apierror,ApiError&gt;&gt;
|403      |Unauthorized access     |&lt;&lt;_apierror,ApiError&gt;&gt;
|404      |Not found               |&lt;&lt;_apierror,ApiError&gt;&gt;
|===
1
API 端点的名称。
2
API 端点的简短描述。
3
用于调用的 API 端点。
4
使用 API 端点所需的授权。
5
用于 API 端点的可用路径。在本例中,title 是与 POST /api/v1/user/apptoken 端点一起使用的唯一路径。
6
此端点的 API 响应。

要使用 API 端点,您可以传递访问令牌,然后根据您的需要包含适当的字段。以下流程演示了如何使用 POST /api/v1/user/apptoken 端点。

先决条件

  • 您可以访问 Red Hat Quay API,它要求已创建了 OAuth 2 访问令牌。
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  • 输入 POST /api/v1/user/apptoken API 调用来创建用户应用程序:

    $ curl -X POST \
      -H "Authorization: Bearer <access_token>" 1
      -H "Content-Type: application/json" \
      -d '{
        "title": "MyAppToken" 2
      }' \
      "http://quay-server.example.com/api/v1/user/apptoken" 3
    1
    Oauth 访问令牌。
    2
    应用程序令牌的名称。
    3
    Red Hat Quay 部署的 URL 附加到 /api/v1/user/apptoken 端点。

    输出示例

    {"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "K2YQB1YO0ABYV5OBUYOMF9MCUABN12Y608Q9RHFXBI8K7IE8TYCI4WEEXSVH1AXWKZCKGUVA57PSA8N48PWED9F27PXATFUVUD9QDNCE9GOT9Q8ACYPIN0HL"}}

验证

  • 在 Red Hat Quay UI 中,在导航窗格 → Account Settings 中点您的用户名。应用的名称显示在 Docker CLI 和其他应用程序 Tokens 标题下。例如:

    应用程序令牌

5.3. 使用 API 自动化 Red Hat Quay 进程

使用 API 时,有权访问 API 的 Red Hat Quay 管理员和用户可以自动执行重复性任务,如存储库管理或镜像修剪。以下示例演示了如何使用 Python 脚本和 cron 作业来自动执行镜像修剪。

先决条件

  • 您可以访问 Red Hat Quay API,它要求已创建了 OAuth 2 访问令牌。
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false
  • 已使用以下内容安装了 Python 请求 库。
  • 您已在机器上启用了 cron 作业。

流程

  1. 创建执行 API 命令的 Python 脚本。以下示例使用 DELETE /api/v1/repository/{repository}/tag/{tag} API 端点来修剪镜像。

    example.py 文件

    import requests 1
    
    # Hard-coded values
    API_BASE_URL = "http://<quay-server.example.com>/api/v1" 2
    ACCESS_TOKEN = "<access_token>" 3
    NAMESPACE = "<namespace_name>" 4
    REPO_NAME = "<repository_name>" 5
    TAG = "<tag_name>" 6
    
    def delete_image_tag():
        # Construct the full API URL for deleting the tag
        url = f"{API_BASE_URL}/repository/{NAMESPACE}/{REPO_NAME}/tag/{TAG}"
        headers = {
            "Authorization": f"Bearer {ACCESS_TOKEN}",
            "Content-Type": "application/json"
        }
    
        # Send the DELETE request to the API
        response = requests.delete(url, headers=headers)
    
        # Check the response and print appropriate messages
        if response.status_code == 200:
            print("Tag deleted successfully")
        else:
            print("Failed to delete tag:", response.json())
    
    # Execute the function
    delete_image_tag()

    1
    在 Python 代码中包括 导入 库。
    2
    附加了 /api/v1 的 registry 的 URL。
    3
    您的 OAuth 2 访问令牌。
    4
    包含镜像标签的命名空间。
    5
    包含镜像标签的存储库。
    6
    镜像的标签名称。
  2. 将脚本保存为 prune_images.py
  3. 创建自动运行脚本的 cron 作业:

    1. 运行以下命令打开 crontab 编辑器:

      $ crontab -e
    2. 在编辑器中,添加用于运行脚本的 cron 作业。以下示例每分钟运行脚本:

      * * * * * sudo python /path/to/prune_images.py >> /var/log/prune_images.log 2>&1

第 6 章 Red Hat Quay API 示例

本章的其余部分提供了 Red Hat Quay API 示例。

6.1. 使用 API 管理用户应用程序

Red Hat Quay 用户可以创建、列出关于和删除用户应用程序的信息,该应用程序 可用作 Docker、Podman 或其他服务供应商密码的替代选择。用户应用令牌像您的用户名和密码一样工作,但已加密,不向正在访问 Red Hat Quay 的第三方提供任何信息。

注意

通过 CLI 创建后,用户应用程序令牌会在 Red Hat Quay UI 的 User Settings 下列出。请注意,这与在用户设置下创建的应用程序令牌不同,并应完全被视为不同的应用程序。

使用以下步骤创建用户应用程序令牌。

先决条件

  • 您已创建了 OAuth 2 访问令牌。

流程

  • 输入 POST /api/v1/user/apptoken API 调用来创建用户应用程序:

    $ 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"

    输出示例

    {"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "K2YQB1YO0ABYV5OBUYOMF9MCUABN12Y608Q9RHFXBI8K7IE8TYCI4WEEXSVH1AXWKZCKGUVA57PSA8N48PWED9F27PXATFUVUD9QDNCE9GOT9Q8ACYPIN0HL"}}

  • 您可以使用 GET /api/v1/user/apptoken 命令获取有关应用程序的信息,包括应用程序何时过期。例如:

    $ curl -X GET \
      -H "Authorization: Bearer <access_token>" \
      "http://quay-server.example.com/api/v1/user/apptoken"
    {"tokens": [{"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null}], "only_expiring": null}
  • 您可以通过输入 GET /api/v1/user/apptoken/{token_uuid} 命令获取有关特定用户应用程序的信息:

    $ curl -X GET \
      -H "Authorization: Bearer <access_token>" \
      "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"

    输出示例

    {"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "K2YQB1YO0ABYV5OBUYOMF9MCUABN12Y608Q9RHFXBI8K7IE8TYCI4WEEXSVH1AXWKZCKGUVA57PSA8N48PWED9F27PXATFUVUD9QDNCE9GOT9Q8ACYPIN0HL"}}

  • 您可以使用 DELETE /api/v1/user/apptoken/{token_uuid} 端点删除或撤销用户应用程序令牌:

    $ curl -X DELETE \
      -H "Authorization: Bearer <access_token>" \
      "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"

    此命令不会在 CLI 中返回输出。您可以通过输入上述其中一个命令来返回令牌列表。

6.2. 发现 Red Hat Quay API 端点

Red Hat Quay API 端点可以使用 API 发现。

使用以下步骤发现可用的 API 端点。

先决条件

  • 您已创建了 OAuth 2 访问令牌。

流程

  • 输入以下 GET /api/v1/discovery 命令,以 swagger API 格式列出所有可用的 API 端点:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/discovery?query=true" \
        -H "Authorization: Bearer <access_token>"

    输出示例

    ---
    : "Manage the tags of a repository."}, {"name": "team", "description": "Create, list and manage an organization's teams."}, {"name": "trigger", "description": "Create, list and manage build triggers."}, {"name": "user", "description": "Manage the current user."}, {"name": "userfiles", "description": ""}]}
    ---

6.3. 获取 Red Hat Quay API 错误详情

使用 API 可发现 Red Hat Quay API 错误详情。

使用以下步骤发现错误详情。

先决条件

  • 您已创建了 OAuth 2 访问令牌。

流程

  • 您可以通过输入 GET /api/v1/error/{error_type} 端点来获取 API 的错误详情。请注意,您必须包含以下错误代码之一:

    HTTP 代码描述模式

    200

    成功调用

    ApiErrorDescription

    400

    错误请求

    ApiError

    401

    需要会话

    ApiError

    403

    未授权访问

    ApiError

    404

    未找到

    ApiError

    $ curl -X GET "https://<quay-server.example.com>/api/v1/error/<error_type>" \
        -H "Authorization: Bearer <access_token>"

    输出示例

    curl: (7) Failed to connect to quay-server.example.com port 443 after 0 ms: Couldn't connect to server

6.4. 全局消息

可以使用 Red Hat Quay API 创建、获取或删除全局消息。使用以下步骤创建、获取或删除全局消息。

先决条件

  • 您已创建了 OAuth 2 访问令牌。

流程

  1. 使用 POST /api/v1/message 端点创建消息:

    $ 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"
            }
        }'

    此命令不返回输出。

  2. 使用 GET /api/v1/messages 命令返回全局消息列表:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/messages" \
        -H "Authorization: Bearer <access_token>"

    输出示例

    {"messages": [{"uuid": "ecababd4-3451-4458-b5db-801684137444", "content": "Hi", "severity": "info", "media_type": "text/plain"}]}

  3. 使用 DELETE /api/v1/message/{uuid} 端点删除全局消息:

    $ curl -X DELETE "https://<quay-server.example.com>/api/v1/message/<uuid>" \
        -H "Authorization: Bearer <access_token>"

    此命令不返回输出。

6.5. 使用 API 查看使用日志

可以使用 API 查看机构或存储库的日志。它们也可以聚合(分组),或者列出包含更详细的信息。也可以由用户、特定日期范围或页面查看日志。

6.5.1. 查看聚合的日志

聚合的日志可由机构、存储库、特定用户或当前用户查看。您还可以传递可选命令,如 execute erstarttime/endtimenext_page 来过滤结果。

先决条件

  • 您已创建了 OAuth 访问令牌
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  1. 使用 GET /api/v1/user/aggregatelogs API 端点为当前用户返回聚合(或分组)日志:

    $ curl -X GET \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Accept: application/json" \
      "https://<quay-server.example.com>/api/v1/user/aggregatelogs"

    输出示例

    {"aggregated": [{"kind": "create_tag", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "manifest_label_add", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "push_repo", "count": 2, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "revert_tag", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}]}

    您还可以传递执行者和 starttime/endtime 查询,以便在特定时间段内获取特定用户的聚合日志。例如:

    $ 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>"
  2. 机构也可以使用 GET /api/v1/organization/{orgname}/aggregatelogs 来查看聚合的日志。例如:

    $ curl -X GET \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Accept: application/json" \
      "<quay-server.example.com>/api/v1/organization/{orgname}/aggregatelogs"
  3. 存储库也可以使用 GET /api/v1/repository/{repository}/aggregatelogs 命令查看聚合的日志。以下示例包括 starttime/endtime 字段:

    $ 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""

6.5.2. 查看详细日志

详细日志可由机构、存储库、特定用户或当前用户查看。您还可以传递可选字段,如 executeer、starttime/endtimenext_page 来过滤结果。

流程

  1. 使用 GET /api/v1/user/logs API 端点返回用户的日志条目列表。例如:

    $ curl -X GET   -H "Authorization: Bearer <bearer_token>"   -H "Accept: application/json"   "<quay-server.example.com>/api/v1/user/logs"

    您还可以传递执行者和 startime/endtime 查询,以便在特定时间段内获取特定用户的日志。例如:

    $ curl -X GET   -H "Authorization: Bearer <bearer_token>"   -H "Accept: application/json"   "http://quay-server.example.com/api/v1/user/logs?performer=quayuser&starttime=01/01/2024&endtime=06/18/2024"

    输出示例

    ---
    {"start_time": "Mon, 01 Jan 2024 00:00:00 -0000", "end_time": "Wed, 19 Jun 2024 00:00:00 -0000", "logs": [{"kind": "revert_tag", "metadata": {"username": "quayuser", "repo": "busybox", "tag": "test-two", "manifest_digest": "sha256:57583a1b9c0a7509d3417387b4f43acf80d08cdcf5266ac87987be3f8f919d5d"}, "ip": "192.168.1.131", "datetime": "Tue, 18 Jun 2024 18:59:13 -0000", "performer": {"kind": "user", "name": "quayuser", "is_robot": false, "avatar": {"name": "quayuser", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}}}, {"kind": "push_repo", "metadata": {"repo": "busybox", "namespace": "quayuser", "user-agent": "containers/5.30.1 (github.com/containers/image)", "tag": "test-two", "username": "quayuser", }
    ---

  2. 使用 GET /api/v1/organization/{orgname}/logs 端点返回指定机构的日志:

    $ curl -X GET \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Accept: application/json" \
      "http://<quay-server.example.com>/api/v1/organization/{orgname}/logs"
  3. 使用 GET /api/v1/repository/{repository}/logs 端点返回指定存储库的日志:

    $ curl -X GET \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Accept: application/json" \
      "http://<quay-server.example.com>/api/v1/repository/{repository}/logs"

6.6. 使用 API 导出日志

详细日志可以导出到回调 URL 或电子邮件地址。

先决条件

  • 您已创建了 OAuth 访问令牌
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  1. 使用 POST /api/v1/user/exportlogs 端点为当前用户导出日志:

    $ 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"

    输出示例

    {"export_id": "6a0b9ea9-444c-4a19-9db8-113201c38cd4"}

  2. 使用 POST /api/v1/organization/{orgname}/exportlogs 端点导出机构的日志:

    $ 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"
  3. 使用 POST /api/v1/repository/{repository}/exportlogs 端点导出存储库的日志:

    $ 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"

6.7. 使用 API 添加和删除标签

Red Hat Quay 管理员可以按照以下流程通过 API 为标签添加和管理标签。

先决条件

  • 您已创建了 OAuth 访问令牌
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  1. 使用 GET /api/v1/repository/{repository}/manifest/{manifestref} 命令检索存储库中特定清单的详细信息:

    $ curl -X GET \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Accept: application/json" \
      https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>
  2. 使用 GET /api/v1/repository/{repository}/manifest/{manifestref}/labels 命令检索特定清单的标签列表:

    $ curl -X GET \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Accept: application/json" \
      https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels

    输出示例

    {"labels": [{"id": "e9f717d2-c1dd-4626-802d-733a029d17ad", "key": "org.opencontainers.image.url", "value": "https://github.com/docker-library/busybox", "source_type": "manifest", "media_type": "text/plain"}, {"id": "2d34ec64-4051-43ad-ae06-d5f81003576a", "key": "org.opencontainers.image.version", "value": "1.36.1-glibc", "source_type": "manifest", "media_type": "text/plain"}]}

  3. 使用 GET /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid} 命令获取有关特定清单的信息:

    $ 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>

    输出示例

    {"id": "e9f717d2-c1dd-4626-802d-733a029d17ad", "key": "org.opencontainers.image.url", "value": "https://github.com/docker-library/busybox", "source_type": "manifest", "media_type": "text/plain"}

  4. 您可以使用 POST /api/v1/repository/{repository}/manifest/{manifestref}/labels 命令在给定存储库中向清单添加额外标签。例如:

    $ 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

    输出示例

    {"label": {"id": "346593fd-18c8-49db-854f-4cb1fb76ff9c", "key": "example-key", "value": "example-value", "source_type": "api", "media_type": "text/plain"}}

  5. 您可以使用 DELETE /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid} 命令删除标签:

    $ curl -X DELETE \
      -H "Authorization: Bearer <bearer_token>" \
      https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<labelid>

    此命令不会在 CLI 中返回输出。您可以使用以上其中一个命令来确保它已被成功删除。

6.8. 使用 API 镜像存储库

Red Hat Quay 管理员可以使用 API 镜像外部存储库。

先决条件

  • 您已在 config.yaml 文件中设置了 FEATURE_REPO_MIRROR: true

流程

  • 使用 POST /api/v1/repository/{repository}/mirror 端点创建新存储库镜像配置:

    $ 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>",
            "root_rule": {
                "rule": "<rule>",
                "rule_type": "<rule_type>"
            }
        }'
  • 您可以使用 GET /api/v1/repository/{repository}/mirror 端点返回有关镜像配置的信息:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror" \
         -H "Authorization: Bearer <access_token>"

    输出示例

    {"is_enabled": true, "mirror_type": "PULL", "external_reference": "https://quay.io/repository/argoproj/argocd", "external_registry_username": null, "external_registry_config": {}, "sync_interval": 86400, "sync_start_date": "2025-01-15T12:00:00Z", "sync_expiration_date": null, "sync_retries_remaining": 3, "sync_status": "NEVER_RUN", "root_rule": {"rule_kind": "tag_glob_csv", "rule_value": ["*.latest*"]}, "robot_username": "quayadmin+mirror_robot"}

  • 您可以使用 POST /api/v1/repository/{repository}/mirror/sync-now 端点来同步存储库。例如:

    $ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-now" \
         -H "Authorization: Bearer <access_token>"

    此命令不会在 CLI 中返回输出。

  • 另外,您可以使用 POST /api/v1/repository/{repository}/mirror/sync-cancel endpoint.For 示例取消同步:

    $ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-cancel" \

    此命令不会在 CLI 中返回输出。

  • 在创建镜像配置后,您可以使用 PUT /api/v1/repository/{repository}/mirror 命令进行更改。例如,您可以选择禁用自动同步:

    $ 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>, 1
            "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>",
            "root_rule": {
                "rule": "<rule>",
                "rule_type": "<rule_type>"
            }
        }'
    1
    禁用自动同步。

6.9. 使用 Red Hat Quay API 建立配额

您可以为机构或用户建立配额,并定制配额策略以满足您的 registry 的需求。

以下小节演示了如何为机构、用户以及修改这些设置建立配额。

6.9.1. 使用 Red Hat Quay API 管理机构配额

首次创建机构时,它没有建立的配额。您可以使用 API 检查、创建、更改或删除机构的配额限制。

先决条件

  • 您已生成了 OAuth 访问令牌。

流程

  1. 要为机构设置配额,您可以使用 POST /api/v1/organization/{orgname}/quota 端点:

    $ 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"
         }'

    输出示例

    "Created"

  2. 使用 GET /api/v1/organization/{orgname}/quota 命令返回有关策略的信息,包括其他机构配额端点所需的 ID 号。例如:

    $ curl -k -X GET -H "Authorization: Bearer <token>" -H 'Content-Type: application/json'  https://example-registry-quay-quay-enterprise.apps.docs.gcp.quaydev.org/api/v1/organization/testorg/quota  | jq

    输出示例

    [{"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}]

    获取 ID 号后,您可以使用 GET /api/v1/organization/{orgname}/quota/{quota_id} 命令列出配额策略。例如:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \
         -H "Authorization: Bearer <access_token>"

    输出示例

    {"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}

  3. 您可以使用 PUT /api/v1/organization/{orgname}/quota/{quota_id} 命令修改现有的配额限制。请注意,这需要策略 ID。例如:

    $ 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>
         }'

    输出示例

    {"id": 1, "limit_bytes": 21474836480, "limit": "20.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}

  4. 可以通过 DELETE /api/v1/organization/{orgname}/quota/{quota_id} 命令删除机构的配额。例如:

    $ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \
         -H "Authorization: Bearer <access_token>"

    此命令不返回输出。

6.9.2. 使用 Red Hat Quay API 为机构设置配额限制

您可以为机构设置特定的配额限制,以便在超过、返回警告时,或者推送的镜像会被完全拒绝。

流程

  1. 使用 POST /api/v1/organization/{orgname}/quota/{quota_id}/limit 命令创建配额策略,以便在超过分配的配额时拒绝镜像。例如:

    $ 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", 1
               "threshold_percent": 90 2
             }'
    1
    拒绝或警告 之一
    2
    配额阈值,以百分比表示。

    输出示例

    "Created"

  2. 使用 GET /api/v1/organization/{orgname}/quota/{quota_id}/limit 获取配额限制的 ID。例如:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit" \
         -H "Authorization: Bearer <access_token>"

    输出示例

    [{"id": 2, "type": "Reject", "limit_percent": 90}]

  1. 使用 PUT /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id} 端点更新策略。例如:

    $ 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>
             }'

    输出示例

    {"id": 3, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 2, "type": "Warning", "limit_percent": 80}], "default_config_exists": false}

  2. 您可以使用 DELETE /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id} 端点删除配额限制:

    $ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \
         -H "Authorization: Bearer <access_token>"

    此命令不返回输出。

6.9.3. 使用 Red Hat Quay API 为用户获取配额限制

您可以为用户指定配额和限制,以便在超过时返回警告,或者推送的镜像被完全拒绝。必须在 Red Hat Quay UI 上设置用户的配额限制。以下 API 可用于查看登录的用户的配额限值。

流程

  1. 使用 GET /api/v1/user/quota 命令返回有关配额限制的信息:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    [{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}]

  2. 收到配额 ID 后,您可以使用 GET /api/v1/user/quota/{quota_id} 端点传递该端点,以返回有关限制的信息:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}

  3. 可以使用 GET /api/v1/user/quota/{quota_id}/limit 端点来查看这些限制。例如:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    [{"id": 3, "type": "Reject", "limit_percent": 100}]

  4. 可以使用 GET /api/v1/user/quota/{quota_id}/limit/{limit_id} 端点来返回有关整个策略的附加信息:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit/{limit_id}" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [{"id": 3, "type": "Reject", "limit_percent": 100}], "default_config_exists": false}

6.10. 使用 Red Hat Quay API 建立配额

组织可以通过 API 端点创建和管理。使用 Red Hat Quay API,您可以创建机构、查看机构信息、为机构创建代理缓存,编辑具有机构访问权限的用户、更改机构详情、删除机构等。

6.10.1. 使用 Red Hat Quay API 创建机构

使用以下步骤使用 Red Hat Quay API 创建新机构。

先决条件

  • 您已创建了 OAuth 访问令牌
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  1. 输入以下命令使用 POST /api/v1/organization/ 端点创建新机构:

    $ 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/"

    输出示例

    "Created"
  2. 创建后,可以更改机构详情,如添加电子邮件地址,带有 PUT /api/v1/organization/{orgname} 命令。例如:

    $ curl -X PUT "https://<quay-server.example.com>/api/v1/organization/<orgname>" \
      -H "Authorization: Bearer <access_token>" \
      -H "Content-Type: application/json" \
      -d '{
            "email": "<org_email>",
            "invoice_email": <true/false>,
            "invoice_email_address": "<billing_email>"
          }'

    输出示例

    {"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "user"}, "is_admin": true, "is_member": true, "teams": {"owners": {"name": "owners", "description": "", "role": "admin", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}, "can_view": true, "repo_count": 0, "member_count": 1, "is_synced": false}}, "ordered_teams": ["owners"], "invoice_email": true, "invoice_email_address": "billing@test-org.com", "tag_expiration_s": 1209600, "is_free_account": true, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}

6.10.2. 使用 Red Hat Quay API 删除机构

使用以下步骤使用 Red Hat Quay API 删除机构。

先决条件

  • 您已创建了 OAuth 访问令牌
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  1. 输入以下命令使用 DELETE /api/v1/organization/{orgname} 端点删除机构:

    $ curl -X DELETE \
      -H "Authorization: Bearer <bearer_token>" \
      "https://<quay-server.example.com>/api/v1/organization/<organization_name>"
  2. 从 CLI 删除机构时,CLI 不会返回信息。要确认删除操作,您可以检查 Red Hat Quay UI,或者您可以输入 GET /api/v1/organization/{orgname} 命令来查看是否返回已删除机构的详情:

    $ curl -X GET \
      -H "Authorization: Bearer <bearer_token>" \
      "<quay-server.example.com>/api/v1/organization/<organization_name>"

    输出示例

    {"detail": "Not Found", "error_message": "Not Found", "error_type": "not_found", "title": "not_found", "type": "http://<quay-server.example.com>/api/v1/error/not_found", "status": 404}

6.10.3. 使用 API 检索机构成员信息

有关机构成员的信息可以通过 Red Hat Quay API 检索。

流程

  1. 使用 GET /api/v1/organization/{orgname}/members 返回机构成员列表:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"members": [{"name": "quayadmin", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": ["testrepo"]}, {"name": "testuser", "kind": "user", "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": []}]}

  2. 您可以使用 GET /api/v1/organization/{orgname}/collaborators 返回机构 collaborators 列表:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/collaborators" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"collaborators": [user-test]}

  3. 使用 GET /api/v1/organization/{orgname}/members/{membername} 端点来获取有关用户更具体的信息:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"name": "quayadmin", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": ["testrepo"]}

  4. 使用 DELETE /api/v1/organization/{orgname}/members/{membername} 端点删除团队成员。

    $ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \
      -H "Authorization: Bearer <access_token>"

    此命令不返回输出。

6.10.4. 使用 Red Hat Quay API 创建机构应用程序

可以使用 Red Hat Quay UI 创建机构应用程序。

注意

可以使用 UI 创建机构应用,但必须在 UI 上创建 OAuth 2 访问令牌。

流程

  1. 使用 POST /api/v1/organization/{orgname}/applications 端点为您的机构创建新应用。例如:

    $ 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>"
          }'

    输出示例

    {"name": "new-application", "description": "", "application_uri": "", "client_id": "E6GJSHOZMFBVNHTHNB53", "client_secret": "SANSWCWSGLVAUQ60L4Q4CEO3C1QAYGEXZK2VKJNI", "redirect_uri": "", "avatar_email": null}

  2. 使用 GET /api/v1/organization/{orgname}/applications 端点返回所有机构应用程序的列表。例如:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"applications": [{"name": "test", "description": "", "application_uri": "", "client_id": "MCJ61D8KQBFS2DXM56S2", "client_secret": "J5G7CCX5QCA8Q5XZLWGI7USJPSM4M5MQHJED46CF", "redirect_uri": "", "avatar_email": null}, {"name": "new-token", "description": "", "application_uri": "", "client_id": "IG58PX2REEY9O08IZFZE", "client_secret": "2LWTWO89KH26P2CO4TWFM7PGCX4V4SUZES2CIZMR", "redirect_uri": "", "avatar_email": null}, {"name": "second-token", "description": "", "application_uri": "", "client_id": "6XBK7QY7ACSCN5XBM3GS", "client_secret": "AVKBOUXTFO3MXBBK5UJD5QCQRN2FWL3O0XPZZT78", "redirect_uri": "", "avatar_email": null}, {"name": "new-application", "description": "", "application_uri": "", "client_id": "E6GJSHOZMFBVNHTHNB53", "client_secret": "SANSWCWSGLVAUQ60L4Q4CEO3C1QAYGEXZK2VKJNI", "redirect_uri": "", "avatar_email": null}]}

    也可以使用 GET /api/v1/organization/{orgname}/applications/{client_id} 端点为特定客户端返回应用程序。例如:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications/<client_id>" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"name": "test", "description": "", "application_uri": "", "client_id": "MCJ61D8KQBFS2DXM56S2", "client_secret": "J5G7CCX5QCA8Q5XZLWGI7USJPSM4M5MQHJED46CF", "redirect_uri": "", "avatar_email": null}

  3. 创建后,可以使用 PUT /api/v1/organization/{orgname}/applications/{client_id} 端点更新机构应用程序,例如,添加重定向 URI 或新描述:

    $ curl -X PUT "https://quay-server.example.com/api/v1/organization/test/applications/12345" \
      -H "Authorization: Bearer wplKtAuAX6DzAJwtB3X77nc18RFj2TKE5gTEk5K2" \
      -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"
          }'
  4. 创建后,可以使用 GET /api/v1/app/{client_id} 端点返回应用程序信息:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/app/<client_id>" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"name": "new-application3", "description": "", "uri": "", "avatar": {"name": "new-application3", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "app"}, "organization": {"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "user"}, "is_admin": true, "is_member": true, "teams": {}, "ordered_teams": [], "invoice_email": true, "invoice_email_address": "billing@test-org.com", "tag_expiration_s": 1209600, "is_free_account": true, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}}

  5. 可以使用 DELETE /api/v1/organization/{orgname}/applications/{client_id} 端点删除机构应用程序。例如:

    $ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/applications/{client_id}" \
      -H "Authorization: Bearer <access_token>"

    此命令不返回输出。

6.10.5. 使用 Red Hat Quay API 为机构配置代理缓存

可以使用 Red Hat Quay API 配置机构的代理缓存。

流程

  1. 使用 POST /api/v1/organization/{orgname}/proxycache 端点为组织创建代理缓存配置。

    $ 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>"
          }'
  2. 使用 POST /api/v1/organization/{orgname}/validateproxycache 端点来验证代理配置:

    $ 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>"
          }'
  3. 使用 GET /api/v1/organization/{orgname}/proxycache 端点获取有关 proxcy 缓存的信息。例如:

    $ curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    {"upstream_registry": "quay.io", "expiration_s": 86400, "insecure": false}

  4. 使用 DELETE /api/v1/organization/{orgname}/proxycache 端点

    $ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \
      -H "Authorization: Bearer <access_token>"

    输出示例

    "Deleted"

6.10.6. 使用 API 管理团队成员和存储库权限

使用以下步骤将成员添加到团队(直接邀请或通过电子邮件),或者从团队中删除成员。

先决条件

  • 您已创建了 OAuth 访问令牌
  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false

流程

  • 输入 PUT /api/v1/organization/{orgname}/team/{teamname}/members/{membername} 命令,将成员添加到现有团队中:

    $ curl -X PUT \
      -H "Authorization: Bearer <your_access_token>" \
      "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"

    输出示例

    {"name": "testuser", "kind": "user", "is_robot": false, "avatar": {"name": "testuser", "hash": "d51d17303dc3271ac3266fb332d7df919bab882bbfc7199d2017a4daac8979f0", "color": "#5254a3", "kind": "user"}, "invited": false}

  • 输入 DELETE /api/v1/organization/{orgname}/team/{teamname}/members/{membername} 命令删除团队的成员:

    $ curl -X DELETE \
      -H "Authorization: Bearer <your_access_token>" \
      "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"

    此命令不会在 CLI 中输出。为确保成员已被删除,您可以输入 GET /api/v1/organization/{orgname}/team/{teamname}/members 命令,并确保输出中不会返回成员。

    $ curl -X GET \
      -H "Authorization: Bearer <your_access_token>" \
      "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members"

    输出示例

    {"name": "owners", "members": [{"name": "quayadmin", "kind": "user", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}, "invited": false}, {"name": "test-org+test", "kind": "user", "is_robot": true, "avatar": {"name": "test-org+test", "hash": "aa85264436fe9839e7160bf349100a9b71403a5e9ec684d5b5e9571f6c821370", "color": "#8c564b", "kind": "robot"}, "invited": false}], "can_edit": true}

  • 您可以输入 PUT /api/v1/organization/{orgname}/team/{teamname}/invite/{email} 命令以通过电子邮件地址向现有团队邀请用户:

    $ curl -X PUT \
      -H "Authorization: Bearer <your_access_token>" \
      "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"
  • 您可以输入 DELETE /api/v1/organization/{orgname}/team/{teamname}/invite/{email} 命令来删除电子邮件地址邀请来加入团队。例如:

    $ curl -X DELETE \
      -H "Authorization: Bearer <your_access_token>" \
      "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"

第 7 章 Red Hat Quay 应用程序编程接口(API)

此 API 允许您执行处理 Red Hat Quay 存储库、用户和机构所需的许多操作。

7.1. 授权

oauth2_implicit

范围

以下范围用于控制对 API 端点的访问:

影响范围描述

repo:read

此应用能够查看和拉取对授予用户或机器人帐户可见的所有存储库

repo:write

此应用能够查看、推送和拉取到授予用户或机器人帐户具有写入访问权限的所有存储库

repo:admin

此应用将具有授予用户或机器人帐户具有访问权限的所有存储库的管理员访问权限

repo:create

此应用能够在 中创建存储库到任何允许授予用户或机器人帐户创建存储库的命名空间

user:read

此应用程序将能够读取用户信息,如用户名和电子邮件地址。

org:admin

此应用程序将能够管理您的组织,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。在授予此权限前,您应该在请求的应用程序中具有绝对信任。

super:user

此应用程序将能够管理您的安装,包括管理用户、管理机构和其他在超级用户面板中的功能。在授予此权限前,您应该在请求的应用程序中具有绝对信任。

user:admin

此应用程序将能够管理您的帐户,包括创建机器人,并将它们授予您的存储库的权限。在授予此权限前,您应该在请求的应用程序中具有绝对信任。

7.2. appspecifictokens

管理当前用户的特定于应用的令牌。

7.2.1. createAppToken

为用户创建新应用特定令牌。

POST /api/v1/user/apptoken

授权: oauth2_implicit (user:admin)

请求正文模式(application/json)

新令牌的描述。

名称描述模式

标题
必需

有助于识别令牌的友好名称

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
 $ 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"

7.2.2. listAppTokens

列出用户的特定应用令牌。

GET /api/v1/user/apptoken

授权: oauth2_implicit (user:admin)

查询参数
类型Name描述模式

query

expiring
optional

如果为 true,则只返回这些令牌过期

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <access_token>" \
  "http://quay-server.example.com/api/v1/user/apptoken"

7.2.3. getAppToken

返回用户的特定应用令牌。

GET /api/v1/user/apptoken/{token_uuid}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

token_uuid
required

特定于应用程序的 uuid

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <access_token>" \
  "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"

7.2.4. revokeAppToken

为用户撤销特定的应用令牌。

DELETE /api/v1/user/apptoken/{token_uuid}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

token_uuid
required

特定于应用程序的 uuid

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE \
  -H "Authorization: Bearer <access_token>" \
  "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"

7.3. build

创建、列出、取消和获取存储库构建的 status/logs。

7.3.1. getRepoBuildStatus

返回由 build uuids 指定的构建的状态。

GET /api/v1/repository/{repository}/build/{build_uuid}/status

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

path

build_uuid
required

构建的 UUID

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.3.2. getRepoBuildLogs

返回由 build uuid 指定的构建的构建日志。

GET /api/v1/repository/{repository}/build/{build_uuid}/logs

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

path

build_uuid
required

构建的 UUID

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.3.3. getRepoBuild

返回有关构建的信息。

GET /api/v1/repository/{repository}/build/{build_uuid}

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

path

build_uuid
required

构建的 UUID

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.3.4. cancelRepoBuild

取消存储库构建。

DELETE /api/v1/repository/{repository}/build/{build_uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

path

build_uuid
required

构建的 UUID

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.3.5. requestRepoBuild

请求构建存储库并从指定的输入推送。

POST /api/v1/repository/{repository}/build/

授权: oauth2_implicit (存储库:写)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

新存储库构建的描述。

名称描述模式

file_id
optional

上传构建 spec 时生成的文件 ID

string

archive_url
optional

要构建的 .tar.gz 的 URL。必须以 "http" 或 "https" 开头。

string

子目录
可选

可在其中找到 Dockerfile 的子目录。您只能指定这个或 dockerfile_path

string

dockerfile_path
optional

到 dockerfile 的路径。您只能指定此或子目录。

string

上下文
可选

传递 dockerfile 的上下文。这是可选的。

string

pull_robot
optional

用作拉取凭证的 Quay 机器人帐户的用户名

string

标签
可选

构建的镜像要推送到的标签。如果没有指定,则使用 "latest"。

string 数组
非空 唯一

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.3.6. getRepoBuilds

获取存储库构建列表。

GET /api/v1/repository/{repository}/build/

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

查询参数
类型Name描述模式

query


可选

返回自给定的 unix 时间码后的所有构建

整数

query

限制
可选

要返回的最大构建数

整数

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.4. discovery

API 发现信息。

7.4.1. discovery

列出 swagger API 格式提供的所有 API 端点。

GET /api/v1/discovery

授权: 

查询参数
类型Name描述模式

query

内部
可选

是否包含内部 API。

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET "https://<quay-server.example.com>/api/v1/discovery?query=true" \
    -H "Authorization: Bearer <access_token>"

7.5. 错误

错误详情 API。

7.5.1. getErrorDescription

获取错误的详细描述。

GET /api/v1/error/{error_type}

授权: 

路径参数
类型Name描述模式

path

error_type
required

标识错误类型的错误代码。

字符串

响应
HTTP 代码描述模式

200

成功调用

ApiErrorDescription

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET "https://<quay-server.example.com>/api/v1/error/<error_type>" \
    -H "Authorization: Bearer <access_token>"

7.6. globalmessages

消息 API.

7.6.1. createGlobalMessage

创建消息。

POST /api/v1/messages

授权: oauth2_implicit (超级:user)

请求正文模式(application/json)

创建新消息

名称描述模式

message
必需

单个消息

对象

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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"
        }
    }'

7.6.2. getGlobalMessages

返回超级用户消息。

GET /api/v1/messages

授权: 

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET "https://<quay-server.example.com>/api/v1/messages" \
    -H "Authorization: Bearer <access_token>"

7.6.3. deleteGlobalMessage

删除消息。

DELETE /api/v1/message/{uuid}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

UUID
必需

 

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/message/<uuid>" \
    -H "Authorization: Bearer <access_token>"

7.7. logs

访问机构或存储库的使用情况日志。

7.7.1. getAggregateUserLogs

返回当前用户的聚合日志。

GET /api/v1/user/aggregatelogs

授权: oauth2_implicit (user:admin)

查询参数
类型Name描述模式

query

执行
可选

过滤日志的用户名。

字符串

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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.7.2. exportUserLogs

返回当前用户的聚合日志。

POST /api/v1/user/exportlogs

授权: oauth2_implicit (user:admin)

查询参数
类型Name描述模式

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

请求正文模式(application/json)

配置导出日志操作

名称描述模式

callback_url
optional

使用到导出日志的链接调用的回调 URL

字符串

callback_email
optional

通过电子邮件发送到导出日志的链接的电子邮件地址

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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.7.3. listUserLogs

列出当前用户的日志。

GET /api/v1/user/logs

授权: oauth2_implicit (user:admin)

查询参数
类型Name描述模式

query

next_page
optional

下一页面的页面令牌

字符串

query

执行
可选

过滤日志的用户名。

字符串

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET   -H "Authorization: Bearer <bearer_token>"   -H "Accept: application/json"   "<quay-server.example.com>/api/v1/user/logs"

7.7.4. getAggregateOrgLogs

获取指定机构的聚合日志。

GET /api/v1/organization/{orgname}/aggregatelogs

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

查询参数
类型Name描述模式

query

执行
可选

过滤日志的用户名。

字符串

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Accept: application/json" \
  "<quay-server.example.com>/api/v1/organization/{orgname}/aggregatelogs"

7.7.5. exportOrgLogs

导出指定机构的日志。

POST /api/v1/organization/{orgname}/exportlogs

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

查询参数
类型Name描述模式

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

请求正文模式(application/json)

配置导出日志操作

名称描述模式

callback_url
optional

使用到导出日志的链接调用的回调 URL

字符串

callback_email
optional

通过电子邮件发送到导出日志的链接的电子邮件地址

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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.7.6. listOrgLogs

列出指定机构的日志。

GET /api/v1/organization/{orgname}/logs

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

查询参数
类型Name描述模式

query

next_page
optional

下一页面的页面令牌

字符串

query

执行
可选

过滤日志的用户名。

字符串

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Accept: application/json" \
  "http://<quay-server.example.com>/api/v1/organization/{orgname}/logs"

7.7.7. getAggregateRepoLogs

返回指定存储库的聚合日志。

GET /api/v1/repository/{repository}/aggregatelogs

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

查询参数
类型Name描述模式

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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.7.8. exportRepoLogs

对指定存储库的日志导出排队。

POST /api/v1/repository/{repository}/exportlogs

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

查询参数
类型Name描述模式

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

请求正文模式(application/json)

配置导出日志操作

名称描述模式

callback_url
optional

使用到导出日志的链接调用的回调 URL

字符串

callback_email
optional

通过电子邮件发送到导出日志的链接的电子邮件地址

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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.7.9. listRepoLogs

列出指定存储库的日志。

GET /api/v1/repository/{repository}/logs

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

查询参数
类型Name描述模式

query

next_page
optional

下一页面的页面令牌

字符串

query

ENDTIME
可选

日志的最新时间。格式: UTC 为 "%m/%d/%Y"。

字符串

query

startTime
可选

日志的最早时间。格式: UTC 为 "%m/%d/%Y"。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Accept: application/json" \
  "http://<quay-server.example.com>/api/v1/repository/{repository}/logs"

7.8. 清单(Inventory)

管理存储库的清单。

7.8.1. getManifestLabel

使用清单下特定 ID 检索标签。

GET /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid}

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

manifestref
必需

清单摘要

string

path

labelid
required

标签的 ID

string

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>

7.8.2. deleteManifestLabel

从清单中删除现有标签。

DELETE /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid}

授权: oauth2_implicit (存储库:写)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

manifestref
必需

清单摘要

string

path

labelid
required

标签的 ID

string

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE \
  -H "Authorization: Bearer <bearer_token>" \
  https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<labelid>

7.8.3. addManifestLabel

将新标签添加到标签清单中。

POST /api/v1/repository/{repository}/manifest/{manifestref}/labels

授权: oauth2_implicit (存储库:写)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

manifestref
必需

清单摘要

string

请求正文模式(application/json)

为清单添加标签

名称描述模式

key
必需

标签的密钥

string

需要 的值

标签的值

string

media_type
required

此标签的介质类型

 
响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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

7.8.4. listManifestLabels

GET /api/v1/repository/{repository}/manifest/{manifestref}/labels

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

path

manifestref
必需

清单摘要

字符串

查询参数
类型Name描述模式

query

过滤
可选

如果指定,则仅返回与给定前缀匹配的标签

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Accept: application/json" \
  https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels

7.8.5. getRepoManifest

GET /api/v1/repository/{repository}/manifest/{manifestref}

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

manifestref
必需

清单摘要

string

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Accept: application/json" \
  https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>

7.9. mirror

7.9.1. syncCancel

为给定 Repository 的镜像配置更新 sync_status。

POST /api/v1/repository/{repository}/mirror/sync-cancel

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-cancel" \

7.9.2. syncNow

为给定 Repository 的镜像配置更新 sync_status。

POST /api/v1/repository/{repository}/mirror/sync-now

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-now" \
     -H "Authorization: Bearer <access_token>"

7.9.3. getRepoMirrorConfig

返回一个给定存储库的 Mirror 配置。

GET /api/v1/repository/{repository}/mirror

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

ViewMirrorConfig

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror" \
     -H "Authorization: Bearer <access_token>"

7.9.4. changeRepoMirrorConfig

允许用户修改存储库的镜像配置。

PUT /api/v1/repository/{repository}/mirror

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

更新存储库镜像配置。

名称描述模式

is_enabled
optional

用于启用或禁用同步。

布尔值

external_reference
optional

外部存储库的位置。

字符串

external_registry_username
optional

用于与外部 registry 进行身份验证的用户名。

 

external_registry_password
optional

用于与外部 registry 进行身份验证的密码。

 

sync_start_date
optional

决定此存储库下次准备同步的时间。

字符串

sync_interval
optional

next_start_date 开始同步后的秒数。

整数

robot_username
optional

用于镜像推送的机器人的用户名。

字符串

root_rule
optional

用于决定应同步哪些标签的 glob-patterns 列表。

对象

external_registry_config
optional

 

对象

响应
HTTP 代码描述模式

201

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>, 1
        "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>",
        "root_rule": {
            "rule": "<rule>",
            "rule_type": "<rule_type>"
        }
    }'
1
禁用自动同步。

7.9.5. createRepoMirrorConfig

为给定存储库创建一个 RepoMirrorConfig。

POST /api/v1/repository/{repository}/mirror

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

创建存储库镜像配置。

名称描述模式

is_enabled
optional

用于启用或禁用同步。

布尔值

external_reference
required

外部存储库的位置。

字符串

external_registry_username
optional

用于与外部 registry 进行身份验证的用户名。

 

external_registry_password
optional

用于与外部 registry 进行身份验证的密码。

 

sync_start_date
required

决定此存储库下次准备同步的时间。

字符串

sync_interval
required

next_start_date 开始同步后的秒数。

整数

robot_username
required

用于镜像推送的机器人的用户名。

字符串

root_rule
required

用于决定应同步哪些标签的 glob-patterns 列表。

对象

external_registry_config
optional

 

对象

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>",
        "root_rule": {
            "rule": "<rule>",
            "rule_type": "<rule_type>"
        }
    }'

7.10. namespacequota

7.10.1. listUserQuota

GET /api/v1/user/quota

授权: oauth2_implicit (user:admin)

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.2. getOrganizationQuotaLimit

GET /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}

授权: 

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

limit_id
required

 

字符串

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.3. changeOrganizationQuotaLimit

PUT /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

limit_id
required

 

字符串

path

需要OrgName

 

字符串

请求正文模式(application/json)

更改机构配额限制的描述

名称描述模式

type
可选

配额限制类型:"Warning"或"Reject"

字符串

threshold_percent
optional

配额阈值,以百分比为单位

整数

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.4. deleteOrganizationQuotaLimit

DELETE /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

limit_id
required

 

字符串

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.5. createOrganizationQuotaLimit

POST /api/v1/organization/{orgname}/quota/{quota_id}/limit

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

需要OrgName

 

字符串

请求正文模式(application/json)

新机构配额限制的描述

名称描述模式

type
必需

配额限制类型:"Warning"或"Reject"

string

threshold_percent
required

配额阈值,以百分比为单位

整数

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.6. listOrganizationQuotaLimit

GET /api/v1/organization/{orgname}/quota/{quota_id}/limit

授权: 

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.7. getUserQuotaLimit

GET /api/v1/user/quota/{quota_id}/limit/{limit_id}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

limit_id
required

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.8. listUserQuotaLimit

GET /api/v1/user/quota/{quota_id}/limit

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.9. getOrganizationQuota

GET /api/v1/organization/{orgname}/quota/{quota_id}

授权: 

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.10. changeOrganizationQuota

PUT /api/v1/organization/{orgname}/quota/{quota_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

需要OrgName

 

字符串

请求正文模式(application/json)

新机构配额的描述

名称描述模式

limit_bytes
optional

允许机构的字节数

整数

限制
可选

组织的人类可读存储容量。接受 SI 单位,如 Mi、Gi 或 Ti,以及非标准单位(如 GB 或 MB)。必须使用 limit_bytes 相互排斥。

string

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.11. deleteOrganizationQuota

DELETE /api/v1/organization/{orgname}/quota/{quota_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.12. createOrganizationQuota

创建新机构配额。

POST /api/v1/organization/{orgname}/quota

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

需要OrgName

 

字符串

请求正文模式(application/json)

新机构配额的描述

名称描述模式

limit_bytes
required

允许机构的字节数

整数

限制
可选

组织的人类可读存储容量。接受 SI 单位,如 Mi、Gi 或 Ti,以及非标准单位(如 GB 或 MB)。必须使用 limit_bytes 相互排斥。

string

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.13. listOrganizationQuota

GET /api/v1/organization/{orgname}/quota

授权: 

路径参数
类型Name描述模式

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.10.14. getUserQuota

GET /api/v1/user/quota/{quota_id}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

quota_id
required

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11. 机构

管理机构、成员和 OAuth 应用。

7.11.1. createOrganization

创建新机构。

POST /api/v1/organization/

授权: oauth2_implicit (user:admin)

请求正文模式(application/json)

新组织的描述。

名称描述模式

name
必需

机构用户名

字符串

email
可选

机构联系电子邮件

字符串

recaptcha_response
optional

(可以禁用)recaptcha 响应代码进行验证

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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/"

7.11.2. validateProxyCacheConfig

POST /api/v1/organization/{orgname}/validateproxycache

授权: 

路径参数
类型Name描述模式

path

需要OrgName

 

字符串

请求正文模式(application/json)

机构的代理缓存配置

名称描述模式

upstream_registry
必需

要缓存的上游 registry 的名称

字符串

响应
HTTP 代码描述模式

202

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.3. getOrganizationCollaborators

列出指定机构的外部协作者。

GET /api/v1/organization/{orgname}/collaborators

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.4. getOrganizationApplication

使用指定组织下的指定 client_id 检索应用。

GET /api/v1/organization/{orgname}/applications/{client_id}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

client_id
required

OAuth 客户端 ID

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.5. updateOrganizationApplication

更新此机构下的应用程序。

PUT /api/v1/organization/{orgname}/applications/{client_id}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

client_id
required

OAuth 客户端 ID

字符串

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

更新的应用程序的描述。

名称描述模式

name
必需

应用程序的名称

字符串

redirect_uri
required

应用程序的 OAuth 重定向的 URI

字符串

application_uri
required

应用程序主页的 URI

字符串

description
可选

应用程序的人类可读描述

字符串

avatar_email
optional

用于应用程序的 avatar 电子邮件地址

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.6. deleteOrganizationApplication

删除此机构下的应用程序。

DELETE /api/v1/organization/{orgname}/applications/{client_id}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

client_id
required

OAuth 客户端 ID

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.7. createOrganizationApplication

在此组织下创建新应用。

POST /api/v1/organization/{orgname}/applications

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

新组织应用的描述。

名称描述模式

name
必需

应用程序的名称

字符串

redirect_uri
optional

应用程序的 OAuth 重定向的 URI

字符串

application_uri
optional

应用程序主页的 URI

字符串

description
可选

应用程序的人类可读描述

字符串

avatar_email
optional

用于应用程序的 avatar 电子邮件地址

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.8. getOrganizationApplications

列出指定机构的应用程序。

GET /api/v1/organization/{orgname}/applications

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.9. getProxyCacheConfig

检索组织的代理缓存配置。

GET /api/v1/organization/{orgname}/proxycache

授权: 

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.10. deleteProxyCacheConfig

删除机构的代理缓存配置。

DELETE /api/v1/organization/{orgname}/proxycache

授权: 

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.11. createProxyCacheConfig

为机构创建代理缓存配置。

POST /api/v1/organization/{orgname}/proxycache

授权: 

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

机构的代理缓存配置

名称描述模式

upstream_registry
必需

要缓存的上游 registry 的名称

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.12. getOrganizationMember

检索组织成员的详细信息。

GET /api/v1/organization/{orgname}/members/{membername}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要 memberName

机构成员的用户名

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.13. removeOrganizationMember

从机构中删除成员,撤销其所有存储库的权限,并将其从机构中的所有团队中删除。

DELETE /api/v1/organization/{orgname}/members/{membername}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要 memberName

机构成员的用户名

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.14. getOrganizationMembers

列出指定机构的人员成员。

GET /api/v1/organization/{orgname}/members

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.15. getOrganization

获取指定机构的详细信息。

GET /api/v1/organization/{orgname}

授权: 

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>"

7.11.16. changeOrganizationDetails

更改指定机构的详情。

PUT /api/v1/organization/{orgname}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

现有机构的更新描述

名称描述模式

email
可选

机构联系电子邮件

字符串

invoice_email
optional

机构是否希望接收发票的电子邮件

布尔值

invoice_email_address
optional

要接收发票的电子邮件地址

 

tag_expiration_s
optional

标签过期的秒数

整数

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.11.17. deleteAdminedOrganization

删除指定的机构。

DELETE /api/v1/organization/{orgname}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>"

7.11.18. getApplicationInformation

获取指定应用程序的信息。

GET /api/v1/app/{client_id}

授权: 

路径参数
类型Name描述模式

path

client_id
required

OAuth 客户端 ID

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.12. 权限

管理存储库权限。

7.12.1. getUserTransitivePermission

获取指定用户的获取权限。

GET /api/v1/repository/{repository}/permissions/user/{username}/transitive

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 的用户名

权限应用到的用户的用户名

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.12.2. getUserPermissions

获取指定用户的权限。

GET /api/v1/repository/{repository}/permissions/user/{username}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 的用户名

权限应用到的用户的用户名

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.12.3. changeUserPermissions

更新现有仓库的 perimsions。

PUT /api/v1/repository/{repository}/permissions/user/{username}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 的用户名

权限应用到的用户的用户名

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

用户权限的描述。

名称描述模式

需要 角色

用户使用的角色

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>

7.12.4. deleteUserPermissions

删除用户权限。

DELETE /api/v1/repository/{repository}/permissions/user/{username}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 的用户名

权限应用到的用户的用户名

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>

7.12.5. getTeamPermissions

获取指定团队的权限。

GET /api/v1/repository/{repository}/permissions/team/{teamname}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

TeamName
必需

权限应用到的团队的名称

string

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.12.6. changeTeamPermissions

更新现有团队权限。

PUT /api/v1/repository/{repository}/permissions/team/{teamname}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

TeamName
必需

权限应用到的团队的名称

string

请求正文模式(application/json)

团队权限的描述。

名称描述模式

需要 角色

用于团队的角色

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.12.7. deleteTeamPermissions

删除指定团队的权限。

DELETE /api/v1/repository/{repository}/permissions/team/{teamname}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

TeamName
必需

权限应用到的团队的名称

string

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.12.8. listRepoTeamPermissions

列出所有团队权限。

GET /api/v1/repository/{repository}/permissions/team/

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.12.9. listRepoUserPermissions

列出所有用户权限。

GET /api/v1/repository/{repository}/permissions/user/

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>/

7.13. policy

7.13.1. createOrganizationAutoPrunePolicy

为机构创建一个自动修剪策略

POST /api/v1/organization/{orgname}/autoprunepolicy/

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

要应用到用户命名空间的策略配置

Name描述模式

所需 方法

用于修剪标签的方法(number_of_tags、create_date)

string

需要 的值

用于修剪方法的值(标签数量(如 10 个,时间 delta,如 7d (7 天))

 

tagPattern
optional

仅与此模式匹配的标签将被修剪

string

tagPatternMatches
optional

确定修剪的标签是否应该与 tagPattern 匹配

布尔值

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.2. listOrganizationAutoPrunePolicies

列出机构的自动修剪策略

GET /api/v1/organization/{orgname}/autoprunepolicy/

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.3. getOrganizationAutoPrunePolicy

获取机构的自动修剪策略

GET /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.4. deleteOrganizationAutoPrunePolicy

删除机构的自动修剪策略

DELETE /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.5. updateOrganizationAutoPrunePolicy

更新机构的自动修剪策略

PUT /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

字符串

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

要应用到用户命名空间的策略配置

Name描述模式

所需 方法

用于修剪标签的方法(number_of_tags、create_date)

string

需要 的值

用于修剪方法的值(标签数量(如 10 个,时间 delta,如 7d (7 天))

 

tagPattern
optional

仅与此模式匹配的标签将被修剪

string

tagPatternMatches
optional

确定修剪的标签是否应该与 tagPattern 匹配

布尔值

响应
HTTP 代码描述模式

204

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.6. createRepositoryAutoPrunePolicy

为存储库创建一个自动修剪策略

POST /api/v1/repository/{repository}/autoprunepolicy/

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

要应用到用户命名空间的策略配置

Name描述模式

所需 方法

用于修剪标签的方法(number_of_tags、create_date)

string

需要 的值

用于修剪方法的值(标签数量(如 10 个,时间 delta,如 7d (7 天))

 

tagPattern
optional

仅与此模式匹配的标签将被修剪

string

tagPatternMatches
optional

确定修剪的标签是否应该与 tagPattern 匹配

布尔值

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.7. listRepositoryAutoPrunePolicies

列出存储库的自动修剪策略

GET /api/v1/repository/{repository}/autoprunepolicy/

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.8. getRepositoryAutoPrunePolicy

获取存储库的自动修剪策略

GET /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.9. deleteRepositoryAutoPrunePolicy

删除存储库的自动修剪策略

DELETE /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.10. updateRepositoryAutoPrunePolicy

更新存储库的自动修剪策略

PUT /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

要应用到用户命名空间的策略配置

Name描述模式

所需 方法

用于修剪标签的方法(number_of_tags、create_date)

string

需要 的值

用于修剪方法的值(标签数量(如 10 个,时间 delta,如 7d (7 天))

 

tagPattern
optional

仅与此模式匹配的标签将被修剪

string

tagPatternMatches
optional

确定修剪的标签是否应该与 tagPattern 匹配

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.11. createUserAutoPrunePolicy

为当前登录的用户创建自动修剪策略

POST /api/v1/user/autoprunepolicy/

授权: oauth2_implicit (user:admin)

请求正文模式(application/json)

要应用到用户命名空间的策略配置

Name描述模式

所需 方法

用于修剪标签的方法(number_of_tags、create_date)

string

需要 的值

用于修剪方法的值(标签数量(如 10 个,时间 delta,如 7d (7 天))

 

tagPattern
optional

仅与此模式匹配的标签将被修剪

string

tagPatternMatches
optional

确定修剪的标签是否应该与 tagPattern 匹配

布尔值

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.12. listUserAutoPrunePolicies

列出当前登录用户的自动修剪策略

GET /api/v1/user/autoprunepolicy/

授权: oauth2_implicit (user:admin)

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.13. getUserAutoPrunePolicy

获取当前登录用户的自动修剪策略

GET /api/v1/user/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

string

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.14. deleteUserAutoPrunePolicy

删除当前登录的用户的自动修剪策略

DELETE /api/v1/user/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

string

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.13.15. updateUserAutoPrunePolicy

为当前登录的用户更新自动修剪策略

PUT /api/v1/user/autoprunepolicy/{policy_uuid}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

policy_uuid
required

策略的唯一 ID

string

请求正文模式(application/json)

要应用到用户命名空间的策略配置

Name描述模式

所需 方法

用于修剪标签的方法(number_of_tags、create_date)

string

需要 的值

用于修剪方法的值(标签数量(如 10 个,时间 delta,如 7d (7 天))

 

tagPattern
optional

仅与此模式匹配的标签将被修剪

string

tagPatternMatches
optional

确定修剪的标签是否应该与 tagPattern 匹配

布尔值

响应
HTTP 代码描述模式

204

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.14. Prototype

管理添加到存储库的默认权限。

7.14.1. updateOrganizationPrototypePermission

更新现有权限原型的角色。

PUT /api/v1/organization/{orgname}/prototypes/{prototypeid}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

必要设计
时需要

原型的 ID

字符串

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

新原型角色的描述

名称描述模式

角色
可选

应该应用到权限的角色

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>

7.14.2. deleteOrganizationPrototypePermission

删除现有权限设计模型。

DELETE /api/v1/organization/{orgname}/prototypes/{prototypeid}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

必要设计
时需要

原型的 ID

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
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>

7.14.3. createOrganizationPrototypePermission

创建新权限设计图。

POST /api/v1/organization/{orgname}/prototypes

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

新原型描述

名称描述模式

需要 角色

应该应用到委派的角色

字符串

activating_user
optional

创建规则应该应用的用户的存储库

对象

需要 委托

有关规则授予访问权限的用户或团队的信息

对象

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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

7.14.4. getOrganizationPrototypePermissions

列出此组织的现有原型。

GET /api/v1/organization/{orgname}/prototypes

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Accept: application/json" \
  https://<quay-server.example.com>/api/v1/organization/<organization_name>/prototypes

7.15. 引用器

列出 v2 API 引用器

7.15.1. getReferrers

列出镜像摘要的 v2 API 引用器。

GET /v2/{organization_name}/{repository_name}/referrers/{digest}
请求正文模式(application/json)

镜像摘要的引用。

类型

Name

描述

模式

path

需要OrgName

机构名称

string

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

所需引用

在存储库下查找清单的 OCI 引用器。

string

7.16. 软件仓库

列出、创建和管理存储库。

7.16.1. createRepo

创建新软件仓库。

POST /api/v1/repository

授权: oauth2_implicit (存储库:create)

请求正文模式(application/json)

新存储库的描述

名称描述模式

需要 仓库

仓库名称

字符串

需要 可见性

存储库开始的可见性

字符串

namespace
可选

创建存储库的命名空间。如果省略,则使用调用者的用户名

字符串

描述
必需

Markdown 编码的仓库描述

字符串

repo_kind
optional

存储库类型

 
响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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"

7.16.2. listRepos

在各种情况下,获取当前用户对当前用户可见的存储库列表。

GET /api/v1/repository

授权: oauth2_implicit (存储库:read)

查询参数
类型Name描述模式

query

next_page
optional

下一页面的页面令牌

字符串

query

repo_kind
optional

要返回的仓库类型

字符串

query

popularity
可选

是否包含存储库的流行度指标。

布尔值

query

last_modified
可选

是否包含存储库最后一次修改的时间。

布尔值

query

需要 公共

通过 virtue public 来添加用户可见的任何软件仓库

布尔值

query

需要不足

过滤用户返回到这些存储库的存储库

布尔值

query

namespace
必需

过滤返回到此命名空间的存储库

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.16.3. changeRepoVisibility

更改存储库的可见性。

POST /api/v1/repository/{repository}/changevisibility

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

更改存储库的可见性。

名称描述模式

需要 可见性

存储库开始的可见性

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.16.4. changeRepoState

更改存储库的状态。

PUT /api/v1/repository/{repository}/changestate

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

更改存储库的状态。

名称描述模式

需要 状态

确定是否允许推送。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.16.5. getRepo

获取指定的存储库。

GET /api/v1/repository/{repository}

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

查询参数
类型Name描述模式

query

IncludeTags
可选

是否包含存储库标签

布尔值

query

includeStats
optional

是否包含操作统计信息

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"

7.16.6. updateRepo

更新指定存储库中的描述。

PUT /api/v1/repository/{repository}

授权: oauth2_implicit (存储库:写)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

可以在存储库中更新的字段。

名称描述模式

描述
必需

Markdown 编码的仓库描述

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.16.7. deleteRepository

删除存储库。

DELETE /api/v1/repository/{repository}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE   -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"

7.17. repositorynotification

列出、创建和管理存储库事件/通知。

7.17.1. testRepoNotification

将测试通知排队此存储库。

POST /api/v1/repository/{repository}/notification/{uuid}/test

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

UUID
必需

通知的 UUID

string

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X POST \
  -H "Authorization: Bearer <bearer_token>" \
  https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>/test

7.17.2. getRepoNotification

获取指定通知的信息。

GET /api/v1/repository/{repository}/notification/{uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

UUID
必需

通知的 UUID

string

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X POST \
  -H "Authorization: Bearer <bearer_token>" \
  https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>

7.17.3. deleteRepoNotification

删除指定的通知。

DELETE /api/v1/repository/{repository}/notification/{uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

UUID
必需

通知的 UUID

string

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE \
  -H "Authorization: Bearer <bearer_token>" \
  https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification/<uuid>

7.17.4. resetRepositoryNotificationFailures

将存储库通知重置为 0 个失败。

POST /api/v1/repository/{repository}/notification/{uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

UUID
必需

通知的 UUID

string

响应
HTTP 代码描述模式

204

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.17.5. createRepoNotification

POST /api/v1/repository/{repository}/notification/

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

在仓库中创建通知的信息

名称描述模式

需要 事件

通知将响应的事件

字符串

所需 方法

通知方法(如电子邮件或 Web 回调)

字符串

需要配置

特定通知方法的 JSON 配置信息

对象

eventConfig
required

特定通知事件的 JSON 配置信息

对象

title
可选

通知的人类可读标题

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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/

7.17.6. listRepoNotifications

列出指定存储库的通知。

GET /api/v1/repository/{repository}/notification/

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.18. robot

管理用户和组织机器人帐户。

7.18.1. getUserRobots

列出该用户的可用机器人。

GET /api/v1/user/robots

授权: oauth2_implicit (user:admin)

查询参数
类型Name描述模式

query

限制
可选

如果指定,则要返回的机器人数。

整数

query

令牌
可选

如果为 false,则不会返回机器人的令牌。

布尔值

query

权限
可选

是否包括机器人具有权限的存储库和团队。

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.18.2. getOrgRobotPermissions

返回组织机器人的存储库权限列表。

GET /api/v1/organization/{orgname}/robots/{robot_shortname}/permissions

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.18.3. regenerateOrgRobotToken

为机构机器人重新生成令牌。

POST /api/v1/organization/{orgname}/robots/{robot_shortname}/regenerate

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X POST \
  -H "Authorization: Bearer <bearer_token>" \
  "<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate"

7.18.4. getUserRobotPermissions

返回用户机器人的存储库权限列表。

GET /api/v1/user/robots/{robot_shortname}/permissions

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.18.5. regenerateUserRobotToken

为用户的机器人重新生成令牌。

POST /api/v1/user/robots/{robot_shortname}/regenerate

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X POST \
  -H "Authorization: Bearer <bearer_token>" \
  "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate"

7.18.6. getOrgRobot

使用指定名称返回机构的机器人。

GET /api/v1/organization/{orgname}/robots/{robot_shortname}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.18.7. createOrgRobot

在组织中创建一个新的机器人。

PUT /api/v1/organization/{orgname}/robots/{robot_shortname}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

创建机器人的可选数据

名称描述模式

description
可选

机器人的可选文本描述

字符串

unstructured_metadata
optional

机器人的可选非结构化元数据

对象

响应
HTTP 代码描述模式

201

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X PUT   -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_name>"

7.18.8. deleteOrgRobot

删除现有的组织机器人。

DELETE /api/v1/organization/{orgname}/robots/{robot_shortname}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
curl -X DELETE \
  -H "Authorization: Bearer <bearer_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_shortname>"

7.18.9. getOrgRobots

列出组织的机器人。

GET /api/v1/organization/{orgname}/robots

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要OrgName

机构名称

字符串

查询参数
类型Name描述模式

query

限制
可选

如果指定,则要返回的机器人数。

整数

query

令牌
可选

如果为 false,则不会返回机器人的令牌。

布尔值

query

权限
可选

是否包括机器人具有权限的存储库和团队。

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots"

7.18.10. getUserRobot

返回具有指定名称的机器人。

GET /api/v1/user/robots/{robot_shortname}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"

7.18.11. createUserRobot

使用指定名称创建一个新用户机器人。

PUT /api/v1/user/robots/{robot_shortname}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

请求正文模式(application/json)

创建机器人的可选数据

名称描述模式

description
可选

机器人的可选文本描述

字符串

unstructured_metadata
optional

机器人的可选非结构化元数据

对象

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X PUT   -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/user/robots/<robot_name>"

7.18.12. deleteUserRobot

删除现有的机器人。

DELETE /api/v1/user/robots/{robot_shortname}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

robot_shortname
required

机器人的短名称,没有任何用户或机构前缀

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE \
  -H "Authorization: Bearer <bearer_token>" \
  "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"

7.18.13. Auth Federated Robot Token

使用机器人身份联邦机制返回过期机器人令牌。

GET oauth2/federation/robot/token

授权: oauth2_implicit (robot:auth)

响应
HTTP 代码描述模式

200

身份验证和令牌生成成功

{ "token": "string" }

401

未授权 :缺少或无效的身份验证

{ "error": "string" }

请求正文
类型Name描述模式

正文(body)

auth_result
required

身份验证过程的结果,其中包含有关机器人身份的信息。

{ "missing": "boolean", "error_message": "string", "context": { "robot": "RobotObject" } }

7.18.14. createOrgRobotFederation

为指定机构机器人创建联邦配置。

POST /api/v1/organization/{orgname}/robots/{robot_shortname}/federation

检索指定机构机器人的联邦配置。

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

orgname + robot_shortnamerequired

机器人的机构名称和短名称,没有任何用户或机构前缀

string

响应
HTTP 代码描述模式

201

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

7.20. secscan

列出和管理存储库漏洞和其他安全信息。

7.20.1. getRepoManifestSecurity

GET /api/v1/repository/{repository}/manifest/{manifestref}/security

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

manifestref
必需

清单摘要

string

查询参数
类型Name描述模式

query

漏洞
可选

包括漏洞信息

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>"

7.21. 超级用户

超级用户 API。

7.21.1. createInstallUser

创建新用户。

POST /api/v1/superuser/users/

授权: oauth2_implicit (超级:user)

请求正文模式(application/json)

创建用户的数据

名称描述模式

需要 的用户名

正在创建的用户的用户名

字符串

email
可选

正在创建的用户的电子邮件地址

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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/"

7.21.2. deleteInstallUser

删除用户。

DELETE /api/v1/superuser/users/{username}

授权: oauth2_implicit (超级:user)

请求正文模式(application/json)

删除用户的数据

Name描述模式

需要 的用户名

要删除的用户的用户名

string

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/{username}"

7.21.3. listAllUsers

返回系统中所有用户的列表。

GET /api/v1/superuser/users/

授权: oauth2_implicit (超级:user)

查询参数
类型Name描述模式

query

next_page
optional

下一页面的页面令牌

字符串

query

限制
可选

限制为每个页面返回的结果数。最大 100。

整数

query

禁用
可选

如果为 false,则仅返回启用的用户。

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/"

7.21.4. listAllLogs

列出当前系统的使用日志。

GET /api/v1/superuser/logs

授权: oauth2_implicit (超级:user)

查询参数
类型Name描述模式

query

next_page
optional

下一页面的页面令牌

字符串

query


可选

日志的页面号

整数

query

ENDTIME
可选

获取日志的最新时间(%m/%d/%Y %Z)

字符串

query

startTime
可选

从中获取日志的最早时间(%m/%d/%Y %Z)

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.5. listAllOrganizations

列出当前系统的机构。

GET /api/v1/superuser/organizations

授权: oauth2_implicit (超级:user)

查询参数
类型Name描述模式

path

name
必需

受管机构的名称

string

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/organizations/"

7.21.6. createServiceKey

POST /api/v1/superuser/keys

授权: oauth2_implicit (超级:user)

请求正文模式(application/json)

创建服务密钥的描述

名称描述模式

需要 服务

使用这个密钥验证的服务

string

name
可选

服务密钥的友好名称

string

元数据
可选

此键元数据的键/值对

对象

notes
可选

如果指定,键的额外备注

string

过期

过期日期为 unix 时间戳

 
响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.7. listServiceKeys

GET /api/v1/superuser/keys

授权: oauth2_implicit (超级:user)

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.8. changeUserQuotaSuperUser

PUT /api/v1/superuser/organization/{namespace}/quota/{quota_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

path

quota_id
required

 

字符串

请求正文模式(application/json)

新机构配额的描述

名称描述模式

limit_bytes
optional

允许机构的字节数

整数

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.9. deleteUserQuotaSuperUser

DELETE /api/v1/superuser/organization/{namespace}/quota/{quota_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

path

quota_id
required

 

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.10. createUserQuotaSuperUser

POST /api/v1/superuser/organization/{namespace}/quota

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

请求正文模式(application/json)

新机构配额的描述

名称描述模式

limit_bytes
required

允许机构的字节数

整数

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.11. listUserQuotaSuperUser

GET /api/v1/superuser/organization/{namespace}/quota

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.12. changeOrganizationQuotaSuperUser

PUT /api/v1/superuser/users/{namespace}/quota/{quota_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

path

quota_id
required

 

字符串

请求正文模式(application/json)

新机构配额的描述

名称描述模式

limit_bytes
optional

允许机构的字节数

整数

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.13. deleteOrganizationQuotaSuperUser

DELETE /api/v1/superuser/users/{namespace}/quota/{quota_id}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

path

quota_id
required

 

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.14. createOrganizationQuotaSuperUser

POST /api/v1/superuser/users/{namespace}/quota

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

请求正文模式(application/json)

新机构配额的描述

名称描述模式

limit_bytes
optional

允许机构的字节数

整数

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.15. listOrganizationQuotaSuperUser

GET /api/v1/superuser/users/{namespace}/quota

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.16. changeOrganization

更新有关指定用户的信息。

PUT /api/v1/superuser/organizations/{name}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

name
必需

受管机构的的名称

字符串

请求正文模式(application/json)

现有机构的更新描述

名称描述模式

email
可选

机构联系电子邮件

字符串

invoice_email
optional

机构是否希望接收发票的电子邮件

布尔值

invoice_email_address
optional

要接收发票的电子邮件地址

 

tag_expiration_s
optional

标签过期的秒数

整数

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.17. deleteOrganization

删除指定的机构。

DELETE /api/v1/superuser/organizations/{name}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

name
必需

受管机构的的名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.18. approveServiceKey

POST /api/v1/superuser/approvedkeys/{kid}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

kid
必需

服务密钥的唯一标识符

字符串

请求正文模式(application/json)

批准服务密钥的信息

名称描述模式

notes
可选

可选的批准备注

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.19. deleteServiceKey

DELETE /api/v1/superuser/keys/{kid}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

kid
必需

服务密钥的唯一标识符

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.20. updateServiceKey

PUT /api/v1/superuser/keys/{kid}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

kid
必需

服务密钥的唯一标识符

字符串

请求正文模式(application/json)

服务密钥更新的描述

名称描述模式

name
可选

服务密钥的友好名称

字符串

元数据
可选

此键元数据的键/值对

对象

过期
可选

过期日期为 unix 时间戳

 
响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.21. getServiceKey

GET /api/v1/superuser/keys/{kid}

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

kid
必需

服务密钥的唯一标识符

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.22. getRepoBuildStatusSuperUser

返回由 build uuids 指定的构建的状态。

GET /api/v1/superuser/{build_uuid}/status

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

build_uuid
required

构建的 UUID

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.23. getRepoBuildSuperUser

返回有关构建的信息。

GET /api/v1/superuser/{build_uuid}/build

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

build_uuid
required

构建的 UUID

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.24. getRepoBuildLogsSuperUser

返回由 build uuid 指定的构建的构建日志。

GET /api/v1/superuser/{build_uuid}/logs

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

build_uuid
required

构建的 UUID

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.25. getRegistrySize

GET /api/v1/superuser/registrysize/

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

string

镜像 registry 大小的描述

Name描述模式

size_bytes*
optional

允许机构的字节数

整数

last_ran

 

整数

Queued

 

布尔值

running

 

布尔值

响应
HTTP 代码描述模式

200

已创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.21.26. postRegistrySize

POST /api/v1/superuser/registrysize/

授权: oauth2_implicit (超级:user)

路径参数
类型Name描述模式

path

namespace
必需

 

字符串

请求正文模式(application/json)

镜像 registry 大小的描述

Name描述模式

last_ran

 

整数

Queued

 

布尔值

running

 

布尔值

响应
HTTP 代码描述模式

201

已创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.22. tag

管理存储库的标签。

7.22.1. restoreTag

将存储库标签恢复回存储库中以前的镜像。

POST /api/v1/repository/{repository}/tag/{tag}/restore

授权: oauth2_implicit (存储库:写)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

需要 标签

标签的名称

string

请求正文模式(application/json)

将标签恢复到特定镜像

名称描述模式

manifest_digest
required

如果指定,应使用的清单摘要

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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

7.22.2. changeTag

更改标签指向或创建新标签的镜像。

PUT /api/v1/repository/{repository}/tag/{tag}

授权: oauth2_implicit (存储库:写)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

需要 标签

标签的名称

string

请求正文模式(application/json)

更改特定标签

名称描述模式

manifest_digest
optional

(如果指定)标签应指向的清单摘要

 

过期
可选

(如果指定)镜像的过期时间

 
响应
HTTP 代码描述模式

201

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X PUT \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Content-Type: application/json" \
  --data '{
    "manifest_digest": "<manifest_digest>"
  }' \
  https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/tag/<tag>

7.22.3. deleteFullTag

删除指定的存储库标签。

DELETE /api/v1/repository/{repository}/tag/{tag}

授权: oauth2_implicit (存储库:写)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

string

path

需要 标签

标签的名称

string

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.22.4. listRepoTags

GET /api/v1/repository/{repository}/tag/

授权: oauth2_implicit (存储库:read)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

查询参数
类型Name描述模式

query

onlyActiveTags
optional

过滤到仅活动标签。

布尔值

query


可选

结果页面索引。默认 1.

整数

query

限制
可选

限制为每个页面返回的结果数。最大 100。

整数

query

filter_tag_name
optional

语法:<op>:<name> 根据 operation.<op> 过滤标签名称,可以是 'like' 或 'eq'。

字符串

query

specificTag
optional

将标签过滤到特定标签。

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <bearer_token>" \
  -H "Accept: application/json" \
  https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/tag/

7.23. team

创建、列出和管理组织的团队。

7.23.1. getOrganizationTeamPermissions

返回机构团队的存储库权限列表。

GET /api/v1/organization/{orgname}/team/{teamname}/permissions

授权: 

路径参数
类型Name描述模式

path

TeamName
必需

团队的名称

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.23.2. updateOrganizationTeamMember

向现有团队添加或邀请成员。

PUT /api/v1/organization/{orgname}/team/{teamname}/members/{membername}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

TeamName
必需

团队的名称

字符串

path

需要 memberName

团队成员的用户名

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X PUT \
  -H "Authorization: Bearer <your_access_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"

7.23.3. deleteOrganizationTeamMember

删除团队成员。

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}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

TeamName
必需

团队的名称

字符串

path

需要 memberName

团队成员的用户名

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE \
  -H "Authorization: Bearer <your_access_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"

7.23.4. getOrganizationTeamMembers

检索指定团队的成员列表。

GET /api/v1/organization/{orgname}/team/{teamname}/members

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

TeamName
必需

团队的名称

字符串

path

需要OrgName

机构名称

字符串

查询参数
类型Name描述模式

query

includePending
optional

是否包含待处理的成员

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X GET \
  -H "Authorization: Bearer <your_access_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members"

7.23.5. inviteTeamMemberEmail

邀请现有团队的电子邮件地址。

PUT /api/v1/organization/{orgname}/team/{teamname}/invite/{email}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要 发送电子邮件

 

字符串

path

TeamName
必需

 

字符串

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X PUT \
  -H "Authorization: Bearer <your_access_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"

7.23.6. deleteTeamMemberEmailInvite

删除电子邮件地址邀请您加入团队。

DELETE /api/v1/organization/{orgname}/team/{teamname}/invite/{email}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

需要 发送电子邮件

 

字符串

path

TeamName
必需

 

字符串

path

需要OrgName

 

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令

+

$ curl -X DELETE \
  -H "Authorization: Bearer <your_access_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"

7.23.7. updateOrganizationTeam

为指定团队更新机构范围权限。

注意

此 API 也用于创建团队。

PUT /api/v1/organization/{orgname}/team/{teamname}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

TeamName
必需

团队的名称

字符串

path

需要OrgName

机构名称

字符串

请求正文模式(application/json)

团队的描述

名称描述模式

需要 角色

应用于团队的机构权限

字符串

description
可选

team 的 Markdown 描述

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ 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>

7.23.8. deleteOrganizationTeam

删除指定的团队。

DELETE /api/v1/organization/{orgname}/team/{teamname}

授权: oauth2_implicit (org:admin)

路径参数
类型Name描述模式

path

TeamName
必需

团队的名称

字符串

path

需要OrgName

机构名称

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

示例命令
$ curl -X DELETE \
  -H "Authorization: Bearer <your_access_token>" \
  "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>"

7.24. 触发器

创建、列出和管理构建触发器。

7.24.1. activateBuildTrigger

激活指定的构建触发器。

POST /api/v1/repository/{repository}/trigger/{trigger_uuid}/activate

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

trigger_uuid
required

构建触发器的 UUID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)
名称描述模式

需要配置

任意 json。

对象

pull_robot
optional

用于拉取镜像的机器人名称。

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.24.2. listTriggerRecentBuilds

列出指定触发器启动的构建。

GET /api/v1/repository/{repository}/trigger/{trigger_uuid}/builds

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

trigger_uuid
required

构建触发器的 UUID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

查询参数
类型Name描述模式

query

限制
可选

要返回的最大构建数

整数

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.24.3. manuallyStartBuildTrigger

从指定的触发器手动启动构建。

POST /api/v1/repository/{repository}/trigger/{trigger_uuid}/start

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

trigger_uuid
required

构建触发器的 UUID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

用于激活构建触发器的可选运行参数

名称描述模式

branch_name
optional

(仅SCM)如果指定,则构建的分支名称。

字符串

commit_sha
optional

(仅限客户)如果指定,用于签出 git 存储库的 ref/SHA1。

字符串

refs
可选

(仅SCM)如果指定,则要构建的 ref。

 
响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.24.4. getBuildTrigger

获取指定构建触发器的信息。

GET /api/v1/repository/{repository}/trigger/{trigger_uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

trigger_uuid
required

构建触发器的 UUID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.24.5. updateBuildTrigger

更新指定的构建触发器。

PUT /api/v1/repository/{repository}/trigger/{trigger_uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

trigger_uuid
required

构建触发器的 UUID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

请求正文模式(application/json)

更新构建触发器的选项

名称描述模式

需要启用

是否启用构建触发器

布尔值

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.24.6. deleteBuildTrigger

删除指定的构建触发器。

DELETE /api/v1/repository/{repository}/trigger/{trigger_uuid}

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

trigger_uuid
required

构建触发器的 UUID

字符串

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.24.7. listBuildTriggers

列出指定存储库的触发器。

GET /api/v1/repository/{repository}/trigger/

授权: oauth2_implicit (repo:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.25. user

管理当前用户。

7.25.1. createStar

星级存储库.

POST /api/v1/user/starred

授权: oauth2_implicit (存储库:read)

请求正文模式(application/json)
名称描述模式

namespace
必需

存储库所属的命名空间

字符串

需要 仓库

仓库名称

字符串

响应
HTTP 代码描述模式

201

成功创建

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.25.2. listStarredRepos

列出所有星号的存储库。

GET /api/v1/user/starred

授权: oauth2_implicit (user:admin)

查询参数
类型Name描述模式

query

next_page
optional

下一页面的页面令牌

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.25.3. getLoggedInUser

获取经过身份验证的用户的用户信息。

GET /api/v1/user/

授权: oauth2_implicit (user:read)

响应
HTTP 代码描述模式

200

成功调用

UserView

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.25.4. deleteStar

从存储库中删除星形。

DELETE /api/v1/user/starred/{repository}

授权: oauth2_implicit (user:admin)

路径参数
类型Name描述模式

path

需要 仓库

存储库的完整路径。例如 namespace/name

字符串

响应
HTTP 代码描述模式

204

已删除

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.25.5. getUserInformation

获取指定用户的用户信息。

GET /api/v1/users/{username}

授权: 

路径参数
类型Name描述模式

path

需要 的用户名

 

字符串

响应
HTTP 代码描述模式

200

成功调用

 

400

错误请求

ApiError

401

需要会话

ApiError

403

未授权访问

ApiError

404

未找到

ApiError

7.26. 定义

7.26.1. ApiError

名称描述模式

status
可选

响应的状态代码。

整数

type
可选

引用错误的类型。

字符串

详情
可选

有关错误的特定实例的详情。

字符串

title
可选

用于标识错误类型的唯一错误代码。

字符串

error_message
optional

弃用;详细信息的别名

字符串

error_type
optional

弃用;详细信息的别名

字符串

7.26.2. UserView

名称描述模式

验证
可选

是否验证用户的电子邮件地址

布尔值

匿名
可选

如果此用户数据代表一个客户机用户,则为 true

布尔值

email
可选

用户电子邮件地址

字符串

avatar
optional

代表用户的图标的 avatar 数据

对象

机构
可选

有关用户所属的机构的信息

对象数组

登录
可选

用户通过身份验证的外部登录供应商列表

对象数组

can_create_repo
optional

用户是否有创建存储库的权限

布尔值

preferred_namespace
optional

如果为 true,则用户的命名空间是要显示的首选命名空间

布尔值

7.26.3. ViewMirrorConfig

名称描述模式

is_enabled
optional

用于启用或禁用同步。

布尔值

external_reference
optional

外部存储库的位置。

字符串

external_registry_username
optional

用于与外部 registry 进行身份验证的用户名。

 

external_registry_password
optional

用于与外部 registry 进行身份验证的密码。

 

sync_start_date
optional

决定此存储库下次准备同步的时间。

字符串

sync_interval
optional

next_start_date 开始同步后的秒数。

整数

robot_username
optional

用于镜像推送的机器人的用户名。

字符串

root_rule
optional

用于决定应同步哪些标签的 glob-patterns 列表。

对象

external_registry_config
optional

 

对象

7.26.4. ApiErrorDescription

名称描述模式

type
可选

对错误类型资源的引用

字符串

title
可选

错误的标题。可用于唯一标识错误类型。

字符串

description
可选

有关错误的详细描述,其中包括修复此问题的帮助信息。

字符串

第 8 章 API 配置示例

8.1. external_registry_config object reference

{
        "is_enabled": True,
        "external_reference": "quay.io/redhat/quay",
        "sync_interval": 5000,
        "sync_start_date": datetime(2020, 0o1, 0o2, 6, 30, 0),
        "external_registry_username": "fakeUsername",
        "external_registry_password": "fakePassword",
        "external_registry_config": {
            "verify_tls": True,
            "unsigned_images": False,
            "proxy": {
                "http_proxy": "http://insecure.proxy.corp",
                "https_proxy": "https://secure.proxy.corp",
                "no_proxy": "mylocalhost",
            },
        },
    }

8.2. rule_rule 对象引用

    {
            "root_rule": {"rule_kind": "tag_glob_csv", "rule_value": ["latest", "foo", "bar"]},
        }

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.