DriftEvents


GET /{o}/{p}/drift-events

List drift events

List drift events in this project with optional status/kind/entity/time filtering.

Auth: Bearer token required · Permission: data:read

Path parameters

NameTypeDescription
ostring
pstring

Query parameters

NameTypeDescription
statusopen | accepted | reapplied | snoozed
kindstringFilter by entity type name
entityNamestringFilter by entity name
sincestringISO timestamp lower bound on detectedAt
beforestring(date-time)ISO timestamp upper bound on detectedAt
limitintegerMaximum drift events to return
cursorstringKeyset cursor from the previous page

Responses

StatusDescriptionSchema
200OKDriftEventPage
401UnauthorizedError
403ForbiddenError

GET /{o}/{p}/drift-events/count

Count open drift events

Auth: Bearer token required · Permission: data:read

Path parameters

NameTypeDescription
ostring
pstring

Responses

StatusDescriptionSchema
200OKDriftCount
401UnauthorizedError
403ForbiddenError

GET /{o}/{p}/drift-events/{id}

Get a drift event by id

Auth: Bearer token required · Permission: data:read

Path parameters

NameTypeDescription
ostring
pstring
idstring

Responses

StatusDescriptionSchema
200OKDriftEvent
401UnauthorizedError
403ForbiddenError
404Not FoundError

POST /{o}/{p}/drift-events/{id}/accept

Accept a drift event

Promote the observed (actual) value into the catalog for the drifted field. Never touches real infrastructure.

Auth: Bearer token required · Permission: drift:resolve

Path parameters

NameTypeDescription
ostring
pstring
idstring

Responses

StatusDescriptionSchema
200OKDriftEvent
401UnauthorizedError
403ForbiddenError
404Not FoundError

POST /{o}/{p}/drift-events/{id}/reapply

Mark a drift event for re-apply

Record intent to push the catalog value back to actual. The actual reapply flows through the apply pipeline; this only records intent.

Auth: Bearer token required · Permission: drift:resolve

Path parameters

NameTypeDescription
ostring
pstring
idstring

Responses

StatusDescriptionSchema
200OKDriftReapplyResult
401UnauthorizedError
403ForbiddenError
404Not FoundError

POST /{o}/{p}/drift-events/{id}/snooze

Snooze a drift event

Snooze the drift event for untilSeconds (default 1 day, capped at 30 days).

Auth: Bearer token required · Permission: drift:resolve

Path parameters

NameTypeDescription
ostring
pstring
idstring

Request body (application/json)

FieldTypeDescription
untilSecondsinteger

Responses

StatusDescriptionSchema
200OKDriftEvent
401UnauthorizedError
403ForbiddenError
404Not FoundError

Schemas

DriftCount

FieldTypeDescription
countinteger(required)

DriftEvent

FieldTypeDescription
idstring(uuid)(required)
projectIdstring | null(required)
entityIdstring(uuid)(required)
entityNamestring | null(required)
entityTypeNamestring | null(required)
fieldPathstring(required)
catalogValueobject
actualValueobject
sourcestring(required)
statusopen | accepted | reapplied | snoozed(required)
snoozedUntilstring | null(required)
detectedAtstring(required)
updatedAtstring(required)

DriftEventPage

FieldTypeDescription
itemsDriftEvent[](required)
nextCursorstring | nullCursor for the next page; null on the final page (required)

DriftReapplyResult

FieldTypeDescription
driftEventDriftEvent(required)
entityobject | null(required)

Error

FieldTypeDescription
errorstring(required)
codestring