ink.branchline.listNotifications
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"actor": {
"properties": {
"did": {
"format": "did",
"type": "string"
},
"displayName": {
"type": "string"
},
"handle": {
"format": "handle",
"type": "string"
}
},
"required": [
"did"
],
"type": "object"
},
"bookmarkGrowthView": {
"description": "A story the viewer bookmarked received new buds past the viewer's last dismissal.",
"properties": {
"actorCount": {
"minimum": 1,
"type": "integer"
},
"actors": {
"items": {
"ref": "#actor",
"type": "ref"
},
"maxLength": 10,
"type": "array"
},
"groupKey": {
"description": "Format: 'bookmarkGrowth:{rootUri}'.",
"type": "string"
},
"latestAt": {
"description": "createdAt of the most recent qualifying new bud on this story.",
"format": "datetime",
"type": "string"
},
"newBudCount": {
"description": "Number of new buds since the viewer last dismissed this group (bounded for display).",
"minimum": 1,
"type": "integer"
},
"rootTitle": {
"type": "string"
},
"rootUri": {
"description": "Root bud AT-URI of the bookmarked story.",
"format": "at-uri",
"type": "string"
}
},
"required": [
"groupKey",
"latestAt",
"rootUri",
"rootTitle",
"newBudCount",
"actors",
"actorCount"
],
"type": "object"
},
"continuationView": {
"description": "One of the viewer's buds received at least one child bud since the group was last read.",
"properties": {
"actorCount": {
"minimum": 1,
"type": "integer"
},
"actors": {
"description": "Up to 10 unique actors who wrote qualifying child buds, most-recent actor first.",
"items": {
"ref": "#actor",
"type": "ref"
},
"maxLength": 10,
"type": "array"
},
"groupKey": {
"description": "Stable identifier used with ink.branchline.markNotificationsRead. Format: 'continuation:{parentUri}'.",
"type": "string"
},
"latestAt": {
"description": "Timestamp of the most recent child bud in this group. Drives sort order.",
"format": "datetime",
"type": "string"
},
"parentTitle": {
"type": "string"
},
"parentUri": {
"description": "AT-URI of the viewer's bud that was extended.",
"format": "at-uri",
"type": "string"
}
},
"required": [
"groupKey",
"latestAt",
"parentUri",
"parentTitle",
"actors",
"actorCount"
],
"type": "object"
},
"main": {
"description": "List unread notifications for the authenticated viewer. Requires a valid session cookie; responds 401 otherwise. Notifications are derived from indexed records (no separate notification table) and grouped by subject; a group counts as unread when its latestAt is newer than the viewer's stored readAt for that group (see ink.branchline.markNotificationsRead). Three kinds are emitted: 'continuation' (someone grew one of the viewer's buds), 'seedGrant' (someone gave the viewer a seed), and 'bookmarkGrowth' (new buds on a story the viewer bookmarked).",
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"notifications": {
"items": {
"closed": true,
"refs": [
"#continuationView",
"#seedGrantView",
"#bookmarkGrowthView"
],
"type": "union"
},
"type": "array"
}
},
"required": [
"notifications"
],
"type": "object"
}
},
"parameters": {
"properties": {
"limit": {
"default": 20,
"maximum": 50,
"minimum": 1,
"type": "integer"
}
},
"type": "params"
},
"type": "query"
},
"seedGrantView": {
"description": "Someone granted the viewer a seed.",
"properties": {
"grantor": {
"ref": "#actor",
"type": "ref"
},
"groupKey": {
"description": "Format: 'seedGrant:{seedUri}'.",
"type": "string"
},
"latestAt": {
"description": "createdAt of the seed.",
"format": "datetime",
"type": "string"
},
"seedUri": {
"format": "at-uri",
"type": "string"
}
},
"required": [
"groupKey",
"latestAt",
"seedUri",
"grantor"
],
"type": "object"
}
},
"id": "ink.branchline.listNotifications",
"lexicon": 1
}
Metadata
- DID
-
did:plc:brvu7akhdvsqcomb67pafw25 - CID
-
bafyreibovkohqs7acurigypldz633xypmnp4szqwxj3c3ufip3ujjjzpsa - Indexed At
- 2026-04-20 22:24 UTC
- AT-URI
-
at://did:plc:brvu7akhdvsqcomb67pafw25/com.atproto.lexicon.schema/ink.branchline.listNotifications
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
Paginated notifications addressed to the requesting viewer, newest first. The viewer DID is read from the service-auth JWT (`iss` claim) — no `?viewer=` query parameter.
-
Notifications for the authenticated viewer (newest first). Includes read items; AppView may drop items older than 30 days.
-
[UNSTABLE - DO NOT USE THIS ENDPOINT WHILE THIS NOTE IS HERE] Enumerate notifications for the requesting account, pre-grouped for rendering. Supersedes listNotifications. Requires auth.
-
Enumerate notifications for the requesting account. Requires auth.
-
List the viewer's notifications.