DEVELOPER DOCUMENTATION / OPENAPI 3.0
Build on your registry.
Automate registries, scopes, packages, publisher keys, and recipient download access with a straightforward JSON API.
GET STARTED
Your first request
Generate a management API key in Organization → API keys, grant it npm:package:read, and send it as a bearer token. The key acts within the organization that created it.
curl https://privatenpm.com/api/v1/registries \ -H "Authorization: Bearer $API_KEY"The JSON response includes your private registries and the shared registry. Save the returned IDs for operations that target a registry.
01 / ACCESS
Authentication
Every management endpoint requires an organization API key in the Authorization: Bearer header. Give each integration only the permissions shown on the operations it calls. A 401 means the key is missing or invalid; a 403 means it lacks permission.
Management API keys call this API. Publisher keys authenticate npm publish and package maintenance. Download keys grant registry read access to recipients. Treat all three as secrets; issued publisher and download key values appear only once.
02 / CONVENTIONS
Requests and responses
JSON over HTTPS
Use https://privatenpm.com/api/v1 as the base URL. Send Content-Type: application/json when there is a request body. Omit optional properties you are not setting.
Pagination
List endpoints that return nextPageToken can be paged by sending that value as pageToken. Continue until no token is returned.
Safe retries
Operations marked “Idempotency-Key supported” accept a unique Idempotency-Key header. Reuse the same key when retrying the same request.
Errors
Failures return JSON with a stable code and readable message. Handle 429 with backoff; 409 indicates a conflict or stale update.
{ "code": "permission_denied", "message": "This API key cannot perform this action." }03 / WORKFLOWS
What you can build
Publish from CI
- Create package metadata and record the package ID.
- Issue a publisher key limited to the registry or package, with publish permission.
- Store the one-time secret in your CI secret store and publish the tarball with npm.
Deliver recipient access
- Issue a download key for the purchased package IDs.
- Show the one-time secret to the recipient over a secure channel.
- Rotate or revoke the key when access changes.
04 / EVENTS
Webhooks
Register HTTPS endpoints under Settings → Webhooks (Growth and up) and subscribe to the event types below. Every delivery POSTs a signed JSON envelope to your endpoint; verify the Standard Webhooks webhook-id, webhook-timestamp and webhook-signature headers against the raw body before acting on it. Delivery is at least once and unordered — deduplicate by event id. Events are change notifications, not snapshots: fetch current state through this API when you need it.
{ "schema_version": 1, "id": "evt_example", "type": "npm_package.published", "tenant_id": "ten_example", "created_at": "2026-09-21T12:00:00Z", "data": { "resource_type": "npm_package", "resource_id": "rpkg_example", "action": "published", "actor_id": "usr_example" } }Subscribing to * includes future event types. The Send test event action delivers webhook.test, which shares this envelope and is sent even when the subscription excludes other types. The webhooks guide walks through verification, testing and retries.
Packages
npm_security.createdAn administrator enabled a release security watch. The envelope carries its version ID, never inventory or evidence.
npm_security.updatedSecurity evidence, watch configuration or suppression changed. Read the release security page for current findings.
npm_inspection_report.createdAn administrator saved a dated inspection report; the envelope contains its identifier, never the report body.
npm_package.createdA package was created in a registry.
npm_package.updatedPackage metadata, visibility or a dist-tag changed.
npm_package.deletedA package was deleted.
npm_package.publishedA version was published.
npm_package.unpublishedA version was unpublished; its number stays tombstoned.
PyPI projects
pypi_upstream_policy.updatedA registry manager changed the public PyPI name policy.
pypi_project.createdA project was created in a PyPI registry.
pypi_project.updatedProject metadata changed or a release was yanked or unyanked.
pypi_project.deletedA project was deleted; its name stays tombstoned.
pypi_project.publishedA release file was uploaded.
pypi_project.unpublishedA release or file was removed; its filename stays tombstoned.
Files packages
files_package.createdA package was created in a files registry.
files_package.updatedA channel moved or a download link was created.
files_package.deletedA package was deleted; its name stays tombstoned.
files_package.publishedA version's objects were uploaded.
files_package.unpublishedA version was deleted; its number stays tombstoned.
Registries
npm_registry.createdA private registry was created.
npm_registry.updatedA registry's display name or hostname changed.
npm_registry.deletedA private registry was deleted.
Scopes
npm_scope.createdA scope was reserved, including your shared-registry scope.
npm_scope.deletedA scope reservation was removed.
Publisher keys
npm_token.createdA publisher key was issued.
npm_token.revokedA publisher key was revoked.
Trusted publishers
npm_trusted_publisher.createdA trusted CI (OIDC) publisher was configured for a package.
npm_trusted_publisher.updatedA package's trusted CI publisher configuration changed.
npm_trusted_publisher.deletedA package's trusted CI publisher was removed.
Domains
registry_domain.createdA custom registry domain was requested.
registry_domain.updatedDomain verification or certificate status changed.
registry_domain.revokedA domain was revoked and stops serving the registry.
Download keys
registry_download_key.createdA download key was issued, including through the recipient portal.
registry_download_key.updatedA key's access rule or recipient link changed.
registry_download_key.revokedA download key was revoked.
Recipients
registry_recipient.createdA recipient was created, including by upsert.
registry_recipient.updatedA recipient was renamed, suspended or resumed.
registry_recipient_portal.createdA recipient portal invitation was created.
registry_recipient_portal.revokedA portal invitation was revoked, revoking the keys issued through it.
API REFERENCE
Registries
Registries
List registries
/api/v1/registriesIncludes the shared registry and your private registries.
npm:package:read Response 200 RegistryList
View response fields
registriesRegistry[] Registries
Create a private registry
/api/v1/registriesThe hostname is provisioned with the registry, so the key also needs registry:domain:manage. Save the DNS verification challenge returned here.
npm:registry:manage JSON request body CreateRegistry
displayNamestring requiredhostnamestring requiredstorageRegionglobal | eu | us Where package files are stored. Defaults to global (replicated worldwide). Fixed once the registry is created; a region this installation has no storage for is refused.
Response 201 Registry
View response fields
createdAtdate-time displayNamestring formatstring hostnamestring idstring kindshared | private storageRegionglobal | eu | us Where package files are stored. Shared registries are global.
tenantIdstring verificationChallengestring verificationExpiresAtdate-time Registries
Delete an empty private registry
/api/v1/registries/{id}A registry with packages, scopes, domains or credentials cannot be deleted.
npm:registry:manage Parameters
idpathstringResponse 204
No response body.
Registries
Get the public-package policy
/api/v1/registries/{id}/upstream-policyReturns the caller's policy for this registry. A missing row is mode off with etag 0.
npm:registry:manage Parameters
idpathstringResponse 200 UpstreamPolicy
View response fields
allowPatternsstring[] blockPatternsstring[] etagstring forwardAuditboolean minReleaseAgeHoursinteger modeoff | public | allowlist registryIdstring updatedAtdate-time Registries
Replace the public-package policy
/api/v1/registries/{id}/upstream-policySend the etag from the last read to refuse a stale write. A non-off mode requires public package caching on the plan.
npm:registry:manage Parameters
idpathstringJSON request body UpdateUpstreamPolicy
allowPatternsstring[] path.Match globs, such as react or @types/*. Used when mode is allowlist.
blockPatternsstring[] Always win.
etagstring Policy etag from the last read. Omit to skip the check.
forwardAuditboolean minReleaseAgeHoursinteger Hide versions published upstream more recently than this. 72 is a common delay.
modeoff | public | allowlist requiredResponse 200 UpstreamPolicy
View response fields
allowPatternsstring[] blockPatternsstring[] etagstring forwardAuditboolean minReleaseAgeHoursinteger modeoff | public | allowlist registryIdstring updatedAtdate-time API REFERENCE
Scopes
Scopes
List registry scopes
/api/v1/registries/{registryId}/scopesnpm:package:read Parameters
registryIdpathstringResponse 200 ScopeList
View response fields
scopesScope[] Scopes
Create a scope in a private registry
/api/v1/registries/{registryId}/scopesnpm:scope:manage Parameters
registryIdpathstringJSON request body ScopeName
namestring requiredWith or without the leading @.
Response 201 Scope
View response fields
createdAtdate-time idstring namestring registryIdstring Scopes
Delete an unused scope
/api/v1/scopes/{id}npm:scope:manage Parameters
idpathstringResponse 204
No response body.
API REFERENCE
Packages
Packages
List packages
/api/v1/packagesquery matches package-name words by prefix. Follow nextPageToken until empty.
npm:package:read Parameters
registryIdquerystringqueryquerystringpageSizequeryint32pageTokenquerystringResponse 200 PackageList
View response fields
nextPageTokenstring packagesPackage[] Packages
Create package metadata
/api/v1/packagesPublish a tarball with npm using a publisher key. Supports Idempotency-Key.
npm:package:create Idempotency-Key supportedJSON request body CreatePackage
descriptionstring namestring requiredregistryIdstring requiredvisibilityprivate | public Response 201 Package
View response fields
createdAtdate-time descriptionstring etagstring idstring namestring registryIdstring updatedAtdate-time visibilityprivate | public Packages
Delete an empty package
/api/v1/packages/{id}npm:package:delete Parameters
idpathstringResponse 204
No response body.
Packages
Get package
/api/v1/packages/{id}npm:package:read Parameters
idpathstringResponse 200 Package
View response fields
createdAtdate-time descriptionstring etagstring idstring namestring registryIdstring updatedAtdate-time visibilityprivate | public Packages
Update package metadata
/api/v1/packages/{id}Send the latest etag to reject stale edits.
npm:package:update Parameters
idpathstringJSON request body UpdatePackage
descriptionstring etagstring visibilityprivate | public Response 200 Package
View response fields
createdAtdate-time descriptionstring etagstring idstring namestring registryIdstring updatedAtdate-time visibilityprivate | public Packages
Remove a dist tag
/api/v1/packages/{packageId}/dist-tags/{tag}npm:package:update Parameters
packageIdpathstringtagpathstringResponse 204
No response body.
Packages
Set a dist tag
/api/v1/packages/{packageId}/dist-tags/{tag}npm:package:update Parameters
packageIdpathstringtagpathstringJSON request body TagVersion
versionstring requiredResponse 200 DistTag
View response fields
tagstring versionstring Packages
Remove trusted CI publisher
/api/v1/packages/{packageId}/trusted-publisherregistry:credential:manage Parameters
packageIdpathstringResponse 204
No response body.
Packages
Get trusted CI publisher
/api/v1/packages/{packageId}/trusted-publisherAnswers 404 when the package has no trusted publisher.
registry:credential:manage Parameters
packageIdpathstringResponse 200 TrustedPublisher
View response fields
createdAtdate-time environmentstring idstring issuerstring packageIdstring providergithub | gitlab registryIdstring repositoryExternalIdstring Rename-stable repository id, learned from the first exchange when unset.
repositoryNamestring repositoryOwnerstring updatedAtdate-time workflowstring Packages
Configure trusted CI publisher
/api/v1/packages/{packageId}/trusted-publisherUpserts the one trusted publisher per package; you become the subject exchanged credentials act as. CI workflows then publish with OIDC alone (npm CLI >= 11.5.1, id-token: write on GitHub Actions or an NPM_ID_TOKEN id_token on GitLab CI with audience npm:<registry host>).
registry:credential:manage Parameters
packageIdpathstringJSON request body SetTrustedPublisher
environmentstring issuerstring OIDC issuer override for self-managed CI; empty pins the provider default.
providergithub | gitlab requiredrepositoryExternalIdstring Rename-stable repository id (GitHub repository_id, GitLab project_id).
repositoryNamestring requiredrepositoryOwnerstring requiredGitHub owner or GitLab namespace path.
workflowstring requiredWorkflow file path, e.g. .github/workflows/publish.yml or .gitlab-ci.yml.
Response 200 TrustedPublisher
View response fields
createdAtdate-time environmentstring idstring issuerstring packageIdstring providergithub | gitlab registryIdstring repositoryExternalIdstring Rename-stable repository id, learned from the first exchange when unset.
repositoryNamestring repositoryOwnerstring updatedAtdate-time workflowstring Packages
List versions and dist tags
/api/v1/packages/{packageId}/versionsnpm:package:read Parameters
packageIdpathstringResponse 200 VersionList
View response fields
distTagsDistTag[] versionsPackageVersion[] Packages
Record CI deployment inventory
/api/v1/packages/{packageId}/versions/{version}/security-evidenceEvidence must match the immutable artifact integrity. This records authenticated submitter testimony, not verified runtime reachability. Runtime agents are not supported by this endpoint. Never submit command lines, environment values or secrets.
npm:package:read Parameters
packageIdpathstringversionpathstringJSON request body SecurityEvidence
artifactIntegritystring requiredExact SHA-512 SRI of the watched artifact.
environmentstring requiredeventIdstring requiredStable source event ID; retries are deduplicated.
expiresAtdate-time requiredFuture expiry at most 30 days away.
imageDigeststring Optional immutable container image digest reported by CI.
kinddeployment requiredobservedAtdate-time requiredAt most 24 hours old or 5 minutes in the future.
Response 200
No response body.
Packages
Unpublish a version
/api/v1/versions/{id}npm:package:delete Parameters
idpathstringResponse 204
No response body.
Packages
Deprecate or undeprecate a version
/api/v1/versions/{id}/deprecationSet message to an empty string to clear deprecation.
npm:package:update Parameters
idpathstringJSON request body Deprecation
messagestring requiredResponse 204
No response body.
API REFERENCE
PyPI projects
PyPI projects
Delete a file
/api/v1/pypi/files/{id}The filename stays reserved and cannot be uploaded again. etag is the project etag.
pypi:project:delete Parameters
idpathstringetagquerystringResponse 204
No response body.
PyPI projects
List PyPI projects
/api/v1/pypi/projectsFollow nextPageToken until empty.
pypi:project:read Parameters
registryIdquerystringqueryquerystringpageSizequeryint32pageTokenquerystringResponse 200 PypiProjectList
View response fields
nextPageTokenstring projectsPypiProject[] PyPI projects
Delete a PyPI project
/api/v1/pypi/projects/{id}Refused while the project still has files unless force is true, which tombstones them first. The name stays reserved.
pypi:project:delete Parameters
idpathstringforcequerybooleanetagquerystringProject etag. Omit to skip the check.
Response 204
No response body.
PyPI projects
Get a PyPI project
/api/v1/pypi/projects/{id}pypi:project:read Parameters
idpathstringResponse 200 PypiProject
View response fields
createdAtdate-time displayNamestring etagstring idstring namestring registryIdstring summarystring updatedAtdate-time PyPI projects
List releases and files
/api/v1/pypi/projects/{id}/releasesReleases are newest first; each includes its live files.
pypi:project:read Parameters
idpathstringResponse 200 PypiReleaseList
View response fields
releasesPypiRelease[] PyPI projects
Delete a release
/api/v1/pypi/projects/{id}/releases/{version}Tombstones every file of the version. Filenames stay reserved.
pypi:project:delete Parameters
idpathstringversionpathstringetagquerystringResponse 204
No response body.
PyPI projects
Unyank a release
/api/v1/pypi/projects/{id}/releases/{version}/unyankpypi:project:publish Parameters
idpathstringversionpathstringJSON request body PypiEtag
etagstring Project etag. Omit to skip the check.
Response 204
No response body.
PyPI projects
Yank a release
/api/v1/pypi/projects/{id}/releases/{version}/yankYanked files stay downloadable and are marked on the simple index (PEP 592).
pypi:project:publish Parameters
idpathstringversionpathstringJSON request body PypiYank
etagstring Project etag. Omit to skip the check.
reasonstring Optional PEP 592 yank reason.
Response 204
No response body.
API REFERENCE
Files packages
Files packages
List files packages
/api/v1/files/packagesFollow nextPageToken until empty.
files:object:read Parameters
registryIdquerystringqueryquerystringpageSizequeryint32pageTokenquerystringResponse 200 FilesPackageList
View response fields
nextPageTokenstring packagesFilesPackage[] Files packages
Get a files package
/api/v1/files/packages/{id}files:object:read Parameters
idpathstringResponse 200 FilesPackage
View response fields
createdAtdate-time idstring namestring registryIdstring updatedAtdate-time visibilitystring Files packages
Point a channel at a version
/api/v1/files/packages/{id}/channelsChannels are mutable pointers such as latest.
files:object:write Parameters
idpathstringJSON request body FilesChannelUpdate
channelstring requiredversionstring requiredResponse 204
No response body.
Files packages
Create a signed download link
/api/v1/files/packages/{id}/download-linksThe token is shown once. Prefix path with the registry host — and the slug, on the shared files host — to form the URL. Every download is ledgered.
files:object:write Parameters
idpathstringJSON request body FilesDownloadLinkCreate
lifetimeSecondsint64 required15 minutes (900) to 7 days (604800).
pathstring requiredversionstring requiredResponse 200 FilesDownloadLink
View response fields
expiresAtdate-time pathstring Protocol path /-/dl/{token}. Prefix the registry host.
tokenstring Shown once.
Files packages
List versions and channels
/api/v1/files/packages/{id}/versionsLive versions and the channels that point at them.
files:object:read Parameters
idpathstringResponse 200 FilesVersionList
View response fields
channelsFilesChannel[] versionsFilesVersion[] Files packages
Delete a version
/api/v1/files/packages/{id}/versions/{version}Tombstones the version. The version string stays reserved.
files:object:delete Parameters
idpathstringversionpathstringResponse 204
No response body.
Files packages
List objects in a version
/api/v1/files/versions/{id}/objectsid is the version id. Follow nextPageToken until empty.
files:object:read Parameters
idpathstringpageSizequeryint32pageTokenquerystringResponse 200 FilesObjectList
View response fields
nextPageTokenstring objectsFilesObject[] API REFERENCE
Publisher keys
Publisher keys
List publisher keys
/api/v1/publisher-keysregistry:credential:manage Parameters
pageSizequeryint32pageTokenquerystringResponse 200 PublisherKeyList
View response fields
keysPublisherKey[] nextPageTokenstring Publisher keys
Issue a publisher key
/api/v1/publisher-keysThe secret is shown once. Not idempotent; a retry issues a new key.
registry:credential:manage JSON request body IssuePublisherKey
allPackagesboolean expiresAtdate-time namestring requiredpackageIdsstring[] Packages of the registry: npm packages, PyPI projects or Files packages.
permissionsmetadata:read | tarball:read | identity:read | package:publish | dist-tag:write | package:unpublish | npm:upstream:read | pypi:project:read | pypi:project:publish | pypi:project:delete | files:object:read | files:object:write | files:object:delete[] requiredOperations the key may perform. They must belong to the format of the registry in registryIds; identity:read serves every format. npm: metadata:read, tarball:read, npm:upstream:read, package:publish, dist-tag:write, package:unpublish. PyPI: pypi:project:read, pypi:project:publish, pypi:project:delete. Files: files:object:read, files:object:write, files:object:delete.
registryIdsstring[] requiredscopeIdsstring[] npm scopes (npm registries only).
userIdstring Omit for the caller.
Response 201 IssuedPublisherKey
View response fields
keyPublisherKey secretstring Shown once.
Publisher keys
Revoke a publisher key
/api/v1/publisher-keys/{id}registry:credential:manage Parameters
idpathstringResponse 204
No response body.
Publisher keys
Get publisher key metadata
/api/v1/publisher-keys/{id}The secret is never returned here.
registry:credential:manage Parameters
idpathstringResponse 200 PublisherKey
View response fields
allPackagesboolean createdAtdate-time displayPrefixstring expiresAtdate-time idstring lastUsedAtdate-time namestring packageIdsstring[] permissionsstring[] registryIdsstring[] revokedboolean scopeIdsstring[] subjectKindstring Always publisher.
userIdstring Publisher keys
Rotate a publisher key
/api/v1/publisher-keys/{id}/rotateSave the new secret; the old one stops working. Not idempotent; a retry rotates again.
registry:credential:manage Parameters
idpathstringResponse 200 IssuedPublisherKey
View response fields
keyPublisherKey secretstring Shown once.
API REFERENCE
Recipients
Recipients
Search recipients
/api/v1/recipientsMatches recipient names and external references; omit query to list all.
registry:download_key:manage Parameters
queryquerystringResponse 200 RecipientList
View response fields
recipientsRecipient[] Recipients
Create or update a recipient
/api/v1/recipientsUpserts by externalRef, so a retry with the same reference returns the same recipient instead of duplicating it.
registry:download_key:manage JSON request body UpsertRecipient
externalRefstring requiredYour stable reference for this recipient, such as an account or team ID.
namestring requiredResponse 200 Recipient
View response fields
createdAtdate-time externalRefstring idstring namestring suspendedAtdate-time updatedAtdate-time Recipients
Get a recipient
/api/v1/recipients/{id}registry:download_key:manage Parameters
idpathstringResponse 200 Recipient
View response fields
createdAtdate-time externalRefstring idstring namestring suspendedAtdate-time updatedAtdate-time Recipients
Suspend or resume a recipient
/api/v1/recipients/{id}A suspended recipient's download keys stop working until it is resumed; use this for refunds and chargebacks.
registry:download_key:manage Parameters
idpathstringJSON request body RecipientSuspension
suspendedboolean requiredResponse 200 Recipient
View response fields
createdAtdate-time externalRefstring idstring namestring suspendedAtdate-time updatedAtdate-time API REFERENCE
Download keys
Download keys
List download keys
/api/v1/download-keysregistry:download_key:manage Parameters
pageSizequeryint32pageTokenquerystringResponse 200 DownloadKeyList
View response fields
keysDownloadKey[] nextPageTokenstring Download keys
Issue a recipient download key
/api/v1/download-keysSave the returned secret; an admin can reveal it again in the dashboard. Not idempotent; a retry issues a new key.
registry:download_key:manage JSON request body IssueDownloadKey
allPackagesboolean expiresAtdate-time externalRefstring Your stable reference for this key, such as an order ID. Required by the ensure operation.
issuedTostring requirednamestring requirednewRecipientNamestring Create and link a recipient with this name. Mutually exclusive with recipientId.
packageIdsstring[] recipientIdstring Link the key to this recipient; the recipient name becomes issuedTo.
registryIdstring requiredscopeIdstring Response 201 IssuedDownloadKey
View response fields
keyDownloadKey secretstring The bearer secret. Stored encrypted; ensure returns it again and an admin can reveal it in the dashboard.
Download keys
Ensure a recipient download key
/api/v1/download-keys/ensureOne stable key per recipient and externalRef; a retry returns the same key and secret, and changed access (packageIds, scopeId, allPackages) is applied to it. Requires recipientId and externalRef; upsert the recipient first.
registry:download_key:manage JSON request body IssueDownloadKey
allPackagesboolean expiresAtdate-time externalRefstring Your stable reference for this key, such as an order ID. Required by the ensure operation.
issuedTostring requirednamestring requirednewRecipientNamestring Create and link a recipient with this name. Mutually exclusive with recipientId.
packageIdsstring[] recipientIdstring Link the key to this recipient; the recipient name becomes issuedTo.
registryIdstring requiredscopeIdstring Response 200 IssuedDownloadKey
View response fields
keyDownloadKey secretstring The bearer secret. Stored encrypted; ensure returns it again and an admin can reveal it in the dashboard.
Download keys
Revoke a download key
/api/v1/download-keys/{id}registry:download_key:manage Parameters
idpathstringResponse 200 DownloadKey
View response fields
allPackagesboolean createdAtdate-time credentialVersionstring displayPrefixstring expiresAtdate-time externalRefstring idstring issuedTostring lastUsedAtdate-time namestring packageIdsstring[] recipientIdstring registryIdstring revokedAtdate-time scopeIdstring Download keys
Get download key metadata
/api/v1/download-keys/{id}registry:download_key:manage Parameters
idpathstringResponse 200 DownloadKey
View response fields
allPackagesboolean createdAtdate-time credentialVersionstring displayPrefixstring expiresAtdate-time externalRefstring idstring issuedTostring lastUsedAtdate-time namestring packageIdsstring[] recipientIdstring registryIdstring revokedAtdate-time scopeIdstring Download keys
Change download access
/api/v1/download-keys/{id}Supply exactly one of allPackages, scopeId or packageIds.
registry:download_key:manage Parameters
idpathstringJSON request body DownloadAccess
allPackagesboolean packageIdsstring[] scopeIdstring Response 200 DownloadKey
View response fields
allPackagesboolean createdAtdate-time credentialVersionstring displayPrefixstring expiresAtdate-time externalRefstring idstring issuedTostring lastUsedAtdate-time namestring packageIdsstring[] recipientIdstring registryIdstring revokedAtdate-time scopeIdstring Download keys
Rotate a download key
/api/v1/download-keys/{id}/rotateSave the new secret. Not idempotent; a retry rotates again.
registry:download_key:manage Parameters
idpathstringResponse 200 IssuedDownloadKey
View response fields
keyDownloadKey secretstring The bearer secret. Stored encrypted; ensure returns it again and an admin can reveal it in the dashboard.
API REFERENCE
Transfers
Transfers
List transfers
/api/v1/transfersPages the transfer ledger (one row per observed content transfer), newest first. Unset filters match everything; startTime is inclusive, endTime exclusive. Follow nextPageToken until empty.
registry:transfer:read Parameters
registryIdquerystringformatquerystringpackageNamequerystringversionquerystringdirectionquerydownload | publish | upstream_servestatusquerycomplete | partial | aborted | redirectedcredentialKindquerypublisher_key | download_key | trusted_publisher | sessioncredentialIdquerystringrecipientIdquerystringuserIdquerystringclientIpquerystringAn IP address or a CIDR range.
countryquerystringISO 3166-1 alpha-2.
clientquerystringParsed client token, e.g. `npm/10.8.1`.
ciquerybooleanContinuous-integration clients only (or exclude them).
startTimequerydate-timeendTimequerydate-timepageSizequeryint32pageTokenquerystringResponse 200 TransferList
View response fields
nextPageTokenstring prevPageTokenstring transfersTransfer[] Transfers
Summarize transfers
/api/v1/transfers/summaryTotals the filtered range by one dimension. A day grouping over only registry/format/direction/range filters reads the daily aggregate; every other combination groups the ledger.
registry:transfer:read Parameters
groupByqueryday | package | version | credential | recipient | country | clientregistryIdquerystringformatquerystringpackageNamequerystringversionquerystringdirectionquerydownload | publish | upstream_servestatusquerycomplete | partial | aborted | redirectedcredentialKindquerypublisher_key | download_key | trusted_publisher | sessioncredentialIdquerystringrecipientIdquerystringuserIdquerystringclientIpquerystringAn IP address or a CIDR range.
countryquerystringISO 3166-1 alpha-2.
clientquerystringParsed client token, e.g. `npm/10.8.1`.
ciquerybooleanstartTimequerydate-timeendTimequerydate-timeResponse 200 TransferSummaryList
View response fields
groupsTransferSummaryGroup[] totalBytesint64 totalRequestsint64 API REFERENCE
Audit log
Audit log
List audit log entries
/api/v1/audit-logsPages the organization's audit log, newest first. Follow nextPageToken until empty.
audit:read Parameters
userIdquerystringresourceTypequerystringresourceIdquerystringactionquerycreated | updated | deleted | accessedcredentialIdquerystringThe credential the change was made with (session, API key or registry token ID).
startTimequerydate-timeendTimequerydate-timepageSizequeryint32pageTokenquerystringResponse 200 AuditLogList
View response fields
auditLogsAuditLog[] nextPageTokenstring Ready to build?
Create a management key with the permissions your integration needs, or import the OpenAPI file into your client tooling.
Create an API key ↗Download OpenAPI YAML ↗