full diff

app.tempomusic.notification.defs

From
bafyreihkr3euuq4ho77m5w5wx5g3qlc2emy75chq64ylhmwx5tl2rdwlem indexed 2026-09-28 23:39 UTC View this version
To
bafyreignzqxqdhrxg4mmmwnozbdf2wx7tk6yny64nymowjkptwv535qidq indexed 2026-10-05 20:08 UTC View this version

Compatibility

breaking 4 breaking changes, 23 non-breaking changes.

Breaking changes (4)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.tempomusic.notification.defs#subjectView", src: "app.tempomusic.notification.defs#subjectView", tgt: "app.tempomusic.notification.defs#subjectView.uri", kind: "prop", name: Some("uri") }
  • RemovedVertex RemovedVertex { vertex_id: "app.tempomusic.feed.defs#authorView" }
  • RemovedEdge RemovedEdge { src: "app.tempomusic.notification.defs#notificationView.author", tgt: "app.tempomusic.feed.defs#authorView", kind: "ref", name: None }
  • ConstraintTightened ConstraintTightened { vertex_id: "app.tempomusic.notification.defs#notificationView.author", sort: "ref", old_value: "app.tempomusic.feed.defs#authorView", new_value: "app.tempomusic.actor.defs#profileViewBasic" }
Non-breaking changes (23)
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.actor.defs#profileViewBasic" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.feed.defs#albumRef" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.feed.defs#artistRef" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.feed.defs#songRef" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#notificationView.subject" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music:variant0" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music:variant1" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music:variant2" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.text" }
  • AddedVertex AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.uri" }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#notificationView", tgt: "app.tempomusic.notification.defs#notificationView.subject", kind: "prop", name: Some("subject") }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#notificationView.author", tgt: "app.tempomusic.actor.defs#profileViewBasic", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#notificationView.subject", tgt: "app.tempomusic.notification.defs#subjectView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView", tgt: "app.tempomusic.notification.defs#subjectView.music", kind: "prop", name: Some("music") }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView", tgt: "app.tempomusic.notification.defs#subjectView.text", kind: "prop", name: Some("text") }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music", tgt: "app.tempomusic.notification.defs#subjectView.music:variant0", kind: "variant", name: Some("app.tempomusic.feed.defs#songRef") }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music", tgt: "app.tempomusic.notification.defs#subjectView.music:variant1", kind: "variant", name: Some("app.tempomusic.feed.defs#albumRef") }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music", tgt: "app.tempomusic.notification.defs#subjectView.music:variant2", kind: "variant", name: Some("app.tempomusic.feed.defs#artistRef") }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music:variant0", tgt: "app.tempomusic.feed.defs#songRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music:variant1", tgt: "app.tempomusic.feed.defs#albumRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music:variant2", tgt: "app.tempomusic.feed.defs#artistRef", kind: "ref", name: None }

Migration guidance

Removed

  • RemovedVertex { vertex_id: "app.tempomusic.feed.defs#authorView" }

Added

  • AddedVertex { vertex_id: "app.tempomusic.actor.defs#profileViewBasic" }
  • AddedVertex { vertex_id: "app.tempomusic.feed.defs#albumRef" }
  • AddedVertex { vertex_id: "app.tempomusic.feed.defs#artistRef" }
  • AddedVertex { vertex_id: "app.tempomusic.feed.defs#songRef" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#notificationView.subject" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music:variant0" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music:variant1" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.music:variant2" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.text" }
  • AddedVertex { vertex_id: "app.tempomusic.notification.defs#subjectView.uri" }

Constraint changes

  • ConstraintTightened ConstraintTightened { vertex_id: "app.tempomusic.notification.defs#notificationView.author", sort: "ref", old_value: "app.tempomusic.feed.defs#authorView", new_value: "app.tempomusic.actor.defs#profileViewBasic" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "app.tempomusic.notification.defs#subjectView", src: "app.tempomusic.notification.defs#subjectView", tgt: "app.tempomusic.notification.defs#subjectView.uri", kind: "prop", name: Some("uri") }
  • Breaking: RemovedEdge { src: "app.tempomusic.notification.defs#notificationView.author", tgt: "app.tempomusic.feed.defs#authorView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#notificationView", tgt: "app.tempomusic.notification.defs#notificationView.subject", kind: "prop", name: Some("subject") }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#notificationView.author", tgt: "app.tempomusic.actor.defs#profileViewBasic", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#notificationView.subject", tgt: "app.tempomusic.notification.defs#subjectView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView", tgt: "app.tempomusic.notification.defs#subjectView.music", kind: "prop", name: Some("music") }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView", tgt: "app.tempomusic.notification.defs#subjectView.text", kind: "prop", name: Some("text") }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music", tgt: "app.tempomusic.notification.defs#subjectView.music:variant0", kind: "variant", name: Some("app.tempomusic.feed.defs#songRef") }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music", tgt: "app.tempomusic.notification.defs#subjectView.music:variant1", kind: "variant", name: Some("app.tempomusic.feed.defs#albumRef") }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music", tgt: "app.tempomusic.notification.defs#subjectView.music:variant2", kind: "variant", name: Some("app.tempomusic.feed.defs#artistRef") }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music:variant0", tgt: "app.tempomusic.feed.defs#songRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music:variant1", tgt: "app.tempomusic.feed.defs#albumRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.tempomusic.notification.defs#subjectView.music:variant2", tgt: "app.tempomusic.feed.defs#artistRef", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "notificationView": {
55 "description": "A single notification surfaced to the recipient. Server-projected from indexed like, reply and post records; recipients are scoped server-side from the viewer parameter.",
66 "properties": {
77 "author": {
8 "description": "The actor whose action produced this notification.",
9 "ref": "app.tempomusic.feed.defs#authorView",
8 "description": "The actor whose action produced this notification. Its handle is the one the AppView has verified for that account, absent until projected.",
9 "ref": "app.tempomusic.actor.defs#profileViewBasic",
1010 "type": "ref"
1111 },
1212 "cid": {
1313 "format": "cid",
1414 "type": "string"
1515 },
1616 "indexedAt": {
1717 "description": "Timestamp at which the AppView indexed the source record.",
1818 "format": "datetime",
1919 "type": "string"
2020 },
2121 "isRead": {
2222 "description": "Server-computed from indexedAt and the recipient's stored seenAt; true when this notification predates seenAt.",
2323 "type": "boolean"
2424 },
2525 "reason": {
2626 "description": "Why this notification was produced. knownValues is informational; clients should accept unknown values and skip them.",
2727 "knownValues": [
2828 "post-liked",
2929 "post-replied",
3030 "reply-liked",
3131 "post-mentioned",
3232 "reply-mentioned"
3333 ],
3434 "maxLength": 100,
3535 "type": "string"
3636 },
3737 "reasonSubject": {
3838 "description": "AT-URI of the post or reply that was acted upon (the recipient's own record). Matches Bluesky's reasonSubject semantics. Absent for mentions: the source record is the subject.",
3939 "format": "at-uri",
4040 "type": "string"
4141 },
4242 "record": {
4343 "description": "The underlying app.tempomusic.feed.like, app.tempomusic.feed.reply or app.tempomusic.feed.post record carried verbatim with its $type discriminator. Lexicon-typed as unknown to match the AT Protocol convention for embedded records.",
4444 "type": "unknown"
4545 },
46 "subject": {
47 "description": "The recipient's own post or reply that was acted upon (reasonSubject), for the row excerpt. Present for post-liked and reply-liked while that record is live and has something to show; absent for post-replied and the two mention reasons, where the source record in `record` carries the text the row shows, and absent whenever the AppView has nothing to serve — the liked record is gone, or it is a liked reply whose text is blank, leaving nothing to excerpt.",
48 "ref": "#subjectView",
49 "type": "ref"
50 },
4651 "subjectRootUri": {
4752 "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. For post-mentioned this is the source post itself; for reply-mentioned the root post of the thread the source reply belongs to.",
4853 "format": "at-uri",
4954 "type": "string"
5055 },
5156 "uri": {
5257 "description": "AT-URI of the source record (the like, reply or post) that produced this notification.",
5358 "format": "at-uri",
5459 "type": "string"
5560 }
5661 },
5762 "required": [
5863 "uri",
5964 "cid",
6065 "author",
6166 "reason",
6267 "record",
6368 "isRead",
6469 "indexedAt"
6570 ],
6671 "type": "object"
72 },
73 "subjectView": {
74 "description": "The acted-upon record reduced to what a notification row shows of it: its text and, for a post, the music it is about — the fallback when the post has no text.",
75 "properties": {
76 "music": {
77 "description": "The music the acted-upon post is about, so a row can fall back to it when the post has no text. Absent when the record is a reply. The union is open: clients must keep decoding a notification whose music $type they do not know.",
78 "refs": [
79 "app.tempomusic.feed.defs#songRef",
80 "app.tempomusic.feed.defs#albumRef",
81 "app.tempomusic.feed.defs#artistRef"
82 ],
83 "type": "union"
84 },
85 "text": {
86 "description": "The record's text. Absent when the record carries none, or only whitespace. A post with no text still carries its music, so a subject always has one of the two: a liked reply whose text is blank carries no subject at all. Bounds mirror app.tempomusic.feed.post#text.",
87 "maxGraphemes": 300,
88 "maxLength": 3000,
89 "type": "string"
90 },
91 "uri": {
92 "description": "AT-URI of the acted-upon record, equal to the notification's reasonSubject.",
93 "format": "at-uri",
94 "type": "string"
95 }
96 },
97 "required": [
98 "uri"
99 ],
100 "type": "object"
67101 }
68102 },
69103 "id": "app.tempomusic.notification.defs",
70104 "lexicon": 1
71105}

Compare other versions