Skip to content
Registry StackDocsDevelopment (unreleased)

Release an item

POST
/v1/work-items/{item_id}/release
curl --request POST \
--url https://casework.example.test/v1/work-items/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/release \
--header 'Authorization: Bearer <token>' \
--header 'Idempotency-Key: example' \
--header 'If-Match: example' \
--header 'Registry-Casework-Profile: example'

Staff release only an item they currently hold. A human Supervisor may force-release a held item for a queue served by a team they currently supervise, regardless of its holder. The source-backed form requires Registry-Source-Profile and a successful current source read; the hosted form omits that header. If-Match, Idempotency-Key, current visibility, queue authority, and any live source-attempt fence are checked before the mutation. Success clears the holder and assignment, returns the item to open, and records the previous holder in protected lifecycle history. Supervisor authority does not grant hosted decision authority.

item_id
required
string format: uuid

Casework item UUID.

traceparent
string

Optional W3C trace context continued in the response.

Registry-Casework-Profile
required
string
>= 1 characters <= 128 characters /^[A-Za-z0-9_.:-]+$/

Explicit Casework access profile. It never selects BReg authority.

Registry-Source-Profile
string
>= 1 characters <= 128 characters /^[A-Za-z0-9_.:-]+$/

Explicit source profile used for the caller-scoped BReg read or action.

If-Match
required
string
<= 21 characters /^"[1-9][0-9]{0,18}"$/

Quoted positive signed 64-bit Casework item revision.

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

Caller-selected ASCII graphic key bound to this exact mutation. For hosted work, an exact retry after payload expiry and before the accountability retention deadline returns idempotency.expired; a changed request remains idempotency.key-reused. After that deadline the record is forgotten and the key may be reused.

Success

Media typeapplication/json
object
attempt
Any of:
object
attemptId
required
string format: uuid
createdAt
required
string format: date-time
itemId
required
string format: uuid
itemRevision
required
integer format: int64
operation
required
string
<= 64 characters /^[a-z][a-z0-9_]{0,63}$/
receipt
Any of:
object
actorReference
Any of:
string
binding
required
object
generation
required
string
integrity
Any of:
string
sourceRevision
required
string
version
required
string
metadata
required
object
key
additional properties
any
resultingState
required
string
sourceRevision
required
string
state
required
string
Allowed values: pending uncertain completed refused
item
required
object
actions
required
Array<object>
object
href
required
string
ifMatch
required
string
operation
required
string
assignment
Any of:
object
absenceIds
required
Array<string>
assignedBy
Any of:
object
issuer
required
string
subject
required
string
owner
Any of:
object
issuer
required
string
subject
required
string
staffingDiagnostic
Any of:
string
Allowed values: no_cover_available
binding
required
object
generation
required
string
integrity
Any of:
string
sourceRevision
required
string
version
required
string
bindingReference
required
string
clockOccurrences
Array<object>
object
anchorAt
Any of:
string format: date-time
atRiskAt
Any of:
string format: date-time
calculationGeneration
required
integer format: int64
clockId
required
string
clockOccurrenceId
required
string format: uuid
completedAt
Any of:
string format: date-time
dueAt
Any of:
string format: date-time
nextEffect
Any of:
One of:
object
at
required
string format: date-time
id
required
string
kind
required
Allowed value: reminder
policyDigest
required
string
>= 71 characters <= 71 characters /^sha256:[0-9a-f]{64}$/
recomputeGeneration
required
integer format: int64
startedAt
Any of:
string format: date-time
state
required
string
Allowed values: running paused completed cancelled verification_pending source_facts_missing
subject
required
object
id
required
string
kind
required
string
sourceId
required
string
upcomingEffects

For running or verification-pending clocks, the earliest unapplied reminder and earliest unapplied reassignment, ordered by time, effect kind, and identifier. Omitted when no firing instant can be promised, including while paused. These are pinned authored instants, not scheduler retry times.

Array
<= 2 items
One of:
object
at
required
string format: date-time
id
required
string
kind
required
Allowed value: reminder
displayReference

Human-facing source reference disclosed by the source to the current caller. Present only for source-backed items whose request policy explicitly names a reference field and whose current caller read discloses that field.

string
>= 1 characters <= 512 characters /^[^\u0000-\u001F\u007F-\u009F]+$/
firstObservedAt
required
string format: date-time
heldSince
string format: date-time
holder
Any of:
object
issuer
required
string
subject
required
string
hosted
Any of:
object
display
required
object
key
additional properties
any
kind
required
string
kindPolicyDigest
required
string
>= 71 characters <= 71 characters /^sha256:[0-9a-f]{64}$/
outcomes
required
Array<object>
object
id
required
string
label
required
string
reasonRequired
required
boolean
requesterReference
required
string
version
required
string
itemId
required
string format: uuid
liveAttempt
object
attemptId
required
string format: uuid
createdAt
required
string format: date-time
itemId
required
string format: uuid
itemRevision
required
integer format: int64
operation
required
string
<= 64 characters /^[a-z][a-z0-9_]{0,63}$/
receipt
Any of:
object
actorReference
Any of:
string
binding
required
object
generation
required
string
integrity
Any of:
string
sourceRevision
required
string
version
required
string
metadata
required
object
key
additional properties
any
resultingState
required
string
sourceRevision
required
string
state
required
string
Allowed values: pending uncertain completed refused
occurrenceKind
required
string
Allowed values: review application hosted
passiveDueAt
Any of:
string format: date-time
queueId
required
string
revision
required
integer format: int64
routing
Any of:
object
because
Any of:
string
policyDigest
Any of:
string
>= 71 characters <= 71 characters /^sha256:[0-9a-f]{64}$/
ruleId
Any of:
string
routingCopy
Any of:
object
flaggedFields
required
Array<string>
reason
Any of:
string
sourceBinding
required
object
generation
required
string
integrity
Any of:
string
sourceRevision
required
string
version
required
string
stage
Any of:
string
state
required
string
Allowed values: open claimed waiting_applicant waiting_application synchronizing completed superseded cancelled
subject
required
object
id
required
string
kind
required
string
sourceId
required
string
updatedAt
required
string format: date-time
Example
{
"attempt": {
"state": "pending"
},
"item": {
"assignment": {
"staffingDiagnostic": "no_cover_available"
},
"clockOccurrences": [
{
"nextEffect": {
"kind": "reminder"
},
"state": "running",
"upcomingEffects": [
{
"kind": "reminder"
}
]
}
],
"liveAttempt": {
"state": "pending"
},
"occurrenceKind": "review",
"state": "open"
}
}
traceparent
string

W3C trace context for the request and response.

Problem response: request.invalid

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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 for the request and response.

Problem response: authentication.refused

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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

Bearer authentication challenge.

traceparent
string

W3C trace context for the request and response.

Problem response: profile.not-authorized, profile.not-human

Media typeapplication/problem+json
One of:
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
code
required
Allowed value: profile.not-authorized
detail
required
Allowed value: The selected Casework profile does not authorize this request.
status
required
Allowed value: 403
title
required
Allowed value: Profile not authorized
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/profile/not-authorized
Example
{
"code": "profile.not-authorized",
"detail": "The selected Casework profile does not authorize this request.",
"status": 403,
"title": "Profile not authorized",
"type": "https://id.registrystack.org/problems/registry-casework/profile/not-authorized"
}
traceparent
string

W3C trace context for the request and response.

Problem response: work-item.not-visible

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
code
required
Allowed value: work-item.not-visible
detail
required
Allowed value: The registry did not show you this request, so Casework cannot show you the item.
status
required
Allowed value: 404
title
required
Allowed value: Work item not visible
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/work-item/not-visible
Example
{
"code": "work-item.not-visible",
"detail": "The registry did not show you this request, so Casework cannot show you the item.",
"status": 404,
"title": "Work item not visible",
"type": "https://id.registrystack.org/problems/registry-casework/work-item/not-visible"
}
traceparent
string

W3C trace context for the request and response.

Problem response: request.method-not-allowed

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
code
required
Allowed value: request.method-not-allowed
detail
required
Allowed value: This route does not accept that HTTP method.
status
required
Allowed value: 405
title
required
Allowed value: Method not allowed
type
required
Allowed value: https://id.registrystack.org/problems/registry-casework/request/method-not-allowed
Example
{
"code": "request.method-not-allowed",
"detail": "This route does not accept that HTTP method.",
"status": 405,
"title": "Method not allowed",
"type": "https://id.registrystack.org/problems/registry-casework/request/method-not-allowed"
}
traceparent
string

W3C trace context for the request and response.

Problem response: idempotency.key-reused, work-item.not-holder

Media typeapplication/problem+json
One of:
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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 for the request and response.

Problem response: idempotency.expired

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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 for the request and response.

Problem response: precondition.failed

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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 for the request and response.

Problem response: request.body-too-large

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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 for the request and response.

Problem response: precondition.required

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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 for the request and response.

Problem response: runtime.failure

Media typeapplication/problem+json
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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 for the request and response.

Problem response: service.unavailable, work-item.source-unavailable

Media typeapplication/problem+json
One of:
object
code
required
string
Allowed values: absence.cover-cycle absence.invalid-period absence.overlap absence.self-cover authentication.refused clock.recompute-preview-expired cursor.expired cursor.invalid idempotency.expired idempotency.key-reused operation.not-authorized precondition.failed precondition.required profile.not-authorized profile.not-human request.body-too-large request.invalid request.method-not-allowed request.not-found request.reason-unsupported request.source-rejected request.unprocessable request.unsupported-media-type runtime.failure service.unavailable source-profile.not-applicable source-profile.required source.bad-gateway source.not-found source.record-missing source.reviewer-not-authorized source.signature-invalid work-item.already-claimed work-item.not-holder work-item.not-offered work-item.not-visible work-item.proposal-changed work-item.recovery-pending work-item.source-unavailable work-item.superseded
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
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

Seconds before retrying the unavailable dependency.

traceparent
string

W3C trace context for the request and response.