Chapter 3. Robot account tokens Robot account tokens are password-type credentials used to access a Red Hat Quay registry via normal Docker v2 endpoints; these are defined as tokens on the UI because the password itself is encrypted. Robot account tokens are persistent tokens designed for automation and continuous integration workflows. By default, Red Hat Quay's robot account tokens do not expire and do not require user interaction, which makes robot accounts ideal for non-interactive use cases. Robot account tokens are automatically generated at the time of a robot's creation and are non-user specific; that is, they are connected to the user and organization namespace where where they are created. for example, a robot named project_tools+<robot_name> is associated with the project_tools namespace. Robot account tokens provide access without needing a user's personal credentials. How the robot account is configured, for example, with one of READ , WRITE , or ADMIN permissions, ultimately defines the actions that the robot account can take. Because robot account tokens are persistent and do not expire by default, they are ideal for automated workflows that require consistent access to Red Hat Quay without manual renewal. Despite this, robot account tokens can be easily re-generated by using the the UI. They can also be regenerated by using the proper API endpoint via the CLI. To enhance the security of your Red Hat Quay deployment, administrators should regularly refresh robot account tokens. Additionally, with the keyless authentication with robot accounts feature, robot account tokens can be exchanged for external OIDC tokens and leveraged so that they only last one hour, enhancing the security of your registry. When a namespace gets deleted, or when the robot account is deleted itself, they are garbage collected when the collector is scheduled to run. The following section shows you how to use the API to re-generate a robot account token for organization robots and user robots. 3.1. Regenerating a robot account token by using the Red Hat Quay UI Use the following procedure to regenerate a robot account token by using the Red Hat Quay UI. Prerequisites You have logged into Red Hat Quay. Procedure Click the name of an Organization. In the navigation pane, click Robot accounts . Click the name of your robot account, for example, testorg3+test . Click Regenerate token in the popup box. 3.2. Regenerating a robot account token by using the Red Hat Quay API Use the following procedure to regenerate a robot account token using the Red Hat Quay API. Prerequisites You have Created an OAuth access token . You have set BROWSER_API_CALLS_XHR_ONLY: false in your config.yaml file. Procedure Enter the following command to regenerate a robot account token for an organization using the POST /api/v1/organization/{orgname}/robots/{robot_shortname}/regenerate endpoint: USD curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate" Example output {"name": "test-org+test", "created": "Fri, 10 May 2024 17:46:02 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"} Enter the following command to regenerate a robot account token for the current user with the POST /api/v1/user/robots/{robot_shortname}/regenerate endpoint: USD curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate" Example output {"name": "quayadmin+test", "created": "Fri, 10 May 2024 14:12:11 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}

Commands:
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
token: <example_secret>
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
token: <example_secret>