Sign Up

Registries

GET
/registries

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: read:registries

Response Body

Registry credential metadata for the project (never passwords)

application/json
  1. response

Response for GET /registries: metadata only, never passwords.

registries*array<>
curl -X GET 'https://example.com/registries'
{  "registries": [    {      "description": "string",      "host": "string",      "kind": "string",      "updated_at": "2019-08-24T14:15:22Z",      "username": "string"    }  ]}
PUT
/registries

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: write:registries

Request Body

application/json
  1. body

Body form for PUT /registries (host in the body instead of the path). The password is write-only: encrypted at rest, never returned.

description?string|null
host*string

Registry host (host[:port], no scheme/path). Docker Hub aliases normalize to index.docker.io.

kind?string

Auth kind: one of basic, ghcr, gcr, ecr, ecr_role. For ecr_role the username is the IAM role ARN the platform assumes (ExternalId = the organization id) and the password is ignored.

Default"basic"
password?string

Registry password/token (max 64 KiB). Write-only — never echoed back by any public read endpoint. Required for every kind but ecr_role, which ignores it.

username*string

Response Body

Credential stored

curl -X PUT 'https://example.com/registries' \  -H 'Content-Type: application/json' \  -d '{  "host": "string",  "username": "string"}'
Empty
GET
/registries/{host}

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: read:registries

Path Parameters

host*string

Registry host (host[:port], no scheme/path); Docker Hub aliases normalize to index.docker.io

Response Body

Registry credential metadata (never the password)

application/json
  1. response

Registry credential metadata as returned by every read endpoint (list and get, on both planes). Passwords are write-only: they never appear here or on any other response.

description?string|null
host*string

Normalized registry host (Docker Hub aliases collapse to index.docker.io).

kind*string

Auth kind (basic, ghcr, gcr, ecr, ecr_role). For ecr_role the username is the IAM role ARN the platform assumes.

updated_at*string
Formatdate-time
username*string
curl -X GET 'https://example.com/registries/string'
{  "description": "string",  "host": "string",  "kind": "string",  "updated_at": "2019-08-24T14:15:22Z",  "username": "string"}
DELETE
/registries/{host}

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: delete:registries

Path Parameters

host*string

Registry host (host[:port], no scheme/path); Docker Hub aliases normalize to index.docker.io

Response Body

Credential removed (or none existed)

curl -X DELETE 'https://example.com/registries/string'
Empty
PUT
/registries/{host}

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Scope: write:registries

Path Parameters

host*string

Registry host (host[:port], no scheme/path); Docker Hub aliases normalize to index.docker.io

Request Body

application/json
  1. body

Credential payload for PUT /registries/{host}. The password is write-only: it is encrypted at rest and no public endpoint returns it.

description?string|null
kind?string

Auth kind: one of basic, ghcr, gcr, ecr, ecr_role. For ecr_role the username is the IAM role ARN the platform assumes (ExternalId = the organization id) and the password is ignored.

Default"basic"
password?string

Registry password/token (max 64 KiB). Write-only — never echoed back by any public read endpoint. Required for every kind but ecr_role, which ignores it.

username*string

Response Body

Credential stored

curl -X PUT 'https://example.com/registries/string' \  -H 'Content-Type: application/json' \  -d '{  "username": "string"}'
Empty