Skip to content
Registry StackDocsDevelopment (unreleased)

Assign review task

POST
/v1/review-tasks/{task_id}/assign
curl --request POST \
--url https://example.com/v1/review-tasks/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/assign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--header 'If-Match: example' \
--header 'registry-casework-profile: example' \
--data '{ "assignee": { "issuer": "example", "subject": "example" }, "reason": "example" }'

Recovery repeats the exact request and caller-supplied idempotency key. Clients do not retry mutations implicitly.

task_id
required
string format: uuid
traceparent
string
registry-casework-profile
required
string
>= 1 characters <= 128 characters /^[A-Za-z0-9._:-]+$/

The caller’s exact governed access profile for this protocol.

registry-source-profile
string
>= 1 characters <= 128 characters /^[A-Za-z0-9._:-]+$/

Current-source lists, open work, source context, task mutations and new notes require the human caller’s source-valid profile and credential. Retained terminal task and history reads use Casework authority. Submitted context requires no provider.

If-Match
required
string
/^"[1-9][0-9]*"$/

Quoted current revision.

Idempotency-Key
required
string
>= 1 characters <= 128 characters /^[!-~]+$/

Retain this exact key and request bytes for explicit recovery.

Media typeapplication/json
object
assignee
required

A person is qualified by the issuer that authenticated the subject.

object
issuer
required
string
subject
required
string
reason
string | null

Example generated

{
"assignee": {
"issuer": "example",
"subject": "example"
},
"reason": "example"
}

Success

Media typeapplication/json
object
createdAt
required
string format: date-time
deadlineAt
required
string | null format: date-time
decidedByCaller

Whether the current caller recorded this task’s decision. Present only on a single decided-task read, so a reviewer whose decide response was lost can confirm the outcome without learning who else decided.

boolean | null
decisionReceipt
Any of:

A retained decision, interpreted under the task’s pinned policy and released through an own receipt or the explicit audited accountability read. Private reasons and structured producer result data are never included.

object
decidedAt
required
string format: date-time
decision
required
string
Allowed values: approve reject changes-requested answer
outcome
required

The policy outcome the decision selected; every decision names one.

string
outcomeLabel

The configured label from the decision’s immutable pinned policy.

string | null
policy
required
object
digest
required
string
>= 71 characters <= 71 characters /^sha256:[0-9a-f]{64}$/
id
required
string
version
required
string
displayReference
string | null
eligibleProfiles
required
Array<string>
queue
required
string
requestId
required
string format: uuid
requesterReference
required
string
revision
required
integer format: int64
staffingDiagnostic

Bounded notice about unavailable cover or too few distinct approvers.

string
Allowed values: no-cover-available insufficient-distinct-approvers
stageId
required
string
stageIndex
required
integer format: uint16
<= 65535
state
required
One of:
string
Allowed values: open decided
subject
required
object
digest
required
string
>= 71 characters <= 71 characters /^sha256:[0-9a-f]{64}$/
id
required
string
source
required
string
type
required
string
version
required
string
taskId
required
string format: uuid

Example

{
"decisionReceipt": {
"decision": "approve"
},
"staffingDiagnostic": "no-cover-available",
"state": "open"
}
traceparent
string

W3C trace context.

Problem: request.invalid, source-profile.not-applicable, source-profile.required

Media typeapplication/problem+json
One of:
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: request.invalid
detail
required
Allowed value: The Casework request is invalid.
status
required
Allowed value: 400
title
required
Allowed value: Invalid request
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/request/invalid

Example

{
"code": "request.invalid",
"detail": "The Casework request is invalid.",
"status": 400,
"title": "Invalid request",
"type": "https://id.registrystack.org/problems/registry-casework/request/invalid"
}
traceparent
string

W3C trace context.

Problem: authentication.refused

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: authentication.refused
detail
required
Allowed value: The bearer credential is missing, invalid, or expired. Sign in again.
status
required
Allowed value: 401
title
required
Allowed value: Authentication refused
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/authentication/refused

Example

{
"code": "authentication.refused",
"detail": "The bearer credential is missing, invalid, or expired. Sign in again.",
"status": 401,
"title": "Authentication refused",
"type": "https://id.registrystack.org/problems/registry-casework/authentication/refused"
}
WWW-Authenticate
Allowed value: Bearer
traceparent
string

W3C trace context.

Problem: operation.not-authorized, profile.not-authorized, profile.not-human, review.distinct-approver-required, review.initiator-excluded

Media typeapplication/problem+json
One of:
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: operation.not-authorized
detail
required
Allowed value: Your current Casework authority does not allow this operation.
status
required
Allowed value: 403
title
required
Allowed value: Operation not authorized
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/operation/not-authorized

Example

{
"code": "operation.not-authorized",
"detail": "Your current Casework authority does not allow this operation.",
"status": 403,
"title": "Operation not authorized",
"type": "https://id.registrystack.org/problems/registry-casework/operation/not-authorized"
}
traceparent
string

W3C trace context.

Problem: request.not-found

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: request.not-found
detail
required
Allowed value: The requested Casework route does not exist.
status
required
Allowed value: 404
title
required
Allowed value: Route not found
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/request/not-found

Example

{
"code": "request.not-found",
"detail": "The requested Casework route does not exist.",
"status": 404,
"title": "Route not found",
"type": "https://id.registrystack.org/problems/registry-casework/request/not-found"
}
traceparent
string

W3C trace context.

Problem: idempotency.key-reused, review.policy-mismatch, review.submission-conflict, review.task-not-held

Media typeapplication/problem+json
One of:
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: idempotency.key-reused
detail
required
Allowed value: This idempotency key was used for a different request.
status
required
Allowed value: 409
title
required
Allowed value: Idempotency key reused
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/idempotency/key-reused

Example

{
"code": "idempotency.key-reused",
"detail": "This idempotency key was used for a different request.",
"status": 409,
"title": "Idempotency key reused",
"type": "https://id.registrystack.org/problems/registry-casework/idempotency/key-reused"
}
traceparent
string

W3C trace context.

Problem: idempotency.expired, review.result-expired

Media typeapplication/problem+json
One of:
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: idempotency.expired
detail
required
Allowed value: The stored response for this idempotency key has expired. Reconcile the original operation before choosing a new key.
status
required
Allowed value: 410
title
required
Allowed value: Idempotency window expired
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/idempotency/expired

Example

{
"code": "idempotency.expired",
"detail": "The stored response for this idempotency key has expired. Reconcile the original operation before choosing a new key.",
"status": 410,
"title": "Idempotency window expired",
"type": "https://id.registrystack.org/problems/registry-casework/idempotency/expired"
}
traceparent
string

W3C trace context.

Problem: precondition.failed

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: precondition.failed
detail
required
Allowed value: The item or directory changed since you loaded it. Reload and try again.
status
required
Allowed value: 412
title
required
Allowed value: Precondition failed
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/precondition/failed

Example

{
"code": "precondition.failed",
"detail": "The item or directory changed since you loaded it. Reload and try again.",
"status": 412,
"title": "Precondition failed",
"type": "https://id.registrystack.org/problems/registry-casework/precondition/failed"
}
traceparent
string

W3C trace context.

Problem: request.body-too-large

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: request.body-too-large
detail
required
Allowed value: The request body exceeds the one MiB limit.
status
required
Allowed value: 413
title
required
Allowed value: Request body too large
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/request/body-too-large

Example

{
"code": "request.body-too-large",
"detail": "The request body exceeds the one MiB limit.",
"status": 413,
"title": "Request body too large",
"type": "https://id.registrystack.org/problems/registry-casework/request/body-too-large"
}
traceparent
string

W3C trace context.

Problem: request.unsupported-media-type

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: request.unsupported-media-type
detail
required
Allowed value: Send a JSON request body with Content-Type application/json.
status
required
Allowed value: 415
title
required
Allowed value: Unsupported media type
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/request/unsupported-media-type

Example

{
"code": "request.unsupported-media-type",
"detail": "Send a JSON request body with Content-Type application/json.",
"status": 415,
"title": "Unsupported media type",
"type": "https://id.registrystack.org/problems/registry-casework/request/unsupported-media-type"
}
traceparent
string

W3C trace context.

Problem: absence.cover-cycle, absence.invalid-period, absence.overlap, absence.self-cover, request.unprocessable, review.initiator-required

Media typeapplication/problem+json
One of:
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: absence.cover-cycle
detail
required
Allowed value: Choose cover assignments that do not return to an earlier person during a shared period.
status
required
Allowed value: 422
title
required
Allowed value: Absence cover cycle
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/absence/cover-cycle

Example

{
"code": "absence.cover-cycle",
"detail": "Choose cover assignments that do not return to an earlier person during a shared period.",
"status": 422,
"title": "Absence cover cycle",
"type": "https://id.registrystack.org/problems/registry-casework/absence/cover-cycle"
}
Registry-Casework-Validation-Path
string
<= 256 characters

Bounded value-free JSON path of the member the request type refused; present together with the validation reason.

Registry-Casework-Validation-Reason
string
Allowed values: policy-not-allowed reference-invalid object-required maximum-bytes-exceeded maximum-depth-exceeded schema-mismatch outcome-not-declared reason-required text-invalid result-not-declared result-required field-not-declared constraint-invalid constraint-violated public-reason-required public-reason-not-declared approval-outcome-differs

Closed value-free validation category, always schema-mismatch for a request shape refusal; present together with the validation path.

traceparent
string

W3C trace context.

Problem: precondition.required

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: precondition.required
detail
required
Allowed value: This mutation requires the revision that you loaded.
status
required
Allowed value: 428
title
required
Allowed value: Precondition required
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/precondition/required

Example

{
"code": "precondition.required",
"detail": "This mutation requires the revision that you loaded.",
"status": 428,
"title": "Precondition required",
"type": "https://id.registrystack.org/problems/registry-casework/precondition/required"
}
traceparent
string

W3C trace context.

Problem: runtime.failure

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: runtime.failure
detail
required
Allowed value: Casework could not complete the request.
status
required
Allowed value: 500
title
required
Allowed value: Casework runtime failure
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/runtime/failure

Example

{
"code": "runtime.failure",
"detail": "Casework could not complete the request.",
"status": 500,
"title": "Casework runtime failure",
"type": "https://id.registrystack.org/problems/registry-casework/runtime/failure"
}
traceparent
string

W3C trace context.

Problem: source.bad-gateway, source.version-mismatch, source.version-unavailable

Media typeapplication/problem+json
One of:
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: source.bad-gateway
detail
required
Allowed value: The source returned a response that does not match its registered contract.
status
required
Allowed value: 502
title
required
Allowed value: Invalid source response
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/source/bad-gateway

Example

{
"code": "source.bad-gateway",
"detail": "The source returned a response that does not match its registered contract.",
"status": 502,
"title": "Invalid source response",
"type": "https://id.registrystack.org/problems/registry-casework/source/bad-gateway"
}
traceparent
string

W3C trace context.

Problem: service.unavailable

Media typeapplication/problem+json
object
code
required
string
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string
code
required
Allowed value: service.unavailable
detail
required
Allowed value: Casework storage is unavailable. Try again after the service recovers.
status
required
Allowed value: 503
title
required
Allowed value: Casework service unavailable
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/service/unavailable

Example

{
"code": "service.unavailable",
"detail": "Casework storage is unavailable. Try again after the service recovers.",
"status": 503,
"title": "Casework service unavailable",
"type": "https://id.registrystack.org/problems/registry-casework/service/unavailable"
}
Retry-After
integer
traceparent
string

W3C trace context.