Container registries

Create a container registry

Configure a container registry for pulling images into a project's sandboxes. Requires project admin (registries hold push/pull credentials).

The full image path is built as endpoint/namespace/image:tag. For example:

RegistryendpointnamespaceFull image path
Docker Hubdocker.iomyuserdocker.io/myuser/image:tag
GitHub CRghcr.iomy-orgghcr.io/my-org/image:tag
Google ARus-docker.pkg.devproject/repous-docker.pkg.dev/project/repo/image:tag
AWS ECR123456.dkr.ecr.us-east-1.amazonaws.com(empty)123456.dkr.ecr.../image:tag

All registries require authentication. Choose personal_access_token (default) for GitHub/GitLab, basic for username/password registries, or bearer for token-only registries.

POST
/v1/orgs/{org}/projects/{project}/registries

Configure a container registry for pulling images into a project's sandboxes. Requires project admin (registries hold push/pull credentials).

The full image path is built as endpoint/namespace/image:tag. For example:

RegistryendpointnamespaceFull image path
Docker Hubdocker.iomyuserdocker.io/myuser/image:tag
GitHub CRghcr.iomy-orgghcr.io/my-org/image:tag
Google ARus-docker.pkg.devproject/repous-docker.pkg.dev/project/repo/image:tag
AWS ECR123456.dkr.ecr.us-east-1.amazonaws.com(empty)123456.dkr.ecr.../image:tag

All registries require authentication. Choose personal_access_token (default) for GitHub/GitLab, basic for username/password registries, or bearer for token-only registries.

AuthorizationBearer <token>

API key starting with tektona_. Create one at app-dev.tektona.ai under API Keys.

In: header

Path Parameters

org*string

Organization name

Match^[a-z0-9][a-z0-9-]*[a-z0-9]$
Length2 <= length <= 64
project*string

Project name

Match^[a-z0-9][a-z0-9-]*[a-z0-9]$
Length2 <= length <= 64

Query Parameters

dry_run?boolean

Test connection without saving

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

auth_type*string

Authentication type

Default"personal_access_token"
Value in"basic" | "personal_access_token" | "bearer"
display_name*string

Human-readable registry name

Length1 <= length <= 100
endpoint*string

Registry hostname (e.g. ghcr.io, docker.io)

Length1 <= length <= 255
name*string

URL-safe registry identifier

Match^[a-z0-9][a-z0-9-]*[a-z0-9]$
Length2 <= length <= 64
namespace?string

Path prefix within the registry (e.g. my-org for ghcr.io)

Lengthlength <= 255
password?string

Password (required for basic)

Lengthlength <= 255
token?string

Token (required for personal_access_token and bearer)

Lengthlength <= 4096
username?string

Username (required for basic and personal_access_token)

Lengthlength <= 255

Response Body

application/json

application/problem+json

curl -X POST "https://api-dev.tektona.ai/v1/orgs/string/projects/string/registries" \  -H "Content-Type: application/json" \  -d '{    "auth_type": "basic",    "display_name": "string",    "endpoint": "string",    "name": "string"  }'
{  "$schema": "https://api-dev.tektona.ai/schemas/RegistryResponse.json",  "auth_type": "basic",  "created_at": "string",  "display_name": "My GitHub Registry",  "endpoint": "ghcr.io",  "has_credentials": true,  "id": "string",  "name": "my-ghcr",  "namespace": "my-org",  "owner": {    "project": {      "display_name": "string",      "name": "string"    },    "type": "project"  },  "updated_at": "string"}