CatalogRevisions


GET /{o}/{p}/catalog-revisions

List catalog revisions

List the append-only apply history for this project (most recent first).

Auth: Bearer token required · Permission: catalog:read

Path parameters

NameTypeDescription
ostring
pstring

Query parameters

NameTypeDescription
limitintegerMax revisions to return (1-200)
beforestring(date-time)ISO timestamp; only revisions with appliedAt strictly before this are returned
cursorstringKeyset cursor from the previous page

Responses

StatusDescriptionSchema
200OKCatalogRevisionPage
401UnauthorizedError
403ForbiddenError

GET /{o}/{p}/catalog-revisions/{id}

Get a catalog revision by id

Auth: Bearer token required · Permission: catalog:read

Path parameters

NameTypeDescription
ostring
pstring
idstring

Responses

StatusDescriptionSchema
200OKCatalogRevision
401UnauthorizedError
403ForbiddenError
404Not FoundError

GET /{o}/{p}/catalog-revisions/{id}/snapshots

List per-item snapshots for a revision

Returns the pre/post images recorded for each item applied in this revision (the rollback substrate).

Auth: Bearer token required · Permission: catalog:read

Path parameters

NameTypeDescription
ostring
pstring
idstring

Responses

StatusDescriptionSchema
200OKCatalogRevisionSnapshotList
401UnauthorizedError
403ForbiddenError
404Not FoundError

GET /{o}/{p}/catalog-revisions/{from}/diff/{to}

Structured diff between two catalog revisions

What changed in the catalog between two revisions. Both path segments are revision numbers (the ETag / expectedRevision integer), not row ids.

Auth: Bearer token required · Permission: catalog:read

Path parameters

NameTypeDescription
fromstringRevision number to diff from
tostringRevision number to diff to
ostring
pstring

Responses

StatusDescriptionSchema
200OKCatalogDiff
400Bad RequestError
401UnauthorizedError
403ForbiddenError
404Not FoundError

POST /{o}/{p}/catalog-revisions/{id}/rollback

Roll back a catalog revision

Apply the inverse of a prior revision (or a single hunk via ?hunkId=). Runs the same destructive-check + apply pipeline as POST /apply; returns 207 when some inverse items fail. Requires apply:write.

Auth: Bearer token required · Permission: apply:write

Path parameters

NameTypeDescription
ostring
pstring
idstring

Query parameters

NameTypeDescription
hunkIdstring | string[]Single-hunk filter

Request body (application/json)

FieldTypeDescription
forcebooleanRequired if the inverse diff is destructive

Responses

StatusDescriptionSchema
200OKCatalogRevisionRollbackResult
207Status 207CatalogRevisionRollbackResult
401UnauthorizedError
403ForbiddenError
404Not FoundError
409ConflictError

Schemas

CatalogDiff

FieldTypeDescription
fromRevisioninteger(required)
toRevisioninteger(required)
addedobject[](required)
changedobject[](required)
removedobject[](required)

CatalogRevision

FieldTypeDescription
idstring(required)
projectIdstring | null(required)
appliedAtstring(required)
appliedBystring | null(required)
itemsobject[](required)
deletionsobject[](required)
responseobject(required)
forceboolean(required)

CatalogRevisionListItem

FieldTypeDescription
idstring(required)
projectIdstring | null(required)
appliedAtstring(required)
appliedBystring | null(required)
forceboolean(required)
itemCountinteger(required)
deletionCountinteger(required)
succeededCountinteger(required)
failedCountinteger(required)
skippedCountinteger(required)
versioninteger(required)

CatalogRevisionPage

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

CatalogRevisionRollbackResult

FieldTypeDescription
revisionIdstring(required)
rolledBackFromstring(required)
hunkIdstring | null(required)
succeededobject[](required)
failedobject[](required)
skippedobject[](required)

CatalogRevisionSnapshotList

Type: object[]

Error

FieldTypeDescription
errorstring(required)
codestring