Skip to content

GitHub: Create a private registry for an organization

GitHub privateRegistries.privateRegistriesCreateOrgPrivateRegistry: arguments, response, policy and SDK examples.

← Private registries operations · Get started

Operation github.private_registries_create_org_private_registry

Provider route: POST /orgs/{org}/private-registries. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/github with npm, or alter-sdk-github with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { GitHubIntegration } from "@alter-ai/github";
async function execute(input: Parameters<GitHubIntegration["privateRegistries"]["privateRegistriesCreateOrgPrivateRegistry"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new GitHubIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.privateRegistries.privateRegistriesCreateOrgPrivateRegistry(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_github import GitHubIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = GitHubIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.private_registries.private_registries_create_org_private_registry(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
pathobjectRequired within parentAdditional keys: not allowed
path.orgstringRequired within parent
bodyobjectRequired within parent
body.account_idstringOptionalThe AWS account ID. Required when `auth_type` is `oidc_aws`.
body.api_hoststringOptionalThe Cloudsmith API host. Optional for `oidc_cloudsmith` auth type. If omitted, `api.cloudsmith.io` is used by default.
body.audiencestringOptionalThe OIDC audience. Optional for `oidc_aws`, `oidc_jfrog`, and `oidc_gcp`, and required for `oidc_cloudsmith` auth types.
body.auth_typestringOptionalThe authentication type for the private registry. Defaults to `token` if not specified. Use `oidc_azure`, `oidc_aws`, `oidc_jfrog`, `oidc_cloudsmith`, or `oidc_gcp` for OIDC authentication. Use `anonymous` for registries that do not require authentication; `username`, `encrypted_value`, and `key_id` must be omitted.
One of: token, username_password, oidc_azure, oidc_aws, oidc_jfrog, oidc_cloudsmith, oidc_gcp, anonymous
body.aws_regionstringOptionalThe AWS region. Required when `auth_type` is `oidc_aws`.
body.client_idstringOptionalThe client ID of the Azure AD application. Required when `auth_type` is `oidc_azure`.
body.domainstringOptionalThe CodeArtifact domain. Required when `auth_type` is `oidc_aws`.
body.domain_ownerstringOptionalThe CodeArtifact domain owner (AWS account ID). Required when `auth_type` is `oidc_aws`.
body.encrypted_valuestringOptionalThe value for your secret, encrypted with [LibSodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages) using the public key retrieved from the [Get private registries public key for an organization](https://docs.github.com/rest/private-registries/organization-configurations#get-private-registries-public-key-for-an-organization) endpoint. Required when `auth_type` is `token` or `username_password`. Should be omitted for OIDC auth types.
Pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$
body.identity_mapping_namestringOptionalThe JFrog identity mapping name. Optional for `oidc_jfrog` auth type.
body.jfrog_oidc_provider_namestringOptionalThe JFrog OIDC provider name. Required when `auth_type` is `oidc_jfrog`.
body.key_idstringOptionalThe ID of the key you used to encrypt the secret. Required when `auth_type` is `token` or `username_password`. Should be omitted for OIDC auth types.
body.namespacestringOptionalThe Cloudsmith organization namespace. Required when `auth_type` is `oidc_cloudsmith`.
body.registry_typestringRequired within parentThe registry type.
One of: maven_repository, nuget_feed, goproxy_server, npm_registry, rubygems_server, cargo_registry, composer_repository, docker_registry, git_source, helm_registry, hex_organization, hex_repository, pub_repository, python_index, terraform_registry
body.replaces_basebooleanOptionalWhether this private registry should replace the base registry (e.g., npmjs.org for npm, rubygems.org for rubygems). When set to `true`, Dependabot will only use this registry and will not fall back to the public registry. When set to `false` (default), Dependabot will use this registry for scoped packages but may fall back to the public registry for other packages.
Default: false
body.role_namestringOptionalThe AWS IAM role name. Required when `auth_type` is `oidc_aws`.
body.selected_repository_idsarrayOptionalAn array of repository IDs that can access the organization private registry. You can only provide a list of repository IDs when `visibility` is set to `selected`. You can manage the list of selected repositories using the [Update a private registry for an organization](https://docs.github.com/rest/private-registries/organization-configurations#update-a-private-registry-for-an-organization) endpoint. This field should be omitted if `visibility` is set to `all` or `private`.
body.selected_repository_ids[]integerEach item
body.service_accountstringOptionalThe GCP service account email to impersonate. Optional for `oidc_gcp` auth type. If omitted, the federated token is used directly (direct WIF).
body.service_slugstringOptionalThe Cloudsmith service account slug. Required when `auth_type` is `oidc_cloudsmith`.
body.tenant_idstringOptionalThe tenant ID of the Azure AD application. Required when `auth_type` is `oidc_azure`.
body.urlstringRequired within parentThe URL of the private registry.
Format: uri
body.usernameJSONOptional
body.username (anyOf 1)stringAlternativeThe username to use when authenticating with the private registry. This field should be omitted if the private registry does not require a username for authentication.
body.username (anyOf 2)nullAlternative
body.visibilitystringRequired within parentWhich type of organization repositories have access to the private registry. `selected` means only the repositories specified by `selected_repository_ids` can access the private registry.
One of: all, private, selected
body.workload_identity_providerstringOptionalThe full resource name of the GCP Workload Identity Provider (e.g. `projects/<NUM>/locations/global/workloadIdentityPools/<POOL>/providers/<PROVIDER>`). Required when `auth_type` is `oidc_gcp`.

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Create a private registry for an organization — response body

Referenced models: Create a private registry for an organization — response body

Create a private registry for an organization — response body
FieldTypePresenceDescription and constraints
$objectRootPrivate registry configuration for an organization
account_idstringOptionalThe AWS account ID.
api_hoststringOptionalThe Cloudsmith API host.
audiencestringOptionalThe OIDC audience.
auth_typestringOptionalThe authentication type for the private registry.
Known values: token, username_password, oidc_azure, oidc_aws, oidc_jfrog, oidc_cloudsmith, oidc_gcp, anonymous
aws_regionstringOptionalThe AWS region.
client_idstringOptionalThe client ID of the Azure AD application.
created_atstringRequired within parentFormat: date-time
domainstringOptionalThe CodeArtifact domain.
domain_ownerstringOptionalThe CodeArtifact domain owner.
identity_mapping_namestringOptionalThe JFrog identity mapping name.
jfrog_oidc_provider_namestringOptionalThe JFrog OIDC provider name.
namestringRequired within parentThe name of the private registry configuration.
namespacestringOptionalThe Cloudsmith organization namespace.
registry_typestringRequired within parentThe registry type.
Known values: maven_repository, nuget_feed, goproxy_server, npm_registry, rubygems_server, cargo_registry, composer_repository, docker_registry, git_source, helm_registry, hex_organization, hex_repository, pub_repository, python_index, terraform_registry
replaces_basebooleanOptionalWhether this private registry replaces the base registry (e.g., npmjs.org for npm, rubygems.org for rubygems). When `true`, Dependabot will only use this registry and will not fall back to the public registry. When `false` (default), Dependabot will use this registry for scoped packages but may fall back to the public registry for other packages.
Default: false
role_namestringOptionalThe AWS IAM role name.
selected_repository_idsarrayOptionalAn array of repository IDs that can access the organization private registry when `visibility` is set to `selected`.
selected_repository_ids[]JSONEach item
selected_repository_ids[] (anyOf 1)integerAlternative
selected_repository_ids[] (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
service_accountstringOptionalThe GCP service account email to impersonate. If omitted, the federated token is used directly (direct WIF).
service_slugstringOptionalThe Cloudsmith service account slug.
tenant_idstringOptionalThe tenant ID of the Azure AD application.
updated_atstringRequired within parentFormat: date-time
urlstringOptionalThe URL of the private registry.
Format: uri
usernamestringOptionalThe username to use when authenticating with the private registry.
visibilitystringRequired within parentWhich type of organization repositories have access to the private registry. `selected` means only the repositories specified by `selected_repository_ids` can access the private registry.
Known values: all, private, selected
workload_identity_providerstringOptionalThe full resource name of the GCP Workload Identity Provider (e.g. `projects/<NUM>/locations/global/workloadIdentityPools/<POOL>/providers/<PROVIDER>`).

SDK function policy ID: github.private_registries_create_org_private_registry. Catalog operation: private-registries/create-org-private-registry. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"X-GitHub-Api-Version": "2026-03-10", "User-Agent": "Alter", "Accept": "application/vnd.github+json"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.