app.tempomusic.notification.defs

lexicons.tempomusic.fan

Documentation

notificationView object

A single notification surfaced to the recipient. Server-projected from indexed like/reply records; recipients are scoped server-side from the viewer parameter.

Properties

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 bytes
Known values: post-liked, post-replied, reply-liked
reasonSubject 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."
}

Lexicon Garden

@