API schemas
Named request and response objects of the REST API, sorted by name. Field names of nested inline objects are dotted; [] marks array elements and * map values.
Schemas
ActivityEntry
A ProjectActivityEntry with the actor's and the subject's names resolved.
Includes all fields of ProjectActivityEntry.
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | Audit action, e.g. project.member_added, project.repository_created. |
actor | string | yes | Username or token name of the actor; empty when unknown. |
actor_name | string | yes | Display name of the actor: the recorded name, else the user's current name, else system; empty when unknown. |
actor_type | string | no | Nullable. One of: user, system, token, sso. |
id | string (uuid) | yes | - |
message | string | yes | - |
repository_id | string (uuid) | no | Nullable. |
resource_id | string | no | Nullable. |
resource_type | string | no | Nullable. |
subject | AuditSubject | yes | Nullable. |
timestamp | string (date-time) | yes | - |
ActivityPage
| Field | Type | Required | Description |
|---|---|---|---|
data | array of ActivityEntry | yes | - |
has_more | boolean | yes | True when entries follow this page. |
next_cursor | string | no | Pass as cursor to fetch the next page. Absent when has_more is false. |
per_page | integer | yes | - |
AdminToken
Includes all fields of Token.
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
created_by | string | no | Username that minted a project token. Nullable. |
expires_at | string (date-time) | no | Nullable. |
id | string (uuid) | no | - |
kind | string | no | One of: access, deploy. |
last_used_at | string (date-time) | no | Nullable. |
name | string | no | - |
project | string | no | Project of a project token. Nullable. |
project_role | string | no | Nullable. One of: viewer, developer. |
scopes | array of string | no | - |
user_id | string (uuid) | no | - |
ApkSigningKey
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | yes | - |
fingerprint | string | yes | Hex SHA-256 of the DER encoded public key |
key_name | string | yes | File name of the public key in /etc/apk/keys |
public_key | string | yes | PEM public key |
updated_at | string (date-time) | yes | - |
ApkUploadResult
| Field | Type | Required | Description |
|---|---|---|---|
data | object | no | - |
data.arch | string | no | - |
data.branch | string | no | - |
data.id | string | no | - |
data.name | string | no | - |
data.repo | string | no | - |
data.sha256 | string | no | - |
data.size | integer (int64) | no | - |
data.version | string | no | - |
success | boolean | no | - |
AttestationAttachResult
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | yes | - |
artifact_type | string | yes | The referrer's OCI artifactType |
created | boolean | yes | False when an identical attestation was already attached |
kind | string | yes | One of: sbom, vex. |
predicate_type | string | yes | - |
referrer_digest | string | yes | - |
replaced | string | no | Digest of the earlier attestation this one replaced |
subject | string | yes | Digest of the image manifest the attestation is attached to |
AttestationAttachSettings
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes | - |
AttestationKey
| Field | Type | Required | Description |
|---|---|---|---|
algorithm | string | no | ecdsa-p256, ecdsa-p384, ecdsa-p521 or ed25519. |
key_id | string | no | Hex sha256 of the DER public key. |
public_key_pem | string | no | - |
public_key_url | string | no | - |
source | string | no | One of: file, generated. |
AuditEntry
One audit log entry of the admin audit list.
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | - |
actor | string | yes | Username or token name recorded with the event; empty when unknown. |
actor_name | string | yes | Display name of the actor: the recorded name, else the user's current name, else system for background work; empty when unknown. |
details | object | no | Nullable. |
id | string (uuid) | yes | - |
ip | string | no | Nullable. |
repository_id | string (uuid) | no | Nullable. |
resource_id | string | no | Nullable. |
resource_type | string | no | Nullable. |
subject | AuditSubject | yes | What the event acted on, resolved from ids. Null for events that name nothing (logins, generic request rows). Nullable. |
target | string | no | The raw resource id. Nullable. |
timestamp | string (date-time) | yes | - |
AuditSubject
What an audit event acted on, resolved server-side. name is null when the subject is gone and the event did not record its name.
| Field | Type | Required | Description |
|---|---|---|---|
kind | string | yes | repository, package, project, user, group, token, bundle, permission_target, gpg_key, sso_provider, setting, or the raw resource type of an event kind without a dedicated one (storage_tier, storage_policy, ...). |
name | string | yes | Nullable. |
project | string | no | Name of the project the event belongs to. |
repository | string | no | Name of the repository the event belongs to. |
version | string | no | Package version, for package subjects that record one. |
Backup
| Field | Type | Required | Description |
|---|---|---|---|
completed_at | string (date-time) | no | Nullable. |
created_at | string (date-time) | no | - |
error_message | string | no | - |
id | string (uuid) | no | - |
size_bytes | integer | no | - |
started_at | string (date-time) | no | - |
status | string | no | One of: pending, in_progress, completed, failed. |
type | string | no | One of: full, metadata-only. |
Branding
Effective white-label settings (admin overrides layered over the branding.* configuration). Public: it carries nothing secret.
| Field | Type | Required | Description |
|---|---|---|---|
favicon_url | string | yes | - |
login_message | string | yes | Plain text with a tiny markdown subset (bold, italic, code, text); render it without innerHTML. |
logo_dark_url | string | yes | Logo for dark surfaces; empty means the built-in lockup. |
logo_light_url | string | yes | Logo for light surfaces; empty means the built-in lockup. Falls back to the dark logo when only that one is set. |
primary_color | string | yes | #rrggbb, empty for the built-in colour |
product_name | string | yes | - |
revision | string | yes | Changes whenever any value or image changes; used as the cache-busting query of the image URLs |
source_url | string | yes | Where the running source is offered (AGPL-3.0 section 13); never empty |
support_url | string | yes | http(s) or mailto URL; empty hides the link |
theme | BrandingTheme | no | Present only with a custom primary_color. Nullable. |
BrandingAdmin
| Field | Type | Required | Description |
|---|---|---|---|
defaults | BrandingDefaults | yes | - |
effective | Branding | yes | - |
overrides | BrandingOverrides | yes | - |
BrandingDefaults
Values the instance falls back to when no runtime override is set (configuration, else built-in).
| Field | Type | Required | Description |
|---|---|---|---|
login_message | string | yes | - |
primary_color | string | yes | - |
product_name | string | yes | - |
source_url | string | yes | - |
support_url | string | yes | - |
BrandingOverrides
Which fields currently come from a runtime (admin) override rather than the configuration.
| Field | Type | Required | Description |
|---|---|---|---|
favicon | boolean | yes | - |
login_message | boolean | yes | - |
logo_dark | boolean | yes | - |
logo_light | boolean | yes | - |
primary_color | boolean | yes | - |
product_name | boolean | yes | - |
source_url | boolean | yes | - |
support_url | boolean | yes | - |
BrandingPalette
Contrast-adjusted colours of one theme, derived from primary_color so text on the surface and on the button fill stays readable (WCAG AA).
| Field | Type | Required | Description |
|---|---|---|---|
primary | string | yes | - |
primary_contrast | string | yes | Text colour on a primary fill |
primary_soft | string | yes | Tinted background that primary text stays readable on |
BrandingTheme
| Field | Type | Required | Description |
|---|---|---|---|
dark | BrandingPalette | yes | - |
light | BrandingPalette | yes | - |
BrandingUpdate
Partial update: an absent field is left alone, a string sets the runtime override, null removes the override (back to the configured default).
| Field | Type | Required | Description |
|---|---|---|---|
login_message | string | no | Up to 2000 characters. Nullable. Maximum length: 2000. |
primary_color | string | no | #rrggbb. Nullable. |
product_name | string | no | 1-64 characters, no control characters. Nullable. Maximum length: 64. |
source_url | string | no | http(s) URL; cannot be empty. Nullable. |
support_url | string | no | http(s) or mailto URL; empty string hides the link. Nullable. |
BundlePromotion
| Field | Type | Required | Description |
|---|---|---|---|
bundle_id | string | yes | - |
completed_at | string (date-time) | yes | Nullable. |
error_message | string | yes | Nullable. |
from_stage | string | yes | Nullable. |
id | string | yes | - |
item_count | integer | yes | - |
notes | string | yes | - |
promoted_by | string | yes | - |
started_at | string (date-time) | yes | - |
status | string | yes | One of: in_progress, success, failed. |
target_repo_id | string | yes | - |
to_stage | string | yes | - |
ChecksumHit
| Field | Type | Required | Description |
|---|---|---|---|
algorithm | string | yes | One of: sha256, sha1, md5. |
checksum | string | yes | The checksum searched for, lowercase. |
filename | string | yes | File within the package; empty for the formats with no file name of their own (conda, conan, docker, go). |
format | string | yes | - |
name | string | yes | - |
repository | string | yes | - |
version | string | yes | - |
ChecksumResult
| Field | Type | Required | Description |
|---|---|---|---|
packages | array of ChecksumHit | yes | - |
total | integer | yes | Number of files carrying the checksum. |
CleanupPolicy
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
enabled | boolean | no | - |
id | string (uuid) | no | - |
keep_downloaded_since_days | integer | no | Nullable. |
keep_last_n | integer | no | Nullable. Minimum: 1. |
keep_since_days | integer | no | Nullable. |
last_run_at | string (date-time) | no | Nullable. |
last_run_deleted | integer | no | Nullable. |
last_run_error | string | no | Nullable. |
name | string | no | - |
name_pattern | string | no | - |
project_id | string (uuid) | no | Set for a project default policy. |
repo_id | string (uuid) | no | Empty for a project default policy. |
schedule_cron | string | no | - |
updated_at | string (date-time) | no | - |
CleanupPreview
| Field | Type | Required | Description |
|---|---|---|---|
dry_run | boolean | yes | - |
format | string | yes | - |
items | array of CleanupPreviewItem | yes | - |
repository | string | yes | - |
rows | integer | yes | Package rows a run would remove (one per file for formats that store files separately) |
truncated | boolean | yes | items is capped at 500 entries |
CleanupPreviewItem
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | - |
name | string | yes | - |
version | string | yes | - |
CompsUploadResult
| Field | Type | Required | Description |
|---|---|---|---|
code | string | no | - |
data | object | no | - |
data.blob_id | string | no | - |
data.repository | string | no | - |
error | string | no | - |
success | boolean | yes | - |
CreateFederationPeerRequest
| Field | Type | Required | Description |
|---|---|---|---|
base_url | string | yes | Base URL of the peer instance; validated against the outbound (SSRF) policy. |
ca_pem | string | no | PEM CA bundle to trust for the peer's TLS certificate. |
client_cert | string | no | PEM client certificate for mutual TLS. |
client_key | string | no | PEM private key of the client certificate. |
name | string | yes | - |
token | string | yes | Token the peer issued for this repository. |
CreateFederationTokenRequest
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | - |
DeclarativeObject
| Field | Type | Required | Description |
|---|---|---|---|
applied_at | string (date-time) | yes | - |
applied_hash | string | yes | - |
kind | string | yes | - |
name | string | yes | - |
object_id | string | yes | - |
DeclarativeObjectList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of DeclarativeObject | yes | - |
DependencyTrackEffective
| Field | Type | Required | Description |
|---|---|---|---|
api_key_set | boolean | no | - |
auto_push | boolean | no | - |
base_url | string | no | - |
enabled | boolean | no | - |
project_name | string | no | - |
project_version | string | no | - |
push_vex | boolean | no | - |
ready | boolean | no | Enabled with a URL and an API key. |
source | string | no | One of: none, global, repository. |
DependencyTrackOverride
| Field | Type | Required | Description |
|---|---|---|---|
api_key_set | boolean | no | - |
auto_push | boolean | no | Nullable. |
base_url | string | no | - |
enabled | boolean | no | - |
project_name | string | no | - |
project_version | string | no | - |
push_vex | boolean | no | Nullable. |
DependencyTrackPush
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | no | - |
bom_pushed_at | string (date-time) | no | Nullable. |
components | integer | no | - |
detail | string | no | - |
project_name | string | no | - |
project_uuid | string | no | - |
project_version | string | no | - |
state | string | no | One of: queued, running, done, skipped, failed. |
updated_at | string (date-time) | no | - |
vex_applied | integer | no | Findings carrying an analysis in Dependency-Track after the import. |
vex_pushed_at | string (date-time) | no | Nullable. |
vex_statements | integer | no | VEX statements sent (decisions matching a vulnerability Dependency-Track reports). |
DependencyTrackRepository
| Field | Type | Required | Description |
|---|---|---|---|
effective | DependencyTrackEffective | no | - |
override | DependencyTrackOverride | no | Nullable. |
DependencyTrackSettings
| Field | Type | Required | Description |
|---|---|---|---|
api_key_set | boolean | no | The API key is write-only; this tells whether one is stored. |
auto_push | boolean | no | Push the BOM on upload and after each scan. |
base_url | string | no | - |
enabled | boolean | no | - |
project_name | string | no | Project name template; empty means {repo}/{name}. |
project_version | string | no | Project version template; empty means {version}. |
push_vex | boolean | no | After Dependency-Track's analysis, push the VEX decisions. |
DependencyTrackTest
| Field | Type | Required | Description |
|---|---|---|---|
missing_permissions | array of string | no | - |
permissions | array of string | no | - |
version | string | no | - |
DockerGCBlob
| Field | Type | Required | Description |
|---|---|---|---|
digest | string | yes | - |
size | integer (int64) | yes | - |
DockerGCManifest
| Field | Type | Required | Description |
|---|---|---|---|
digest | string | yes | - |
image | string | yes | - |
size | integer (int64) | yes | - |
DockerGCReport
| Field | Type | Required | Description |
|---|---|---|---|
blob_refs_deleted | integer | yes | Blob records of the repository no manifest references any more |
blobs | array of DockerGCBlob | yes | - |
blobs_freed | integer | yes | Storage objects removed; in a dry run an upper bound that ignores sharing with other repositories |
bytes_freed | integer (int64) | yes | - |
dry_run | boolean | yes | - |
failures | integer | yes | Storage deletions that failed (logged server-side; the orphan collector retries them) |
grace_period_seconds | integer (int64) | yes | - |
manifests | array of DockerGCManifest | yes | - |
manifests_deleted | integer | yes | Untagged manifests deleted (would be, in a dry run) |
repository | string | yes | - |
truncated | boolean | yes | manifests/blobs are capped at 1000 entries each |
DockerGCRequest
| Field | Type | Required | Description |
|---|---|---|---|
dry_run | boolean | no | Report what would be deleted without deleting anything |
grace_period_seconds | integer (int64) | no | Minimum age of what may be deleted; 0 disables the grace period. Omitted: the configured workers.dockerGcGracePeriod. Minimum: 0. |
EndSessionResponse
| Field | Type | Required | Description |
|---|---|---|---|
end_session_url | string | yes | IdP RP-initiated logout URL (id_token_hint, client_id, post_logout_redirect_uri). |
Error
| Field | Type | Required | Description |
|---|---|---|---|
code | string | no | Error code |
details | string | no | Detailed error message |
error | string | yes | Error code |
FederationDeferredList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of FederationDeferredUnit | yes | - |
FederationDeferredUnit
A unit that could not be applied yet and is retried.
| Field | Type | Required | Description |
|---|---|---|---|
attempts | integer | yes | - |
first_seen_at | string (date-time) | yes | - |
last_error | string | yes | - |
next_attempt_at | string (date-time) | yes | - |
reason | string | yes | Why it was deferred (for example a missing dependency). |
seq | integer (int64) | yes | Peer log sequence of the unit. |
unit_key | string | yes | - |
FederationPeer
A remote instance this repository pulls changes from. Secrets (token, client key) are never returned; has_ca_pem and has_client_cert tell whether TLS material is stored.
| Field | Type | Required | Description |
|---|---|---|---|
applied_total | integer (int64) | yes | Units applied from this peer since the peer was added. |
backlog_units | integer (int64) | yes | Logged units still to apply. |
base_url | string | yes | Base URL of the peer instance. |
conflicts_total | integer (int64) | yes | Units that conflicted with local content and were resolved by the merge rules. |
created_at | string (date-time) | yes | - |
cursor_seq | integer (int64) | yes | Last peer log sequence applied locally. |
deferred_units | integer | yes | Units waiting for a dependency or a retry. |
enabled | boolean | yes | A disabled peer is not polled. |
error_count | integer | yes | Consecutive failed attempts. |
has_ca_pem | boolean | yes | - |
has_client_cert | boolean | yes | - |
id | string (uuid) | yes | - |
lag_seconds | number | yes | Age in seconds of the oldest unapplied change; 0 when caught up. |
last_attempt_at | string (date-time) | no | - |
last_error | string | yes | Error of the last failed attempt; empty when the last attempt succeeded. |
last_success_at | string (date-time) | no | - |
name | string | yes | - |
next_attempt_at | string (date-time) | no | - |
remote_head_seq | integer (int64) | yes | Peer's log head sequence as of the last successful contact. |
resync_requested | boolean | yes | A resync is queued and not yet started. |
state | string | yes | ok: caught up. lagging: behind the peer's head. error: the last attempt failed. pending: never synced yet. disabled: not polled. One of: ok, lagging, error, pending, disabled. |
FederationStatus
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes | Federation is on: the repository keeps a change log. |
head_seq | integer (int64) | yes | Highest sequence in the log. |
instance_id | string | yes | Identifier of this instance. |
log_id | string | yes | Identifier of this repository's log; changes when federation is disabled and enabled again. |
peers | array of FederationPeer | yes | - |
server_enabled | boolean | yes | Federation is enabled on the server (federation.enabled); when false no repository can be federated. |
supported | boolean | yes | Federation can be turned on for the repository: it is hosted, of a federation-capable format (raw, maven, npm, docker, helm, pypi, cargo, go, nuget), and federation is enabled on the server. |
tokens | array of FederationToken | yes | - |
tombstones | integer (int64) | yes | Logged deletions. |
units | integer (int64) | yes | Logged units. |
FederationToken
An inbound token a peer presents to pull this repository's log. The secret is shown once at creation and never again.
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | yes | - |
id | string (uuid) | yes | - |
last_used_at | string (date-time) | no | - |
name | string | yes | - |
revoked_at | string (date-time) | no | Set once the token is revoked. |
FederationTokenCreated
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | yes | - |
id | string (uuid) | yes | - |
name | string | yes | - |
token | string | yes | Clear-text token, returned only by this response. |
GPGKey
A signing key. Private key material is never part of the API.
| Field | Type | Required | Description |
|---|---|---|---|
active_global | boolean | no | Signs every deb, rpm and pacman repository that has no key of its own |
algorithm | string | no | ed25519, rsa2048, rsa4096, ... |
created_at | string (date-time) | no | Nullable. |
created_by | string | no | - |
expires_at | string (date-time) | no | Nullable. |
fingerprint | string | no | - |
id | string | no | UUID, or config for the read-only key configured through gpg.keyPath |
key_id | string | no | Long key id (last 16 hex digits of the fingerprint) |
name | string | no | - |
read_only | boolean | no | - |
repositories | array of string | no | Repositories this key is assigned to |
source | string | no | One of: imported, generated, auto, config. |
user_id | string | no | - |
Group
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
description | string | no | Nullable. |
id | string (uuid) | no | - |
name | string | no | - |
updated_at | string (date-time) | no | - |
GroupMember
| Field | Type | Required | Description |
|---|---|---|---|
role | string | no | - |
user_id | string (uuid) | no | - |
username | string | no | - |
HealthResponse
| Field | Type | Required | Description |
|---|---|---|---|
components | map of object | no | - |
components.*.message | string | no | - |
components.*.status | string | no | One of: ok, error. |
instance_id | string | no | Operator-configured instance name; omitted when OPENARTIFACT_INSTANCE_ID is empty |
status | string | no | Overall health status. One of: healthy, degraded. |
version | string | no | Application version |
LicenseBlockedError
Upload rejected by a license policy with action block.
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | One of: LICENSE_BLOCKED. |
error | string | yes | - |
licenses | array of string | yes | The package's detected licenses. |
policies | array of LicensePolicyViolation | yes | - |
LicenseMetadataUnreadableError
Upload rejected (422): the repository has an enabled license policy with action block and the package's license cannot be derived from the package file (a file type without readable metadata, a damaged archive), so only the client's own claims would decide the policy.
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | One of: LICENSE_METADATA_UNREADABLE. |
error | string | yes | - |
LicenseMetadataUnsafeError
Upload rejected (422): the package file's own metadata is oversized or ambiguous (a decompression bomb, or two candidate metadata files), so its licenses cannot be checked.
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | One of: LICENSE_METADATA_UNSAFE. |
error | string | yes | - |
LicensePolicy
| Field | Type | Required | Description |
|---|---|---|---|
action | string | no | Nullable. |
allowed_licenses | array of string | no | - |
created_at | string (date-time) | no | - |
denied_licenses | array of string | no | - |
description | string | no | Nullable. |
enabled | boolean | no | - |
id | string (uuid) | no | - |
name | string | no | - |
repo_id | string (uuid) | no | Nullable. |
updated_at | string (date-time) | no | - |
LicensePolicyUnavailableError
The license policies could not be read; the upload failed closed.
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | One of: LICENSE_POLICY_UNAVAILABLE. |
error | string | yes | - |
licenses | array of string | yes | - |
policies | array of LicensePolicyViolation | yes | - |
LicensePolicyViolation
| Field | Type | Required | Description |
|---|---|---|---|
action | string | no | One of: allow, warn, block. |
policy_id | string (uuid) | no | - |
policy_name | string | no | - |
violation | string | no | The violated rule, naming the offending license. |
LicenseScanResult
Result of one license scan of an artifact.
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | yes | - |
created_at | string (date-time) | yes | - |
id | string (uuid) | yes | - |
license_source | string | no | artifact: the licenses include ones read from the stored package file. client_declared: they only come from what a client declared (license properties) because the file declares no license, or cannot be read and no blocking policy applies. One of: artifact, client_declared. |
licenses | array of string | no | - |
quarantine_approved | boolean | yes | An admin approved the artifact for its current licenses; cleared when a re-scan finds different licenses. |
quarantined | boolean | yes | Downloads of the artifact answer 403 ARTIFACT_QUARANTINED until an admin approves it. |
repo_id | string (uuid) | yes | - |
scan_error | string | yes | Nullable. |
scan_status | string | yes | One of: pending, completed, failed. |
scanned_at | string (date-time) | yes | Nullable. |
spdx_expressions | array of string | no | - |
unresolved_licenses | array of string | no | Entries of licenses that are not SPDX expressions: raw text read from the artifact ("BSD", "BSD License"), kept as written and flagged for review. |
updated_at | string (date-time) | yes | - |
LicenseScanRunResult
Result of POST .../license/scan: the recorded license scan plus the policy violations it triggered.
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | yes | - |
created_at | string (date-time) | yes | - |
id | string (uuid) | yes | - |
license_source | string | no | artifact: the licenses include ones read from the stored package file. client_declared: they only come from what a client declared (license properties) because the file declares no license, or cannot be read and no blocking policy applies. One of: artifact, client_declared. |
licenses | array of string | no | - |
policy_violations | array of LicensePolicyViolation | yes | Always an array (empty when no policy is violated). |
quarantine_approved | boolean | yes | An admin approved the artifact for its current licenses; cleared when a re-scan finds different licenses. |
quarantined | boolean | yes | Downloads of the artifact answer 403 ARTIFACT_QUARANTINED until an admin approves it. |
repo_id | string (uuid) | yes | - |
scan_status | string | yes | One of: pending, completed, failed. |
scanned_at | string (date-time) | yes | Nullable. |
unresolved_licenses | array of string | no | Entries of licenses that are not SPDX expressions: raw text read from the artifact ("BSD", "BSD License"), kept as written and flagged for review. |
updated_at | string (date-time) | yes | - |
OIDCConfig
OIDC/OAuth 2.0 provider settings. client_secret is write-only: responses carry has_secret instead.
| Field | Type | Required | Description |
|---|---|---|---|
allowed_orgs | array of string | no | type github: organizations whose members may sign in (required). Groups are "org" and "org/team-slug", lower-case. |
allowed_tenants | array of string | no | Entra tenant IDs (GUIDs) allowed to sign in. Required for multi-tenant authorities. |
api_base_url | string | no | type github: API base URL (default https://api.github.com). |
auth_base_url | string | no | type github: base URL of GitHub Enterprise Server (default https://github.com). |
authorization_url | string | no | type oauth2: authorization endpoint. |
client_id | string | no | - |
client_secret | string | no | - |
email_claim | string | no | - |
graph_endpoint | string | no | Microsoft Graph base URL (default https://graph.microsoft.com). |
graph_groups | boolean | no | Resolve Entra groups overage through Microsoft Graph (needs a delegated User.Read access token; group_mapping keys are group object IDs). |
groups_claim | string | no | - |
has_secret | boolean | no | - |
hosted_domain | string | no | Google Workspace domain: sent as the hd authorization parameter and required in the hd claim. |
issuer | string | no | Issuer URL (required for type ""). https://accounts.google.com enforces email_verified; https://login.microsoftonline.com/{common|organizations|consumers}/v2.0 is a multi-tenant Entra authority and requires allowed_tenants. |
name_claim | string | no | - |
require_email_verified | boolean | no | Deny logins whose email is not verified by the IdP (always on for Google). |
scopes | array of string | no | Default: openid email profile (github: read:user user:email read:org). Request groups explicitly if the IdP needs it. |
token_url | string | no | type oauth2: token endpoint. |
type | string | no | Empty: standards-compliant OIDC (issuer discovery). github: GitHub / GitHub Enterprise Server (OAuth 2.0). oauth2: generic OAuth 2.0 with a userinfo endpoint. One of: ``, github, oauth2. |
userinfo_url | string | no | type oauth2: userinfo endpoint (subject is sub, else id). |
username_claim | string | no | - |
PackageDeleteResult
| Field | Type | Required | Description |
|---|---|---|---|
code | string | no | - |
data | object | no | - |
data.package_id | string (uuid) | no | - |
data.repository | string | no | - |
data.trashed | boolean | no | The package went to the trash and can be restored (absent for deb and rpm) |
error | string | no | - |
success | boolean | yes | - |
PackageDelta
| Field | Type | Required | Description |
|---|---|---|---|
delta_size | integer (int64) | no | - |
format | string | no | - |
from_filename | string | no | - |
from_sha256 | string | no | - |
to_filename | string | no | - |
to_sha256 | string | no | - |
PackageDeltaList
| Field | Type | Required | Description |
|---|---|---|---|
code | string | no | - |
data | array of PackageDelta | no | - |
error | string | no | - |
success | boolean | yes | - |
PackageDetail
One package version with the metadata and dependencies its format stores. Formats store different things: metadata lists what the format's table holds, dependencies what it declares (see the endpoint description for the formats that store none).
| Field | Type | Required | Description |
|---|---|---|---|
arch | string | yes | - |
created_at | string (date-time) | yes | - |
dependencies | array of object | yes | - |
dependencies[].kind | string | no | Role (runtime, dev, peer, optional, build, ...) or, for nuget, the target framework; as the format names it. |
dependencies[].name | string | yes | - |
dependencies[].version | string | no | Version requirement as the format writes it. |
description | string | no | - |
filename | string | yes | - |
files | array of object | yes | All the files of this version (one per architecture, classifier or distribution), this one included; at most 200. |
files[].arch | string | yes | - |
files[].filename | string | yes | - |
files[].id | string (uuid) | yes | - |
files[].sha256 | string | yes | - |
files[].size | integer (int64) | yes | - |
format | string | yes | - |
homepage | string | no | - |
id | string (uuid) | yes | - |
latest_version | string | yes | - |
license | string | no | - |
md5 | string | no | Only for the formats that record it. |
metadata | array of object | yes | Format-specific fields, ordered by key; empty values are left out. |
metadata[].key | string | yes | - |
metadata[].value | string | yes | - |
name | string | yes | - |
sha1 | string | no | Only for the formats that record it. |
sha256 | string | yes | - |
size | integer (int64) | yes | - |
summary | string | no | - |
updated_at | string (date-time) | yes | - |
version | string | yes | - |
version_count | integer | yes | Versions of the package this one belongs to. |
PackageFile
One row (file) of a repository's package listing.
| Field | Type | Required | Description |
|---|---|---|---|
arch | string | yes | - |
created_at | string (date-time) | yes | - |
filename | string | yes | - |
flagged | boolean | yes | A critical or high vulnerability, a secret finding or a quarantined scan result (latest scan of each type). |
format | string | yes | - |
id | string (uuid) | yes | Row id; the key of the package detail, download and scan endpoints. |
name | string | yes | - |
scanned_at | string (date-time) | no | Latest completed scan; absent when never scanned (security is then all zero). |
security | PackageSecurity | yes | - |
sha256 | string | yes | - |
size | integer (int64) | yes | - |
version | string | yes | - |
PackageGroup
One package (format and name) across its versions, from GET /api/v1/repositories/{name}/packages?group=package.
| Field | Type | Required | Description |
|---|---|---|---|
flagged | boolean | yes | - |
format | string | yes | - |
latest_version | string | yes | The most recently published version. |
name | string | yes | - |
scanned_at | string (date-time) | no | Latest completed scan of the latest version; absent when never scanned. |
security | PackageSecurity | yes | - |
size_bytes | integer (int64) | yes | Size of the latest version, all its files summed. |
updated_at | string (date-time) | yes | Latest modification of any version. |
version_count | integer | yes | - |
PackageSecurity
Vulnerability counts by severity.
| Field | Type | Required | Description |
|---|---|---|---|
critical | integer (int64) | yes | - |
high | integer (int64) | yes | - |
low | integer (int64) | yes | - |
medium | integer (int64) | yes | - |
PackageUploadResult
| Field | Type | Required | Description |
|---|---|---|---|
code | string | no | - |
data | object | no | Format-specific metadata of the stored package (name, version, arch, sha256, ...) |
error | string | no | - |
success | boolean | yes | - |
PermissionAssignment
| Field | Type | Required | Description |
|---|---|---|---|
principal_id | string (uuid) | yes | - |
principal_name | string | yes | - |
principal_type | string | yes | One of: user, group. |
PermissionTarget
| Field | Type | Required | Description |
|---|---|---|---|
actions | array of string | no | Items: one of: read, write, delete, manage, annotate. |
created_at | string (date-time) | no | - |
id | string (uuid) | no | - |
name | string | no | - |
path_pattern | string | no | - |
repository_filter | string | no | - |
updated_at | string (date-time) | no | - |
PipelineStage
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | - |
repo_id | string | no | UUID of the repository the stage must promote into; empty for any. |
PresignedPart
| Field | Type | Required | Description |
|---|---|---|---|
headers | map of string | yes | Headers that must be sent with the PUT |
method | string | yes | One of: PUT. |
part_number | integer | yes | - |
size | integer (int64) | yes | Exact size of the part in bytes |
upload_url | string | yes | Presigned URL accepting one PUT of exactly size bytes. The query string is a credential: do not log it. |
PresignedParts
| Field | Type | Required | Description |
|---|---|---|---|
expires_at | string (date-time) | yes | When the part URLs stop working |
parts | array of PresignedPart | yes | - |
PresignedPartsRequest
| Field | Type | Required | Description |
|---|---|---|---|
part_numbers | array of integer | yes | 1-based numbers of the parts to sign, at most the upload's part_count. Items: minimum: 1. |
PresignedUpload
| Field | Type | Required | Description |
|---|---|---|---|
expires_at | string (date-time) | yes | When the URL stops working |
headers | map of string | no | Headers that must be sent with the PUT |
id | string (uuid) | yes | - |
method | string | no | One of: PUT. |
multipart | boolean | no | True for a multipart upload: no upload_url is returned, fetch part URLs from the parts endpoint |
part_count | integer | no | Multipart only: number of parts, numbered from 1 |
part_size | integer (int64) | no | Multipart only: size of every part but the last |
upload_url | string | no | Single upload only: presigned URL accepting one PUT of exactly size bytes. The query string is a credential: do not log it. |
PresignedUploadRequest
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | no | Content type to record; detected from the content when omitted |
multipart | boolean | no | Upload the object in parts: PUT each part to a URL from the parts endpoint, then call complete. Required above 5 GiB; not allowed for an empty file. |
part_size | integer (int64) | no | Part size in bytes of a multipart upload (5 MiB to 4000 MiB, at most 10000 parts); the server picks one (64 MiB or more) when omitted. Minimum: 5242880. Maximum: 4194304000. |
path | string | yes | Artifact path inside the repository (no empty, '.' or '..' segments) |
sha256 | string | yes | SHA-256 of the content; verified at completion. Pattern: ^[0-9a-fA-F]{64}$. |
size | integer (int64) | yes | Exact size in bytes; signed into the upload URL. Above 5 GiB (5368709120) multipart must be true; the limit is 5 TiB. Minimum: 0. Maximum: 5497558138880. |
PresignedUploadResult
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | - |
path | string | yes | - |
sha256 | string | yes | - |
size | integer (int64) | yes | - |
Project
| Field | Type | Required | Description |
|---|---|---|---|
allow_public_repos | boolean | no | Whether repositories of this project may be public. |
allowed_formats | array of string | no | Package formats repositories of this project may use. null allows every format. Nullable. |
allowed_repo_types | array of string | no | Repository types allowed in this project. Items: one of: hosted, proxy, group. |
created_at | string (date-time) | no | - |
description | string | no | Nullable. |
display_name | string | no | Nullable. |
id | string (uuid) | no | - |
is_system | boolean | no | The built-in system project: it grants nothing and cannot be deleted. |
max_repositories | integer | no | Maximum number of repositories the project may own. 0 means unlimited. Minimum: 0. |
my_role | string | no | The caller's effective role in the project; a global admin without a role is an implicit owner. One of: owner, maintainer, developer, viewer. |
name | string | no | - |
owner_id | string (uuid) | no | Nullable. |
repo_name_prefix | string | no | Prefix every repository name in this project must start with. Empty means no prefix is required. |
repository_count | integer | no | Number of live (not trashed) repositories. |
slug | string | no | URL-safe unique identifier derived from the name: lowercased, runs of characters outside a-z0-9 collapsed to '-', at most 64 characters. A name or slug collision on create returns 409. |
token_max_ttl_days | integer | no | Maximum lifetime in days of tokens scoped to this project. 0 means no cap. Minimum: 0. |
updated_at | string (date-time) | no | - |
ProjectActivityEntry
One audit event of a project or of a repository it owns. Carries no client address.
| Field | Type | Required | Description |
|---|---|---|---|
action | string | yes | Audit action, e.g. project.member_added, project.repository_created. |
actor | string | yes | Username or token name of the actor; empty when unknown. |
actor_type | string | no | Nullable. One of: user, system, token, sso. |
id | string (uuid) | yes | - |
message | string | yes | - |
repository_id | string (uuid) | no | Nullable. |
resource_id | string | no | Nullable. |
resource_type | string | no | Nullable. |
timestamp | string (date-time) | yes | - |
ProjectCleanupPreview
| Field | Type | Required | Description |
|---|---|---|---|
dry_run | boolean | yes | - |
repositories | array of CleanupPreview | yes | - |
rows | integer | yes | Total rows over all repositories |
ProjectCreateRequest
| Field | Type | Required | Description |
|---|---|---|---|
allow_public_repos | boolean | no | Whether repositories of this project may be public. |
allowed_formats | array of string | no | Package formats repositories of this project may use. null allows every format. Nullable. |
allowed_repo_types | array of string | no | Repository types allowed in this project. Items: one of: hosted, proxy, group. |
description | string | no | - |
display_name | string | no | - |
max_repositories | integer | no | Maximum number of repositories the project may own. 0 means unlimited. Minimum: 0. |
name | string | yes | - |
owner | string | no | Username of the owner. Global admins only; defaults to the caller. |
repo_name_prefix | string | no | Prefix every repository name in this project must start with. Empty means no prefix is required. |
token_max_ttl_days | integer | no | Maximum lifetime in days of tokens scoped to this project. 0 means no cap. Minimum: 0. |
ProjectGroup
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
group_id | string (uuid) | no | - |
group_name | string | no | - |
project_id | string (uuid) | no | - |
role | string | no | One of: viewer, developer, maintainer. |
ProjectGroupUpdateRequest
| Field | Type | Required | Description |
|---|---|---|---|
role | string | yes | One of: viewer, developer, maintainer. |
ProjectListItem
A project of the project list: the project plus its member count, usage and quota.
Includes all fields of Project.
| Field | Type | Required | Description |
|---|---|---|---|
allow_public_repos | boolean | no | Whether repositories of this project may be public. |
allowed_formats | array of string | no | Package formats repositories of this project may use. null allows every format. Nullable. |
allowed_repo_types | array of string | no | Repository types allowed in this project. Items: one of: hosted, proxy, group. |
created_at | string (date-time) | no | - |
description | string | no | Nullable. |
display_name | string | no | Nullable. |
id | string (uuid) | no | - |
is_system | boolean | no | The built-in system project: it grants nothing and cannot be deleted. |
max_repositories | integer | no | Maximum number of repositories the project may own. 0 means unlimited. Minimum: 0. |
member_count | integer | yes | Direct members; users who hold a role only through a group are not counted. |
my_role | string | no | The caller's effective role in the project; a global admin without a role is an implicit owner. One of: owner, maintainer, developer, viewer. |
name | string | no | - |
owner_id | string (uuid) | no | Nullable. |
quota | object | no | Absent when the project has no size limit. |
quota.limit_bytes | integer (int64) | yes | - |
repo_name_prefix | string | no | Prefix every repository name in this project must start with. Empty means no prefix is required. |
repository_count | integer | no | Number of live (not trashed) repositories. |
slug | string | no | URL-safe unique identifier derived from the name: lowercased, runs of characters outside a-z0-9 collapsed to '-', at most 64 characters. A name or slug collision on create returns 409. |
token_max_ttl_days | integer | no | Maximum lifetime in days of tokens scoped to this project. 0 means no cap. Minimum: 0. |
updated_at | string (date-time) | no | - |
usage | object | yes | - |
usage.size_bytes | integer (int64) | yes | Stored size across the project's repositories (trashed ones included). |
ProjectMember
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
id | string | no | Membership id: the project id and the user id joined by a colon |
project_id | string (uuid) | no | - |
role | string | no | One of: owner, maintainer, developer, viewer. |
user_id | string (uuid) | no | - |
username | string | no | - |
ProjectMemberCreateRequest
Exactly one of user_id and username.
| Field | Type | Required | Description |
|---|---|---|---|
role | string | no | One of: owner, maintainer, developer, viewer. Default: viewer. |
user_id | string (uuid) | no | - |
username | string | no | Alternative to user_id; exactly one of the two is required. |
ProjectMemberUpdateRequest
| Field | Type | Required | Description |
|---|---|---|---|
role | string | yes | One of: owner, maintainer, developer, viewer. |
ProjectQuota
| Field | Type | Required | Description |
|---|---|---|---|
current_artifact_count | integer (int64) | no | - |
current_size_bytes | integer (int64) | no | - |
enforced | boolean | no | True when a limit is set. |
max_artifact_count | integer (int64) | no | - |
max_size_bytes | integer (int64) | no | - |
project | string | no | - |
updated_at | string | no | - |
usage_percent | integer | no | - |
warn_threshold_percent | integer | no | - |
ProjectRole
One project role of the caller.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | no | - |
role | string | no | One of: owner, maintainer, developer, viewer. |
ProjectSettings
| Field | Type | Required | Description |
|---|---|---|---|
self_create | boolean | yes | Whether any human user may create a project (and become its owner). |
ProjectToken
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
created_by | string (uuid) | no | - |
created_by_username | string | no | - |
expires_at | string (date-time) | no | Nullable. |
id | string (uuid) | no | - |
last_used_at | string (date-time) | no | Nullable. |
name | string | no | - |
project | string | no | - |
role | string | no | One of: viewer, developer. |
ProjectTokenCreateRequest
| Field | Type | Required | Description |
|---|---|---|---|
expires_at | string (date-time) | no | - |
name | string | yes | Maximum length: 100. |
role | string | yes | One of: viewer, developer. |
ProjectTokenCreateResponse
Includes all fields of ProjectToken.
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
created_by | string (uuid) | no | - |
created_by_username | string | no | - |
expires_at | string (date-time) | no | Nullable. |
id | string (uuid) | no | - |
last_used_at | string (date-time) | no | Nullable. |
name | string | no | - |
project | string | no | - |
role | string | no | One of: viewer, developer. |
token | string | no | Clear-text token, shown once |
ProjectUpdateRequest
Partial update: omitted fields stay unchanged.
| Field | Type | Required | Description |
|---|---|---|---|
allow_public_repos | boolean | no | Whether repositories of this project may be public. |
allowed_formats | array of string | no | Package formats repositories of this project may use. null allows every format. Nullable. |
allowed_repo_types | array of string | no | Repository types allowed in this project. Items: one of: hosted, proxy, group. |
description | string | no | - |
display_name | string | no | - |
max_repositories | integer | no | Maximum number of repositories the project may own. 0 means unlimited. Minimum: 0. |
repo_name_prefix | string | no | Prefix every repository name in this project must start with. Empty means no prefix is required. |
token_max_ttl_days | integer | no | Maximum lifetime in days of tokens scoped to this project. 0 means no cap. Minimum: 0. |
ProjectUsage
| Field | Type | Required | Description |
|---|---|---|---|
artifact_count | integer (int64) | no | - |
project | string | no | - |
quota | ProjectQuota | no | - |
repositories | array of object | no | - |
repositories[].artifact_count | integer (int64) | no | - |
repositories[].format | string | no | - |
repositories[].max_artifact_count | integer (int64) | no | - |
repositories[].max_size_bytes | integer (int64) | no | - |
repositories[].name | string | no | - |
repositories[].quota_enforced | boolean | no | - |
repositories[].repo_type | string | no | - |
repositories[].size_bytes | integer (int64) | no | - |
repositories[].warn_threshold_percent | integer | no | - |
size_bytes | integer (int64) | no | - |
PromotionPipeline
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | yes | - |
created_by | string | yes | - |
description | string | yes | - |
id | string | yes | - |
name | string | yes | - |
stages | array of PipelineStage | yes | - |
updated_at | string (date-time) | yes | - |
PublicSystemInfo
| Field | Type | Required | Description |
|---|---|---|---|
api_reference_enabled | boolean | no | Whether the interactive API reference is served at /api/reference. |
docs_url | string | no | Absolute URL, ending in a slash, of the published documentation matching this server version. Omitted when documentation links are disabled. |
status | string | no | - |
version | string | no | - |
Quota
| Field | Type | Required | Description |
|---|---|---|---|
max_artifact_count | integer | no | - |
max_size_bytes | integer | no | - |
warn_threshold_percent | number | no | - |
QuotaLine
A quota next to its live usage. Limits are absent when unlimited.
| Field | Type | Required | Description |
|---|---|---|---|
artifact_count | integer (int64) | yes | - |
exceeded | boolean | yes | True once the size or the artifact count limit is reached. |
limit_bytes | integer (int64) | no | - |
max_artifact_count | integer (int64) | no | - |
soft_limit_bytes | integer (int64) | no | Usage at which the warning threshold is crossed (limit_bytes times warn_threshold_percent); set with limit_bytes. |
usage_percent | integer | yes | used_bytes of limit_bytes; 0 when unlimited. |
used_bytes | integer (int64) | yes | - |
warn_threshold_percent | integer | yes | - |
QuotaOverviewItem
A repository's or a project's quota and usage.
Includes all fields of QuotaLine.
| Field | Type | Required | Description |
|---|---|---|---|
artifact_count | integer (int64) | yes | - |
exceeded | boolean | yes | True once the size or the artifact count limit is reached. |
limit_bytes | integer (int64) | no | - |
max_artifact_count | integer (int64) | no | - |
name | string | yes | - |
project | string | no | Project owning a repository; absent for a project line and for a repository without one. |
scope | string | yes | One of: repository, project. |
soft_limit_bytes | integer (int64) | no | Usage at which the warning threshold is crossed (limit_bytes times warn_threshold_percent); set with limit_bytes. |
usage_percent | integer | yes | used_bytes of limit_bytes; 0 when unlimited. |
used_bytes | integer (int64) | yes | - |
warn_threshold_percent | integer | yes | - |
QuotaOverviewList
| Field | Type | Required | Description |
|---|---|---|---|
limit | integer | yes | - |
page | integer | yes | - |
quotas | array of QuotaOverviewItem | yes | - |
total | integer | yes | - |
ReadyResponse
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | no | - |
status | string | no | One of: ready, not ready. |
RecentPackage
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | yes | - |
created_by_name | string | no | Never set: the server does not record who published a package. |
format | string | yes | - |
name | string | yes | - |
repository | string | yes | - |
version | string | yes | - |
RecoveryStatus
| Field | Type | Required | Description |
|---|---|---|---|
backlog | integer (int64) | no | Changed rows waiting for their sidecar (capped at backlog_cap) |
backlog_cap | integer (int64) | no | - |
enabled | boolean | no | The journal switch the database triggers consult (recovery.journal.enabled) |
last_drain_at | string (date-time) | no | - |
last_error | string | no | - |
last_error_at | string (date-time) | no | - |
last_reconcile_at | string (date-time) | no | When every table last completed a reconcile pass |
oldest_dirty_age_seconds | number | no | Age of the oldest waiting row; the journal lag, hence the rebuild RPO |
retrying_rows | integer (int64) | no | Waiting rows in retry backoff after a failure |
schema_version | integer | no | Migration number stamped into new sidecars |
sidecars_tracked | integer (int64) | no | - |
tables_reconciled | integer | no | - |
tables_total | integer | no | - |
ReleaseBundle
| Field | Type | Required | Description |
|---|---|---|---|
archived_at | string (date-time) | yes | Nullable. |
archived_by | string | yes | Nullable. |
created_at | string (date-time) | yes | - |
created_by | string | yes | - |
current_stage | string | yes | Nullable. |
description | string | yes | - |
gpg_key_id | string | no | Fingerprint of the key that signed the manifest; null when unsigned. Nullable. |
gpg_signature | string | no | Armored detached signature of the manifest; null when unsigned. Nullable. |
id | string | yes | - |
name | string | yes | - |
pipeline_id | string | yes | Nullable. |
sealed_at | string (date-time) | yes | Nullable. |
sealed_by | string | yes | Nullable. |
state | string | yes | One of: draft, sealed, archived. |
updated_at | string (date-time) | yes | - |
version | string | yes | - |
ReleaseBundleItem
| Field | Type | Required | Description |
|---|---|---|---|
added_at | string (date-time) | yes | - |
added_by | string | yes | - |
artifact_path | string | yes | - |
bundle_id | string | yes | - |
component_id | string | yes | Nullable. |
format | string | yes | - |
id | string | yes | - |
sha256 | string | yes | - |
size_bytes | integer (int64) | yes | - |
source_repo_id | string | yes | - |
ReplicationStatus
| Field | Type | Required | Description |
|---|---|---|---|
backlog_copy | integer (int64) | no | Queued copies to the replica. |
backlog_delete | integer (int64) | no | Queued deletions on the replica. |
enabled | boolean | no | False when no replica is configured (storage.replica.type is empty); every other field is then empty. |
failing | integer (int64) | no | Queued operations that failed repeatedly. |
last_error | string | no | - |
last_error_at | string (date-time) | no | Nullable. |
last_verify | ReplicationVerifyResult | no | Nullable. |
oldest_pending_age_seconds | number (double) | no | Replication lag: the age of the oldest queued operation. |
read_fallback | string | no | One of: ``, notfound, error, off. |
replica | object | no | Nullable. |
replica.location | string | no | Directory, bucket or container of the replica; never a credential. |
replica.type | string | no | - |
replicated_bytes_total | integer (int64) | no | - |
replicated_total | integer (int64) | no | - |
verify_requested | boolean | no | True while an admin-requested verify pass waits to start. |
verify_running | ReplicationVerifyResult | no | Nullable. |
ReplicationVerifyResult
| Field | Type | Required | Description |
|---|---|---|---|
checked | integer (int64) | no | Blobs examined. |
deep | boolean | no | True when the bytes of both copies were hashed. |
errors | integer (int64) | no | Blobs that could not be checked or repaired. |
finished_at | string (date-time) | no | Null while the pass runs. Nullable. |
listing | string | no | How the primary store was enumerated: its own listing, or the blobs table when it cannot list. One of: list, database. |
lost | integer (int64) | no | Blobs the database references that exist on neither side. |
mismatched | integer (int64) | no | Blobs whose two copies differ in size (or content, in a deep pass). |
missing_primary | integer (int64) | no | Blobs missing from the primary store (restored from the replica). |
missing_replica | integer (int64) | no | Blobs missing from the replica (a copy was queued). |
repaired | integer (int64) | no | Blobs fixed or queued for copying. |
replica_listed | boolean | no | False when the replica cannot enumerate its objects, so blobs only it holds were not looked for. |
started_at | string (date-time) | no | - |
unreferenced | integer (int64) | no | Blobs only the replica holds that nothing references. |
RepoSecuritySummary
Counts only; no finding ids, titles or other details.
| Field | Type | Required | Description |
|---|---|---|---|
ai | object | yes | - |
ai.quarantine_recommended | integer | yes | - |
ai.review_required | integer | yes | - |
license | object | yes | - |
license.violations | integer | yes | License findings that are not suppressed. |
quarantined | boolean | yes | True when a result of the selection is quarantined. |
scanned_at | string (date-time) | yes | Latest completed scan of the selection; null when nothing was scanned. Nullable. |
secret | object | yes | - |
secret.count | integer | yes | - |
vuln | object | yes | - |
vuln.critical | integer | yes | - |
vuln.high | integer | yes | - |
vuln.low | integer | yes | - |
vuln.medium | integer | yes | - |
Repository
| Field | Type | Required | Description |
|---|---|---|---|
blocked | boolean | no | Whether the repository is blocked |
cache_ttl_seconds | integer | no | Cache TTL in seconds |
created_at | string (date-time) | no | Creation timestamp |
description | string | no | Repository description |
federated | boolean | no | True when federation is enabled: the repository keeps a change log that peer instances pull to stay in sync. Hosted repositories of the formats raw, maven, npm, docker, helm, pypi, cargo, go and nuget only. Peers and tokens are managed under /api/v1/repositories/{name}/federation. |
format | string | yes | Package format. One of: deb, rpm, maven, npm, docker, helm, pypi, nuget, go, cargo, rubygems, raw, conda, conan, ivy, sbt, terraform, apk, pacman. |
id | string (uuid) | yes | Repository unique identifier |
immutable_releases | boolean | no | When true, deleting or overwriting a released version is refused with 409 (SNAPSHOT/pre-release versions stay mutable). An admin can override with ?force=true. |
max_stale_seconds | integer | no | Seconds past a cached file's expiry during which it may still be served, with a Warning: 110 header, when the upstream is unreachable, times out or answers 5xx. 0 disables serve-stale; default 604800 (7 days); max 31536000. |
member_repos | array of string | no | Member repositories (for group repos) |
merge_proxy_versions | boolean | no | Group repositories only. false (default): for a package name held by a readable hosted member, proxy members' versions of that name are hidden (hosted members win, dependency-confusion protection). true: merge proxy versions with the hosted ones. Only administrators can set it. |
name | string | yes | Repository name (1-100 alphanumeric/hyphen/underscore) |
negative_cache_ttl_seconds | integer | no | Negative cache TTL in seconds |
permissions | object | no | The caller's effective repository-scoped permissions. Only present in the single-repository GET (/api/v1/repository/{name}); global administrators have every flag set. |
permissions.admin | boolean | yes | Allows configuring and deleting the repository and managing its cleanup policies and quota: global administrators and maintainers or owners of the repository's project. |
permissions.delete | boolean | yes | Allows the repository's trash tab (list and restore). |
permissions.manage | boolean | yes | Allows emptying the repository's trash. |
permissions.write | boolean | yes | - |
presign_downloads | boolean | no | Per-repository override of storage.presignDownloads: true always redirects eligible blob downloads to a presigned object-store URL, false always streams, null inherits the global setting. Metadata and manifests are never redirected. Nullable. |
project | string | no | Name of the project that owns the repository (the built-in 'system' project unless set at creation or moved). Members of any other project get access to the repository according to their role; see docs/security/rbac.md. |
public | boolean | no | Whether repository is publicly accessible |
repo_type | string | no | Repository type. One of: hosted, proxy, group. |
sign_packages | boolean | no | Hosted rpm repositories only (400 otherwise when true). When true, uploaded RPMs are signed with the active GPG key; existing packages are not re-signed. |
stats | RepositoryStats | no | - |
trash_retention_days | integer | no | Days a deleted item (or the repository itself) stays restorable in the trash before the retention purge removes it. null = the server default (TRASH_RETENTION_DAYS); 0 = no trash, deletes are immediate and permanent. Nullable. Minimum: 0. Maximum: 36500. |
updated_at | string (date-time) | no | Last update timestamp |
upstream_password_set | boolean | no | Proxy repos: true when an upstream password is stored. The password is write-only (upstream_password on create and update) and is never returned. |
upstream_url | string | no | Upstream repository URL (for proxy repos) |
upstream_username | string | no | - |
RepositoryMember
| Field | Type | Required | Description |
|---|---|---|---|
format | string | yes | Member repository format |
id | string (uuid) | yes | Member repository ID |
name | string | yes | Member repository name |
priority | integer | yes | Resolution order within the group (lowest first) |
repo_type | string | yes | Member repository type. One of: hosted, proxy. |
RepositoryStats
Catalog figures of a repository. Only present in the repository list (GET /api/v1/repositories).
| Field | Type | Required | Description |
|---|---|---|---|
last_published_at | string (date-time) | no | Time of the newest package; absent for an empty repository. |
package_count | integer (int64) | yes | Number of distinct package names, counted as the package listing names them. |
quota | object | yes | - |
quota.limit_bytes | integer (int64) | no | Size quota; absent when unlimited. |
quota.used_bytes | integer (int64) | yes | - |
security | object | yes | Sum over the artifacts of the repository of their latest scan results. Counts are raw: VEX statements and ignore rules do not suppress any. |
security.critical | integer (int64) | yes | - |
security.high | integer (int64) | yes | - |
security.license_violations | integer (int64) | yes | Artifacts whose license scan is quarantined (the server stores no other license violation count). |
security.low | integer (int64) | yes | - |
security.medium | integer (int64) | yes | - |
security.scanned_at | string (date-time) | no | Latest completed scan; absent when never scanned. |
security.secrets | integer (int64) | yes | Secret findings. |
size_bytes | integer (int64) | yes | Stored size, from the repository's quota counter (equals quota.used_bytes). |
RepositoryUsage
| Field | Type | Required | Description |
|---|---|---|---|
last_published_at | string (date-time) | no | Absent for an empty repository. |
package_count | integer (int64) | yes | Distinct packages (by name). |
quota | QuotaLine | yes | - |
size_bytes | integer (int64) | yes | Stored size from the quota counter. |
version_count | integer (int64) | yes | Package rows (versions, or files for formats without versions). |
SBOMReport
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | no | - |
component_count | integer | no | - |
content_type | string | no | - |
created_at | string (date-time) | no | - |
format | string | no | - |
generated_at | string (date-time) | no | - |
id | string (uuid) | no | - |
repo_id | string (uuid) | no | - |
sbom_data | any | no | The SBOM document (only on the detail endpoint) |
spec_version | string | no | - |
updated_at | string (date-time) | no | - |
SSOProvider
| Field | Type | Required | Description |
|---|---|---|---|
auto_provision_users | boolean | no | - |
claim_mapping | object | no | - |
created_at | string (date-time) | no | - |
display_name | string | no | - |
enabled | boolean | no | - |
group_mapping | map of string | no | - |
id | string (uuid) | no | - |
kind | string | no | One of: oidc, saml. |
link_by_email | boolean | no | - |
oidc_config | OIDCConfig | no | - |
permission_mapping | map of string | no | - |
saml_config | object | no | SAML settings (kind=saml). At least one IdP metadata source is required on create; the URL wins when both are set. |
saml_config.allow_idp_initiated | boolean | no | Accept IdP-initiated (unsolicited) responses, e.g. from an IdP app tile. Off by default: such responses are not bound to a login request this server started, so login CSRF is possible. Signature, audience, recipient and replay checks still apply. |
saml_config.email_attribute | string | no | Assertion attribute Name for the email (default mail). |
saml_config.groups_attribute | string | no | Assertion attribute Name carrying group values. When set and present in the assertion (even with no values) the user's SSO group memberships are synced to that set; when absent from the assertion existing memberships are kept. |
saml_config.idp_metadata_refresh_seconds | integer | no | How long fetched IdP metadata is reused before it is re-read from idp_metadata_url. 0 or unset means 3600; otherwise 60 to 86400. A shorter cacheDuration or validUntil in the metadata itself wins (floor 60s). Minimum: 0. Maximum: 86400. |
saml_config.idp_metadata_url | string | no | HTTPS URL of the IdP metadata. Refreshed in the background, so IdP certificate rollover is picked up without editing the provider. |
saml_config.idp_metadata_xml | string | no | Static IdP metadata document. Never refreshed; its validUntil is ignored. |
saml_config.name_attribute | string | no | Assertion attribute Name for the display name (default displayName). |
saml_config.username_attribute | string | no | Assertion attribute Name for the username (default uid). |
slug | string | no | - |
updated_at | string (date-time) | no | - |
ScanResult
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
id | string (uuid) | no | - |
status | string | no | Scan status. Vulnerability scans use pending|scanning|completed|partial|failed (see VulnScanResult.scan_status). |
SearchPackageHit
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
format | string | no | - |
metadata | map of string | no | - |
name | string | no | - |
path | string | no | - |
repository | string | no | - |
sha256 | string | no | - |
size | integer (int64) | no | - |
version | string | no | - |
version_count | integer | no | Only with group=package: the number of versions of the package that match the search |
SearchRepositoryHit
| Field | Type | Required | Description |
|---|---|---|---|
description | string | no | - |
format | string | no | - |
name | string | no | - |
SearchResult
| Field | Type | Required | Description |
|---|---|---|---|
packages | array of SearchPackageHit | no | Matching packages/artifacts, best match first (exact name, prefix, other substring), then newest first. With group=package, one entry per package: its latest version |
repositories | array of SearchRepositoryHit | no | Repositories whose own name matches the query, ordered by name |
total | integer | no | Number of matching packages (repositories are not counted); with group=package, the number of distinct packages |
SecurityFinding
One stored scan result (a package version of one type) that reports something.
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | yes | The artifact the result belongs to, name@version. |
counts | SecurityFindingCounts | yes | What the result holds per severity. Secret findings count by their own severity (an unknown one as low); a license quarantine is one high and each unresolved license one low; an AI quarantine recommendation is one high and a license review one medium. |
format | string | yes | Format of the repository (npm, pypi, maven, ...). |
id | string (uuid) | yes | - |
package_name | string | yes | - |
package_version | string | yes | - |
quarantined | boolean | yes | - |
repository | string | yes | Repository name. |
scanned_at | string (date-time) | yes | - |
scanner | string | yes | Scanner of a vulnerability result (osv, trivy, grype or a comma-joined list); empty for the other types. |
severity | string | yes | Highest severity of the finding; none when it has none. One of: critical, high, medium, low, none. |
status | string | yes | quarantined when the result's quarantine flag is set; suppressed when every vulnerability has a not_affected or fixed VEX decision or an admin approved a license quarantine. One of: open, quarantined, suppressed. |
title | string | yes | One line: the worst vulnerability id, the licenses, the worst secret finding or the AI note. |
type | string | yes | One of: vuln, license, secret, ai. |
vex_status | string | no | Least resolved VEX decision on the vulnerabilities of a vuln finding; absent when none applies. One of: affected, under_investigation, fixed, not_affected. |
SecurityFindingCounts
| Field | Type | Required | Description |
|---|---|---|---|
critical | integer | yes | - |
high | integer | yes | - |
low | integer | yes | - |
medium | integer | yes | - |
SecurityHealth
| Field | Type | Required | Description |
|---|---|---|---|
ai | object | yes | - |
ai.enabled | boolean | yes | - |
dependency_track | object | yes | - |
dependency_track.enabled | boolean | yes | The global Dependency-Track integration is enabled. |
dependency_track.last_push_at | string (date-time) | no | When that push finished; absent when none did. |
dependency_track.last_push_ok | boolean | no | Whether the latest finished push succeeded; absent when none finished. |
last_scan_at | string (date-time) | yes | When the latest vulnerability, license, secret or AI scan finished; null when none did. Nullable. |
scanners | array of object | yes | - |
scanners[].docs_url | string | no | Installation guide of a scanner that is not ready. |
scanners[].message | string | no | What an operator should do; absent for a ready scanner. |
scanners[].name | string | yes | osv, trivy or grype. |
scanners[].ready | boolean | yes | - |
scans_failed_24h | integer | yes | Scans that failed in the last 24 hours. |
scans_pending | integer | yes | Scans that are pending or running. |
unscanned_repositories | integer | yes | Repositories that hold artifacts (group repositories excluded) with no completed scan of any type. |
SecuritySummary
| Field | Type | Required | Description |
|---|---|---|---|
by_type | object | yes | - |
by_type.ai | object | yes | Findings of one type; the severities count by each finding's highest severity. |
by_type.ai.critical | integer | yes | - |
by_type.ai.high | integer | yes | - |
by_type.ai.low | integer | yes | - |
by_type.ai.medium | integer | yes | - |
by_type.ai.quarantined | integer | yes | - |
by_type.ai.total | integer | yes | - |
by_type.license | object | yes | Findings of one type; the severities count by each finding's highest severity. |
by_type.license.critical | integer | yes | - |
by_type.license.high | integer | yes | - |
by_type.license.low | integer | yes | - |
by_type.license.medium | integer | yes | - |
by_type.license.quarantined | integer | yes | - |
by_type.license.total | integer | yes | - |
by_type.secret | object | yes | Findings of one type; the severities count by each finding's highest severity. |
by_type.secret.critical | integer | yes | - |
by_type.secret.high | integer | yes | - |
by_type.secret.low | integer | yes | - |
by_type.secret.medium | integer | yes | - |
by_type.secret.quarantined | integer | yes | - |
by_type.secret.total | integer | yes | - |
by_type.vuln | object | yes | Findings of one type; the severities count by each finding's highest severity. |
by_type.vuln.critical | integer | yes | - |
by_type.vuln.high | integer | yes | - |
by_type.vuln.low | integer | yes | - |
by_type.vuln.medium | integer | yes | - |
by_type.vuln.quarantined | integer | yes | - |
by_type.vuln.total | integer | yes | - |
last_scan_at | string (date-time) | yes | When the latest scan of the scope finished; null when none did. Nullable. |
scanned_repositories | integer | yes | Repositories that hold artifacts (group repositories excluded) with a completed scan of any type. |
total_repositories | integer | yes | Repositories of the scope that hold artifacts. |
StorageBackend
| Field | Type | Required | Description |
|---|---|---|---|
config | object | no | - |
created_at | string (date-time) | no | - |
id | string (uuid) | no | - |
kind | string | no | One of: filesystem, s3, gcs, azure. |
last_checked_at | string (date-time) | no | Nullable. |
name | string | no | - |
status | string | no | One of: ok, degraded, error, unknown. |
status_message | string | no | Nullable. |
updated_at | string (date-time) | no | - |
usage | object | no | What the backend holds; present on the list and get endpoints. |
usage.blob_count | integer (int64) | yes | - |
usage.size_bytes | integer (int64) | yes | - |
StoragePolicy
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
enabled | boolean | no | - |
formats | array of string | no | - |
from_tier | string | no | Nullable. |
id | string (uuid) | no | - |
max_size_bytes | integer (int64) | no | Nullable. |
min_age_seconds | integer (int64) | no | Nullable. |
min_idle_seconds | integer (int64) | no | Nullable. |
min_size_bytes | integer (int64) | no | Nullable. |
name | string | no | - |
path_glob | string | no | Nullable. |
position | integer | no | - |
repo_glob | string | no | Nullable. |
target_tier | string | no | - |
updated_at | string (date-time) | no | - |
StoragePolicyInput
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | no | Defaults to true. |
formats | array of string | no | - |
from_tier | string | no | Only blobs currently on this tier. Nullable. |
max_size_bytes | integer (int64) | no | Nullable. |
min_age_seconds | integer (int64) | no | Nullable. |
min_idle_seconds | integer (int64) | no | Nullable. |
min_size_bytes | integer (int64) | no | Nullable. |
name | string | yes | - |
path_glob | string | no | Package path glob (same syntax as repo_glob). Nullable. |
position | integer | no | Evaluation order, lowest first. New policies default to after the last one. |
repo_glob | string | no | Repository name glob: * matches within a segment, ** across '/', ? one character. Nullable. |
target_tier | string | yes | Name of the tier matching blobs belong on. |
StoragePrimary
The primary blob store the server is configured with (storage.* settings). Read-only; holds no credentials.
| Field | Type | Required | Description |
|---|---|---|---|
kind | string | yes | One of: filesystem, s3, garage, seaweedfs, gcs, azure, oci. |
last_checked_at | string (date-time) | no | Nullable. |
location | map of string | yes | Where the blobs live (path, endpoint, bucket, region, account, container, repository). Never a credential. |
name | string | yes | The reserved name "primary", usable in /api/v1/admin/storage/{name}. |
source | string | yes | Always config: the store is set by the server configuration. One of: config. |
status | string | yes | Result of a live health check through the process's own store, cached for 10 seconds. One of: healthy, unreachable, unknown. |
status_message | string | no | Nullable. |
usage | object | no | The blobs placed on the primary store, that is those not moved to a tier. |
usage.blob_count | integer (int64) | yes | - |
usage.size_bytes | integer (int64) | yes | - |
StorageTier
| Field | Type | Required | Description |
|---|---|---|---|
available | boolean | no | False when this server could not open the tier's backend. |
backend | string | no | Name of the storage backend the tier maps to; null for the primary tier. Nullable. |
backend_kind | string | no | - |
backend_status | string | no | - |
blob_count | integer (int64) | no | - |
created_at | string (date-time) | no | - |
id | string (uuid) | no | - |
name | string | no | - |
primary | boolean | no | True for the tier backed by the server's configured storage. |
promote_on_read | boolean | no | - |
rank | integer | no | - |
total_bytes | integer (int64) | no | - |
updated_at | string (date-time) | no | - |
SystemInfo
| Field | Type | Required | Description |
|---|---|---|---|
arch | string | no | - |
build_time | string | no | - |
commit | string | no | - |
go_version | string | no | - |
os | string | no | - |
version | string | no | - |
TierDryRun
| Field | Type | Required | Description |
|---|---|---|---|
policies | array of object | no | - |
policies[].bytes | integer (int64) | no | - |
policies[].count | integer (int64) | no | - |
policies[].policy | string | no | - |
routes | array of object | no | - |
routes[].bytes | integer (int64) | no | - |
routes[].count | integer (int64) | no | - |
routes[].from | string | no | - |
routes[].to | string | no | - |
sample | array of object | no | - |
sample[].created_at | string (date-time) | no | - |
sample[].from | string | no | - |
sample[].last_accessed_at | string (date-time) | no | Nullable. |
sample[].policy | string | no | - |
sample[].sha256 | string | no | - |
sample[].size_bytes | integer (int64) | no | - |
sample[].to | string | no | - |
scanned | integer | no | - |
truncated | boolean | no | True when the scan stopped at its row cap; totals are then a lower bound. |
would_move | object | no | - |
would_move.bytes | integer (int64) | no | - |
would_move.count | integer (int64) | no | - |
TierMoverStatus
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | no | - |
interval_seconds | integer (int64) | no | - |
last_pass | object | no | Nullable. |
last_pass.aborted | boolean | no | - |
last_pass.bytes | integer (int64) | no | - |
last_pass.failed | integer | no | - |
last_pass.finished_at | string (date-time) | no | - |
last_pass.moved | integer | no | - |
last_pass.promoted | integer | no | - |
last_pass.recovered | integer | no | - |
last_pass.scanned | integer | no | - |
last_pass.skipped | integer | no | - |
last_pass.started_at | string (date-time) | no | - |
pending | array of object | no | - |
pending[].attempts | integer | no | - |
pending[].from | string | no | - |
pending[].reason | string | no | - |
pending[].sha256 | string | no | - |
pending[].size_bytes | integer (int64) | no | - |
pending[].state | string | no | One of: copying, flipped. |
pending[].to | string | no | - |
pending[].updated_at | string (date-time) | no | - |
pending_total | integer (int64) | no | - |
running | boolean | no | - |
Token
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
expires_at | string (date-time) | no | Nullable. |
id | string (uuid) | no | - |
kind | string | no | One of: access, deploy. |
last_used_at | string (date-time) | no | Nullable. |
name | string | no | - |
scopes | array of string | no | - |
TokenCreateResponse
Includes all fields of Token.
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
expires_at | string (date-time) | no | Nullable. |
id | string (uuid) | no | - |
kind | string | no | One of: access, deploy. |
last_used_at | string (date-time) | no | Nullable. |
name | string | no | - |
scopes | array of string | no | - |
token | string | no | The raw token value (only returned on creation) |
TrashEmpty
| Field | Type | Required | Description |
|---|---|---|---|
purged | integer | yes | Items destroyed by this request. |
remaining | integer | yes | Trashed items left (a request purges at most 1000). |
TrashItem
A soft-deleted package row or repository. It is hidden everywhere else until restored; the retention purge removes it at expires_at.
| Field | Type | Required | Description |
|---|---|---|---|
deleted_at | string (date-time) | yes | - |
deleted_by | string | yes | - |
deleted_by_name | string | yes | Who deleted the item as a display name: the username, or the policy or peer that did it (cleanup-policy, federation:<peer>). Empty when not recorded. Same value as deleted_by. |
expires_at | string (date-time) | yes | When the retention purge removes the item for good: deleted_at plus the repository's effective retention. |
format | string | yes | - |
id | string (uuid) | yes | Primary key of the trashed row (the repository id for kind repository). Together with kind it addresses the item. |
kind | string | yes | One of: repository, maven_artifact, ivy_artifact, sbt_artifact, apk_package, terraform_module, terraform_provider, npm_version, pypi_package, nuget_package, go_module, cargo_crate, rubygems_gem, conda_package, pacman, conan_package, helm_chart, raw_artifact, docker_manifest, docker_tag, rpm_package, deb_package. |
name | string | yes | Package name, file path, image:tag or (kind repository) the repository name. |
purge_at | string (date-time) | yes | Same value as expires_at, kept for existing clients. |
repository | string | yes | Name of the owning repository (the trashed repository itself for kind repository). |
repository_id | string (uuid) | yes | - |
size_bytes | integer (int64) | yes | - |
version | string | no | Omitted when the kind has no version. |
TrashList
| Field | Type | Required | Description |
|---|---|---|---|
items | array of TrashItem | yes | - |
limit | integer | yes | - |
page | integer | yes | - |
total | integer | yes | - |
UnifiedToken
One token of the unified token list. The secret is never returned.
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | yes | - |
expired | boolean | yes | True once expires_at has passed. |
expires_at | string (date-time) | no | Absent for a token that never expires (federation tokens never do). |
id | string (uuid) | yes | - |
last_used_at | string (date-time) | no | - |
name | string | yes | - |
owner | string | yes | Username of the token's owner (personal), creator (project) or creator (federation, as recorded). |
project | string | no | Project name: set for project tokens and for federation tokens of a repository that belongs to a project. |
repository | string | no | Repository name, for federation tokens. |
role | string | no | Project role, for project tokens. |
scopes | array of string | no | Permission-target ids a personal token is limited to. |
type | string | yes | One of: personal, project, federation. |
UnifiedTokenList
| Field | Type | Required | Description |
|---|---|---|---|
limit | integer | yes | - |
page | integer | yes | - |
tokens | array of UnifiedToken | yes | - |
total | integer | yes | Tokens the caller may see that match the filters. |
UpdateFederationPeerRequest
Absent fields stay unchanged.
| Field | Type | Required | Description |
|---|---|---|---|
base_url | string | no | - |
ca_pem | string | no | - |
client_cert | string | no | - |
client_key | string | no | - |
enabled | boolean | no | - |
name | string | no | - |
token | string | no | - |
UpdateFederationRequest
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | yes | true backfills the log from the existing content; false removes the log and all peers. |
User
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
disabled | boolean | no | - |
email | string (email) | no | Nullable. |
full_name | string | no | Nullable. |
id | string (uuid) | no | - |
last_login_at | string (date-time) | no | Nullable. |
must_change_password | boolean | no | - |
updated_at | string (date-time) | no | - |
username | string | no | - |
UserExtended
Includes all fields of User.
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
disabled | boolean | no | - |
email | string (email) | no | Nullable. |
full_name | string | no | Nullable. |
groups | array of string | no | Names of the groups the user belongs to. |
id | string (uuid) | no | - |
is_admin | boolean | no | - |
last_login_at | string (date-time) | no | Nullable. |
must_change_password | boolean | no | - |
projects | array of ProjectRole | no | The caller's project roles; global admins are implicit owners everywhere and are listed only for roles they hold. |
updated_at | string (date-time) | no | - |
username | string | no | - |
VEXStatement
| Field | Type | Required | Description |
|---|---|---|---|
action_statement | string | no | - |
artifact_id | string | no | - |
created_at | string (date-time) | no | - |
created_by | string | no | - |
id | string (uuid) | no | - |
impact_statement | string | no | - |
justification | string | no | - |
status | string | no | One of: affected, not_affected, fixed, under_investigation. |
updated_at | string (date-time) | no | - |
vuln_id | string | no | - |
VulnScanOverviewRow
A vulnerability scan without its findings (vulnerabilities), with the name and format of its repository. Fetch the findings with GET /api/v1/repositories/{name}/vuln/scans/{id}.
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | no | - |
created_at | string (date-time) | no | - |
critical_count | integer | no | - |
ecosystem | string | no | - |
failed_scanners | array of string | no | - |
high_count | integer | no | - |
id | string (uuid) | no | - |
low_count | integer | no | - |
medium_count | integer | no | - |
package_name | string | no | - |
package_version | string | no | - |
quarantined | boolean | no | - |
repo_id | string (uuid) | no | - |
repository_format | string | no | Format of the repository (npm, pypi, maven, ...). |
repository_name | string | no | - |
scan_error | string | no | Sanitized summary of the failing scanners. Nullable. |
scan_status | string | no | Same meaning as on VulnScanResult. One of: pending, scanning, completed, partial, failed. |
scanned_at | string (date-time) | no | Nullable. |
scanner | string | no | One scanner name (osv, trivy or grype) or a sorted comma-joined list such as osv,trivy. |
updated_at | string (date-time) | no | - |
vuln_count | integer | no | - |
VulnScanRequest
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | yes | - |
ecosystem | string | yes | - |
package_name | string | yes | - |
package_version | string | yes | - |
scanner | string | no | Single scanner. Still accepted; merged with scanners. One of: osv, trivy, grype. |
scanners | array of string | no | Scanners to run. Merged with scanner; de-duplicated and sorted. Defaults to osv when neither is given. Items: one of: osv, trivy, grype. |
VulnScanResult
Result of one vulnerability scan of an artifact.
| Field | Type | Required | Description |
|---|---|---|---|
artifact_id | string | yes | - |
created_at | string (date-time) | yes | - |
critical_count | integer | yes | - |
ecosystem | string | yes | - |
failed_scanners | array of string | yes | Scanners that produced no result. Empty unless scan_status is partial or failed. Items: one of: osv, trivy, grype. |
high_count | integer | yes | - |
id | string (uuid) | yes | - |
low_count | integer | yes | - |
medium_count | integer | yes | - |
package_name | string | yes | - |
package_version | string | yes | - |
quarantined | boolean | yes | - |
repo_id | string (uuid) | yes | - |
scan_error | string | yes | Sanitized summary of the failing scanners, for example trivy: scanner is not available on the server (scanner_unavailable), setup guide: <url>; osv: scan timed out. A scanner that is not installed or has no vulnerability database names its code (scanner_unavailable, scanner_db_unavailable) and the setup guide. It never contains raw scanner output or upstream error text. Null unless scan_status is partial or failed. Nullable. |
scan_status | string | yes | completed: every requested scanner ran. partial: several scanners were requested and some failed (findings of the others are kept; see failed_scanners). failed: every scanner failed - the zero counts then mean not scanned, not no vulnerabilities. One of: pending, scanning, completed, partial, failed. |
scanned_at | string (date-time) | yes | Nullable. |
scanner | string | yes | One scanner name (osv, trivy or grype) or a sorted comma-joined list such as osv,trivy when several scanners were requested. |
updated_at | string (date-time) | yes | - |
vuln_count | integer | yes | - |
vulnerabilities | array of object | no | - |
VulnScanSummary
Counts of the scans in the overview.
| Field | Type | Required | Description |
|---|---|---|---|
completed | integer | no | - |
failed | integer | no | - |
partial | integer | no | - |
quarantined | integer | no | - |
scanning | integer | no | Scans still pending or running. |
severity_at_least | object | no | Scans with at least one finding of that severity or worse: high counts the scans with a critical or a high finding, and so on. Matches the severity filter of the list. |
severity_at_least.critical | integer | no | - |
severity_at_least.high | integer | no | - |
severity_at_least.low | integer | no | - |
severity_at_least.medium | integer | no | - |
total | integer | no | - |
VulnScanner
Whether one vulnerability scanner can run on the server. Fixed, client-safe text only.
| Field | Type | Required | Description |
|---|---|---|---|
available | boolean | yes | False when the trivy / grype binary is not installed or not executable. |
code | string | yes | Why the scanner is not ready; null when it is. Nullable. One of: scanner_unavailable, scanner_installing, scanner_install_failed, scanner_install_noexec, scanner_db_unavailable. |
db_state | string | yes | State of the vulnerability database of an available trivy / grype; null otherwise. Nullable. One of: ready, updating, failed, missing. |
db_updated_at | string (date-time) | yes | When the vulnerability database was last refreshed; null when there is none or the time is unknown. Nullable. |
docs_url | string | yes | Link to the scanner installation guide when the scanner is not ready. Nullable. |
install_state | string | yes | State of the automatic installer (scanners.<name>.install: auto) for a trivy / grype binary that is being or was downloaded by the server; null when the binary is not managed by the installer. Nullable. One of: installing, ready, failed. |
message | string | yes | What the operator must do when the scanner is not ready. Nullable. |
name | string | yes | One of: osv, trivy, grype. |
ready | boolean | yes | True when a scan can run now: osv always; trivy and grype when the binary is available and its vulnerability database is present. |
Webhook
| Field | Type | Required | Description |
|---|---|---|---|
content_type | string | no | - |
created_at | string (date-time) | no | - |
enabled | boolean | no | - |
events | array of string | no | Items: one of: artifact.uploaded, artifact.deleted, repository.created, repository.deleted, artifact.restored, artifact.purged, repository.restored, repository.purged, bundle.promoted. |
has_secret | boolean | no | Secret is write-only and never returned |
id | string (uuid) | no | - |
max_retries | integer | no | - |
name | string | no | - |
payload_format | string | no | Delivery body format. openartifact is the native JSON; cloudevents is CloudEvents 1.0 structured mode (application/cloudevents+json); slack, teams and discord are the services' incoming-webhook shapes. One of: openartifact, cloudevents, slack, teams, discord. Default: openartifact. |
repository_id | string (uuid) | no | Nullable. |
ssl_verify | boolean | no | - |
timeout_seconds | integer | no | - |
updated_at | string (date-time) | no | - |
url | string (uri) | no | - |
WebhookDelivery
| Field | Type | Required | Description |
|---|---|---|---|
created_at | string (date-time) | no | - |
event | string | no | - |
id | string (uuid) | no | - |
request_body | string | no | - |
request_headers | string | no | - |
response_body | string | no | - |
response_headers | string | no | - |
status | string | no | - |
status_code | integer | no | - |
webhook_id | string (uuid) | no | - |