Complete API documentation for Registry10x covering OCI Distribution, Authentication, SCIM 2.0 Provisioning, Enterprise Identity, and Management endpoints.
Returns empty JSON object. If unauthenticated, returns 401 with Www-Authenticate header containing the token endpoint URL.
| Param | Description |
|---|---|
tenant | Tenant namespace (use _ for default) |
project | Project name |
name | Repository name |
reference | Tag name or sha256:... digest |
| Header | Value |
|---|---|
Content-Type | application/vnd.oci.image.manifest.v1+json |
Send credentials via Authorization: Basic base64(user:pass) header. Docker clients send this automatically after receiving a 401 challenge.
| Param | Description |
|---|---|
service | Registry service name (from Www-Authenticate) |
scope | Docker scope: repository:tenant/project/repo:pull,push |
| Param | Description |
|---|---|
provider | OIDC provider name from config (e.g., azure-ad) |
redirect_uri | Where to redirect after login (receives ?token=...) |
1. Generates PKCE code verifier + challenge
2. Stores session state
3. Redirects user to IdP authorization endpoint
4. IdP authenticates user and redirects to /auth/oidc/callback
1. Validates state against stored session
2. Exchanges authorization code for ID token
3. Extracts sub, email, groups from ID token
4. Auto-provisions user if new
5. Applies group-to-role mappings
6. Issues Registry10x JWT
7. Redirects to redirect_uri?token=eyJ...
| Provider | Issuer | Subject Format |
|---|---|---|
| GitHub Actions | https://token.actions.githubusercontent.com | github:org/repo |
| GitLab CI | https://gitlab.com | gitlab:group/project |
| Kubernetes SA | K8s API server OIDC endpoint | k8s:namespace:sa-name |
SCIM endpoints enable Azure AD, Okta, and OneLogin to automatically provision and deprovision registry users. All requests require Authorization: Bearer {scim_token}.
Setting active=false immediately removes the user and all their access policies. They cannot docker pull from this moment onward.
These endpoints are used for cross-region replication between Registry10x instances. They are served on both the main port and the internal port (5002).
Connect Registry10x to Azure AD for SSO and SCIM provisioning.
https://registry.example.com/auth/oidc/callbackoidc_providers: [{issuer_url: "https://login.microsoftonline.com/{tenant}/v2.0", client_id: "...", client_secret: "...", groups_claim: "groups"}]https://registry.example.com/scim/v2 and enter the SCIM bearer tokengroup_role_mappings: [{group: "registry10x-admins", tenant: "_", role: "admin"}]docker loginConfigure Okta to auto-provision and deprovision Registry10x users.
https://registry.example.com/scim/v2enterprise.scim.bearer_token from config)Push images from GitHub Actions without storing registry credentials.
github_oidc: {allowed_orgs: ["your-org"], default_role: "maintainer"}id-token: write permission to your workflowcurl "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=registry10x-registry"POST /auth/ci/token with the OIDC JWTdocker login → docker pushConfigure Kubernetes pods to pull images from Registry10x.
POST /api/v1/robot-accounts with desired scopekubectl create secret docker-registry registry10x-secret --docker-server=registry.example.com --docker-username=robot:ci-pipeline --docker-password=nrc_...imagePullSecrets: [{name: registry10x-secret}]/auth/credential-exchange