Activity Feed API: schemas

The request and response bodies of the operations in this API.

CursorAckResponseDto

PropertyTypeRequiredDescription
acknowledgedbooleanyesWhether the cursor was acknowledged

CursorAckResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataCursorAckResponseDtoyes

FeedItemResponseDto

PropertyTypeRequiredDescription
categoryNotificationCategoryyesFeed category
createdAtstringyesWhen the feed item was created (ISO 8601)
detailobjectnoHuman-readable detail
eventTypestringyesSource event type
idstringyesFeed item ID
metadataobjectyesStructured metadata (typed per eventType)
occurredAtstringyesWhen the event originally occurred (ISO 8601)
severityone of "INFO", "SUCCESS", "WARNING", "ACTION_REQUIRED", "ERROR"yesSeverity level
titlestringyesHuman-readable title

FeedItemResponseDtoPaginatedEnvelope

PropertyTypeRequiredDescription
dataarray of FeedItemResponseDtoyes
paginationPaginationMetayes

NotificationCategory

Feed category

Type: string (10 values)

PaginationMeta

PropertyTypeRequiredDescription
hasMorebooleanno
limitnumberno
nextCursorstring or nullno
pagenumberno
previousCursorstring or nullno
totalnumberno
totalPagesnumberno

ProblemActionableBy

Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.

Type: one of "user", "org-admin", "platform", "none"

ProblemDetailsDto

RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codestringyesSCREAMING_SNAKE_CASE. The machine-branchable refusal, and the value a policy rule, a retry predicate and a UI branch all name.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ProblemFieldIssueDto

PropertyTypeRequiredDescription
codestringnoSCREAMING_SNAKE_CASE code of THIS issue, for a frontend i18n key. Present when the issue was minted by a declared problem.
detailstringyesProse for logs and developers. A frontend localises from code + params instead.
paramsmap of string or number or booleannoSafe i18n interpolation values for this issue's code.
pointerstringyesRFC 6901 JSON Pointer into the request body. Root is "/".

ProblemRetry

What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.

Type: one of "transient", "after-change", "never"

SubscriptionRequestDto

PropertyTypeRequiredDescription
idstringyesScope resource id
scopeone of "project", "session", "app"yesScope kind to subscribe to

UnreadResponseDto

PropertyTypeRequiredDescription
highestSeverityUnseenobjectnoHighest severity among unseen items
lastSeenAtobjectnoWhen the last seen item occurred
unreadCountnumberyesNumber of unread feed items

UnreadResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataUnreadResponseDtoyes

UpdateCursorDto

PropertyTypeRequiredDescription
deviceIdstringyesClient device identifier
lastSeenItemIdstringyesID of the last seen feed item