Skip to content

Update OCI registry

PATCH
/api/v1/registries/oci/{id}
curl --request PATCH \
--url http://localhost:3000/api/v1/registries/oci/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "name": "my-container-registry", "description": "Production container images", "url": "https://registry.example.com", "registryType": "GENERIC", "authType": "NONE", "credential": "username:password", "verifyTls": true, "enabled": true, "repositories": [ "library/nginx", "team/app" ] }'

Updates an existing OCI registry.

id
required
string format: uuid

OCI registry UUID

x-organization-id
string format: uuid

UUID of the organization (tenant) the request acts in. It selects the tenant and grants nothing: the server checks membership or an open tenant switch. Not needed for global operations. A malformed value returns 400. API keys are fixed to their own organization; another organization returns 403. The x-organization-source header grants nothing.

Media typeapplication/json
object
name

Unique name for the registry within the organization

string
>= 2 characters <= 100 characters
Example
my-container-registry
description

Description of the registry

string
nullable <= 500 characters
Example
Production container images
url

OCI registry URL

string
Example
https://registry.example.com
registryType

Registry type

string
Allowed values: GENERIC
Example
GENERIC
authType

Authentication type

string
Allowed values: NONE BASIC TOKEN
Example
BASIC
credential

Credential for authentication. Set to null to remove. For BASIC auth this MUST be “username:password”. For TOKEN auth it is the raw token.

string
nullable
Example
username:password
verifyTls

Whether to verify TLS certificates

boolean
Example
true
enabled

Whether the registry is enabled

boolean
Example
true
repositories

Repositories to sync, e.g. library/nginx. Replaces the stored list. Registry-side catalog enumeration is not used (FM-839): an empty list syncs nothing.

Array<string>
Example
[
"library/nginx",
"team/app"
]

OCI registry updated successfully

Media typeapplication/json
object
id
required

Unique identifier

string
organizationId
required

Organization ID that owns this registry

string
name
required

Registry name

string
description

Registry description

string
nullable
url
required

OCI registry URL

string
registryType
required

Registry type

string
Allowed values: GENERIC
authType
required

Authentication type

string
Allowed values: NONE BASIC TOKEN
hasCredentials
required

Whether credentials are configured

boolean
verifyTls
required

Whether TLS verification is enabled

boolean
lastHealthCheck

Last health check timestamp

string format: date-time
nullable
healthStatus

Health status (healthy, unhealthy, unknown)

string
nullable
pullVerified

FM-1265 (ADR-0016-1): pull verification, separate from healthStatus. TRUE: the probed repository (pullVerifiedRepository) is pullable, NOT every configured repository. FALSE: the registry is reachable and the credentials are accepted, but they grant no pull on that repository. NOT_APPLICABLE: no repository is configured. Null until first probed.

string
nullable
Allowed values: TRUE FALSE NOT_APPLICABLE
pullVerifiedRepository

The one repository the pull probe used (the first configured repository)

string
nullable
pullVerifiedDetail

Why pullVerified is FALSE (status, scope, registry message)

string
nullable
pullVerifiedAt

When pull access was last probed

string format: date-time
nullable
lastSyncAt

Last sync timestamp

string format: date-time
nullable
lastSyncError

Last sync error message

string
nullable
syncIntervalMinutes
required

Sync interval in minutes

number
enabled
required

Whether the registry is enabled

boolean
repositories
required

Repositories this registry syncs, e.g. library/nginx. Registry-side catalog enumeration is not used (FM-839): an empty list syncs nothing.

Array<string>
createdAt
required

Creation timestamp

string format: date-time
updatedAt
required

Last update timestamp

string format: date-time
Example
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"organizationId": "550e8400-e29b-41d4-a716-446655440001",
"name": "my-container-registry",
"description": "Production container images",
"url": "https://registry.example.com",
"registryType": "GENERIC",
"authType": "NONE",
"hasCredentials": false,
"verifyTls": true,
"lastHealthCheck": "2024-01-15T10:30:00Z",
"healthStatus": "healthy",
"pullVerified": "TRUE",
"pullVerifiedRepository": "team/app",
"pullVerifiedDetail": "The token server issued no token for scope repository:team/app:pull.",
"pullVerifiedAt": "2024-01-15T10:30:00Z",
"lastSyncAt": "2024-01-15T10:30:00Z",
"syncIntervalMinutes": 60,
"enabled": true,
"repositories": [],
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}

Invalid input data

Unauthorized

Forbidden

OCI registry not found

Registry with this name already exists