Skip to content
Registry StackDocsDevelopment (unreleased)

Grant one named recipient one exact document version until a fixed expiry.

POST
/v1/documents/{documentId}/grants
curl --request POST \
--url https://example.com/v1/documents/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/grants \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "expiryHours": 1, "grantee": { "kind": "service", "subject": "example" }, "versionId": "example" }'
documentId
required
string format: uuid
Idempotency-Key
required
string
>= 1 characters <= 128 characters /^[!-~]+$/

The caller’s key for this request. A retry with the same key and body answers the first outcome; another body under the key is refused.

Media typeapplication/json

The body of POST /v1/documents/{documentId}/grants: name one recipient for one exact version.

object
expiryHours

Hours until the grant expires; the policy default when absent, and at most the policy maximum. The expiry is fixed at issue.

integer format: uint32
grantee
required

The one named person the grant releases it to.

object
kind
required

An actor kind: a service, or a human person.

string
Allowed values: service human
subject
required

An identifier another system issues, written exactly as its issuer gives it.

string
>= 1 characters <= 512 characters /^[^\u0000-\u001F\u007F-\u009F]+$/
versionId
required

The exact document version the grant releases.

string

The operation succeeded.

Media typeapplication/json

One document grant.

object
documentId
required
string
expiresAt
required
string
grantee
required

The recipient a grant names: a subject at the configured token issuer, and the actor kind a caller must resolve to for the grant to release anything to it.

object
kind
required

An actor kind: a service, or a human person.

string
Allowed values: service human
subject
required

An identifier another system issues, written exactly as its issuer gives it.

string
>= 1 characters <= 512 characters /^[^\u0000-\u001F\u007F-\u009F]+$/
id
required
string
issuedAt
required
string
revokedAt
string
state
required

Where a grant stands.

string
Allowed values: active expired revoked
versionId
required
string

Example

{
"grantee": {
"kind": "service"
},
"state": "active"
}
Location
required
string

The path of the created resource.

A problem: request.invalid.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: request.invalid

Example

{
"code": "request.invalid",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: authentication.refused.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: authentication.refused

Example

{
"code": "authentication.refused",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}
WWW-Authenticate
required
string
Allowed value: Bearer

The bearer challenge.

A problem: profile.not-authorized.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: profile.not-authorized

Example

{
"code": "profile.not-authorized",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: resource.not-found.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: resource.not-found

Example

{
"code": "resource.not-found",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: request.method-not-allowed.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: request.method-not-allowed

Example

{
"code": "request.method-not-allowed",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: document-version.not-releasable, idempotency.key-reused.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: document-version.not-releasable idempotency.key-reused

Example

{
"code": "document-version.not-releasable",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: idempotency.expired.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: idempotency.expired

Example

{
"code": "idempotency.expired",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: request.body-too-large.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: request.body-too-large

Example

{
"code": "request.body-too-large",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: request.unsupported-media-type.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: request.unsupported-media-type

Example

{
"code": "request.unsupported-media-type",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: document-grant.expiry-out-of-range, request.unprocessable.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: document-grant.expiry-out-of-range request.unprocessable

Example

{
"code": "document-grant.expiry-out-of-range",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}

A problem: service.unavailable.

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused custody.not-permitted custody.quota-exceeded document-grant.expiry-out-of-range document-policy.unknown document-version.not-releasable document.content-type-not-allowed document.too-large idempotency.expired idempotency.key-reused profile.not-authorized request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.not-found service.unavailable upload.content-type-mismatch upload.digest-mismatch upload.expired upload.finalized upload.length-mismatch
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
Allowed values: https://id.registrystack.org/problems/registry-documents/authentication/refused https://id.registrystack.org/problems/registry-documents/custody/not-permitted https://id.registrystack.org/problems/registry-documents/custody/quota-exceeded https://id.registrystack.org/problems/registry-documents/document-grant/expiry-out-of-range https://id.registrystack.org/problems/registry-documents/document-policy/unknown https://id.registrystack.org/problems/registry-documents/document-version/not-releasable https://id.registrystack.org/problems/registry-documents/document/content-type-not-allowed https://id.registrystack.org/problems/registry-documents/document/too-large https://id.registrystack.org/problems/registry-documents/idempotency/expired https://id.registrystack.org/problems/registry-documents/idempotency/key-reused https://id.registrystack.org/problems/registry-documents/profile/not-authorized https://id.registrystack.org/problems/registry-documents/request/body-too-large https://id.registrystack.org/problems/registry-documents/request/invalid https://id.registrystack.org/problems/registry-documents/request/method-not-allowed https://id.registrystack.org/problems/registry-documents/request/not-found https://id.registrystack.org/problems/registry-documents/request/unprocessable https://id.registrystack.org/problems/registry-documents/request/unsupported-media-type https://id.registrystack.org/problems/registry-documents/resource/not-found https://id.registrystack.org/problems/registry-documents/service/unavailable https://id.registrystack.org/problems/registry-documents/upload/content-type-mismatch https://id.registrystack.org/problems/registry-documents/upload/digest-mismatch https://id.registrystack.org/problems/registry-documents/upload/expired https://id.registrystack.org/problems/registry-documents/upload/finalized https://id.registrystack.org/problems/registry-documents/upload/length-mismatch
code
required
Allowed values: service.unavailable

Example

{
"code": "service.unavailable",
"type": "https://id.registrystack.org/problems/registry-documents/authentication/refused"
}
Retry-After
required
integer
>= 1

Whole seconds to wait before trying again.