Skip to content
Registry StackDocsDevelopment (unreleased)

Reconcile a bounded source-owned busy snapshot

POST
/v1/source-busy/apply
curl --request POST \
--url 'https://scheduling.example.test/v1/source-busy/apply?profile=example' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "coverage": { "end": "2026-04-15T12:00:00Z", "resources": [ "example" ], "start": "2026-04-15T12:00:00Z" }, "expectedRevision": 1, "freshUntil": "2026-04-15T12:00:00Z", "observedAt": "2026-04-15T12:00:00Z", "records": [ { "end": "2026-04-15T12:00:00Z", "externalRevision": "example", "externalUid": "example", "resource": "example", "start": "2026-04-15T12:00:00Z" } ], "status": "fresh" }'

Atomically applies a bounded snapshot under expectedRevision and a canonical request digest, preserving facts outside the source authority and coverage. After an uncertain reply, replay the exact body and expectedRevision: retained exact replay returns already-applied. A different stale request returns HTTP 412 revision.mismatch. A later conflict does not establish that an earlier attempt failed. There is no Idempotency-Key header and clients do not retry automatically. Unavailable or expired required-source coverage prevents new allocations without cancelling existing commitments. Input bounds and minimized impact projection match preview.

traceparent
string

Optional W3C trace context continued in the response.

profile
required
string

One explicit configured import profile; profiles are never combined.

Media typeapplication/json
object
coverage
required
object
end
required
string format: date-time
resources
required
Array<string>
>= 1 items <= 256 items unique items
start
required
string format: date-time
expectedRevision
required
integer format: int64
freshUntil
string format: date-time
observedAt
required
string format: date-time
records
required
Array<object>
<= 4096 items
object
end
required
string format: date-time
externalRevision
required
string
>= 1 characters <= 256 characters
externalUid
required
string
>= 1 characters <= 512 characters
resource
required
string
start
required
string format: date-time
status
required
string
Allowed values: fresh unavailable

Success

Media typeapplication/json
object
added
required
integer format: int64
changed
required
integer format: int64
deleted
required
integer format: int64
impacts
required
object
detailsAvailable
required
boolean
items
Array<object>
<= 256 items
object
kind
required
string
occupiedEnd
required
string format: date-time
occupiedStart
required
string format: date-time
resource
required
string
key
additional properties
any
total
required
integer format: int64
truncated
required
boolean
key
additional properties
any
kind
required
string
Allowed values: applied already-applied
requestDigest
required
string
retainedAcrossCoverageBoundary
required
integer format: int64
retainedOutsideAuthority
required
integer format: int64
revision
required
integer format: int64
sourceId
required
string
key
additional properties
any

Example

{
"kind": "applied"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: request.invalid

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
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 request could not be read as a Scheduling request.
status
required
Allowed value: 400
title
required
Allowed value: Request invalid
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/request/invalid

Example

{
"code": "request.invalid",
"detail": "The request could not be read as a Scheduling request.",
"status": 400,
"title": "Request invalid",
"type": "https://id.registrystack.org/problems/registry-scheduling/request/invalid"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: authentication.refused

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
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-scheduling/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-scheduling/authentication/refused"
}
WWW-Authenticate
Allowed value: Bearer

Bearer authentication challenge.

cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: profile.not-authorized

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
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 Scheduling 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-scheduling/profile/not-authorized

Example

{
"code": "profile.not-authorized",
"detail": "The selected Scheduling profile does not authorize this request.",
"status": 403,
"title": "Profile not authorized",
"type": "https://id.registrystack.org/problems/registry-scheduling/profile/not-authorized"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

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: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
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: The route exists but not for this method.
status
required
Allowed value: 405
title
required
Allowed value: Method not allowed
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/request/method-not-allowed

Example

{
"code": "request.method-not-allowed",
"detail": "The route exists but not for this method.",
"status": 405,
"title": "Method not allowed",
"type": "https://id.registrystack.org/problems/registry-scheduling/request/method-not-allowed"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: resource.unavailable

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
code
required
Allowed value: resource.unavailable
detail
required
Allowed value: Every capable member is unavailable for this interval.
status
required
Allowed value: 409
title
required
Allowed value: Resource unavailable
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/resource/unavailable

Example

{
"code": "resource.unavailable",
"detail": "Every capable member is unavailable for this interval.",
"status": 409,
"title": "Resource unavailable",
"type": "https://id.registrystack.org/problems/registry-scheduling/resource/unavailable"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: revision.mismatch, precondition.failed

Media typeapplication/problem+json
One of:
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
code
required
Allowed value: revision.mismatch
detail
required
Allowed value: The observed revision is no longer current.
status
required
Allowed value: 412
title
required
Allowed value: Revision mismatch
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/revision/mismatch

Example

{
"code": "revision.mismatch",
"detail": "The observed revision is no longer current.",
"status": 412,
"title": "Revision mismatch",
"type": "https://id.registrystack.org/problems/registry-scheduling/revision/mismatch"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

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: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
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 accepted size.
status
required
Allowed value: 413
title
required
Allowed value: Payload too large
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/request/body-too-large

Example

{
"code": "request.body-too-large",
"detail": "The request body exceeds the accepted size.",
"status": 413,
"title": "Payload too large",
"type": "https://id.registrystack.org/problems/registry-scheduling/request/body-too-large"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: request.unsupported-media-type

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
code
required
Allowed value: request.unsupported-media-type
detail
required
Allowed value: The request body is not JSON.
status
required
Allowed value: 415
title
required
Allowed value: Unsupported media type
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/request/unsupported-media-type

Example

{
"code": "request.unsupported-media-type",
"detail": "The request body is not JSON.",
"status": 415,
"title": "Unsupported media type",
"type": "https://id.registrystack.org/problems/registry-scheduling/request/unsupported-media-type"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: request.unprocessable

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
detail
required
string
status
required
integer
title
required
string
traceId
required
string
type
required
string format: uri
code
required
Allowed value: request.unprocessable
detail
required
Allowed value: The request body could not be processed.
status
required
Allowed value: 422
title
required
Allowed value: Request unprocessable
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/request/unprocessable

Example

{
"code": "request.unprocessable",
"detail": "The request body could not be processed.",
"status": 422,
"title": "Request unprocessable",
"type": "https://id.registrystack.org/problems/registry-scheduling/request/unprocessable"
}
cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.

Problem response: service.unavailable

Media typeapplication/problem+json
object
code
required
string
Allowed values: authentication.refused booking.duplicate-active cancellation.cutoff-passed capability.unmatched capacity.exhausted cursor.expired cursor.invalid eligibility.unavailable hold.expired hold.released hook.unavailable horizon.outside idempotency.expired idempotency.key-reused location.closed operation.not-authorized party.capacity-inadequate policy.changed precondition.failed precondition.required prerequisite.missing profile.not-authorized receipt.unresolved request.body-too-large request.invalid request.method-not-allowed request.not-found request.unprocessable request.unsupported-media-type resource.unavailable revision.mismatch schedule.unpublished service.unavailable
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: Scheduling storage is unavailable. Try again after the service recovers.
status
required
Allowed value: 503
title
required
Allowed value: Scheduling service unavailable
type
required
Allowed value: https://id.registrystack.org/problems/registry-scheduling/service/unavailable

Example

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

Seconds before retrying the unavailable dependency; the runtime answers 5.

cache-control
Allowed value: no-store

Every answer is marked no-store, so a booking view is never served from a cache.

traceparent
string

W3C trace context for the request and response.