A single notification surfaced to the recipient. Server-projected from indexed like/reply records; recipients are scoped server-side from the viewer parameter.
Properties
author
ref
app.tempomusic.feed.defs#authorView
Required
The actor whose action produced this notification.
cid
string
cid
Required
A content identifier (CID) referencing immutable data.
indexedAt
string
datetime
Required
Timestamp at which the AppView indexed the source record.
isRead
boolean
Required
Server-computed from indexedAt and the recipient's stored seenAt; true when this notification predates seenAt.
reason
string
Required
Why this notification was produced. knownValues is informational; clients should accept unknown values and skip them.
maxLength: 100 bytespost-liked, post-replied, reply-likedreasonSubject
string
at-uri
Optional
AT-URI of the post or reply that was acted upon (the recipient's own record). Matches Bluesky's reasonSubject semantics.
record
unknown
Required
The underlying app.tempomusic.feed.like or app.tempomusic.feed.reply record carried verbatim with its $type discriminator. Lexicon-typed as unknown to match the AT Protocol convention for embedded records.
subjectRootUri
string
at-uri
Optional
AT-URI of the root post for navigation. For post-liked / post-replied this equals reasonSubject; for reply-liked this is the root post the liked reply hangs off, letting clients open the right thread without a second lookup.
uri
string
at-uri
Required
AT-URI of the source record (the like or reply) that produced this notification.
View raw schema
{
"type": "object",
"required": [
"uri",
"cid",
"author",
"reason",
"record",
"isRead",
"indexedAt"
],
"properties": {
"cid": {
"type": "string",
"format": "cid"
},
"uri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the source record (the like or reply) that produced this notification."
},
"author": {
"ref": "app.tempomusic.feed.defs#authorView",
"type": "ref",
"description": "The actor whose action produced this notification."
},
"isRead": {
"type": "boolean",
"description": "Server-computed from indexedAt and the recipient's stored seenAt; true when this notification predates seenAt."
},
"reason": {
"type": "string",
"maxLength": 100,
"description": "Why this notification was produced. knownValues is informational; clients should accept unknown values and skip them.",
"knownValues": [
"post-liked",
"post-replied",
"reply-liked"
]
},
"record": {
"type": "unknown",
"description": "The underlying app.tempomusic.feed.like or app.tempomusic.feed.reply record carried verbatim with its $type discriminator. Lexicon-typed as unknown to match the AT Protocol convention for embedded records."
},
"indexedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp at which the AppView indexed the source record."
},
"reasonSubject": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the post or reply that was acted upon (the recipient's own record). Matches Bluesky's reasonSubject semantics."
},
"subjectRootUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the root post for navigation. For post-liked / post-replied this equals reasonSubject; for reply-liked this is the root post the liked reply hangs off, letting clients open the right thread without a second lookup."
}
},
"description": "A single notification surfaced to the recipient. Server-projected from indexed like/reply records; recipients are scoped server-side from the viewer parameter."
}