app.atmobb.discussion.getThreadPage

lexicons.atmobb.app

Schema Diff

+55 -1

From

CID
bafyreib2llwuulr...
Indexed At
2026-09-13 00:02 UTC
View this version

To

CID
bafyreiasojleexs...
Indexed At
2026-09-13 23:12 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 20 non-breaking changes.

Breaking Changes (3)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.discussion.getThreadPage#postView", src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.uri", kind: "prop", name: Some("uri") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.discussion.getThreadPage#postView", src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.value", kind: "prop", name: Some("value") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.discussion.getThreadPage#postView", src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.author", kind: "prop", name: Some("author") }
Non-Breaking Changes (20)
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.author" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorPosts" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorProfile" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorStamps" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorStamps:items" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorTotalPosts" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.cid" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.indexedAt" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.uri" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.value" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.getStamps#trayEntry" }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorPosts", kind: "prop", name: Some("authorPosts") }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorProfile", kind: "prop", name: Some("authorProfile") }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorStamps", kind: "prop", name: Some("authorStamps") }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorTotalPosts", kind: "prop", name: Some("authorTotalPosts") }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.cid", kind: "prop", name: Some("cid") }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.indexedAt", kind: "prop", name: Some("indexedAt") }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView.authorStamps", tgt: "app.atmobb.discussion.getThreadPage#postView.authorStamps:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView.authorStamps:items", tgt: "app.atmobb.forum.getStamps#trayEntry", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.author" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorPosts" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorProfile" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorStamps" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorStamps:items" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.authorTotalPosts" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.cid" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.indexedAt" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.uri" }
  • AddedVertex { vertex_id: "app.atmobb.discussion.getThreadPage#postView.value" }
  • AddedVertex { vertex_id: "app.atmobb.forum.getStamps#trayEntry" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.discussion.getThreadPage#postView", src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.uri", kind: "prop", name: Some("uri") }
  • Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.discussion.getThreadPage#postView", src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.value", kind: "prop", name: Some("value") }
  • Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.discussion.getThreadPage#postView", src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.author", kind: "prop", name: Some("author") }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorPosts", kind: "prop", name: Some("authorPosts") }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorProfile", kind: "prop", name: Some("authorProfile") }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorStamps", kind: "prop", name: Some("authorStamps") }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.authorTotalPosts", kind: "prop", name: Some("authorTotalPosts") }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.cid", kind: "prop", name: Some("cid") }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView", tgt: "app.atmobb.discussion.getThreadPage#postView.indexedAt", kind: "prop", name: Some("indexedAt") }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView.authorStamps", tgt: "app.atmobb.discussion.getThreadPage#postView.authorStamps:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.discussion.getThreadPage#postView.authorStamps:items", tgt: "app.atmobb.forum.getStamps#trayEntry", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 -
      "description": "One page of a thread: the thread, total reply count, and a page of replies in chronological order, with author profiles and postcounts hydrated. The thread carries its moderation flags for the viewing forum (hidden, locked, pinned).",
5 +
      "description": "One page of a thread: the thread, total reply count, and a page of replies in chronological order, with author profiles and worn stamps hydrated. The thread carries its moderation flags for the viewing forum (hidden, locked, pinned).",
6 6
      "output": {
7 7
        "encoding": "application/json",
8 8
        "schema": {
9 9
          "properties": {
10 10
            "cursor": {
11 11
              "type": "string"
12 12
            },
13 13
            "poll": {
14 14
              "description": "Vote counts per option, voter total, and the viewer's votes, when the thread has a poll.",
15 15
              "type": "unknown"
16 16
            },
17 17
            "replies": {
18 +
              "description": "Each item is shaped like #postView.",
18 19
              "items": {
19 20
                "type": "unknown"
20 21
              },
21 22
              "type": "array"
22 23
            },
23 24
            "replyCount": {
24 25
              "type": "integer"
25 26
            },
26 27
            "replyIndex": {
27 28
              "type": "integer"
28 29
            },
29 30
            "thread": {
31 +
              "description": "Shaped like #postView, plus origin and the moderation flags hidden, locked, lockedAt, and pinned.",
30 32
              "type": "unknown"
31 33
            }
32 34
          },
33 35
          "required": [
34 36
            "replies"
35 37
          ],
36 38
          "type": "object"
37 39
        }
38 40
      },
39 41
      "parameters": {
40 42
        "properties": {
41 43
          "cursor": {
42 44
            "type": "string"
43 45
          },
44 46
          "forum": {
45 47
            "format": "did",
46 48
            "type": "string"
47 49
          },
48 50
          "limit": {
49 51
            "default": 25,
50 52
            "maximum": 100,
51 53
            "minimum": 1,
52 54
            "type": "integer"
53 55
          },
54 56
          "reply": {
55 57
            "description": "Return the page holding this reply instead of the cursor's page. Its chronological position comes back as replyIndex.",
56 58
            "format": "at-uri",
57 59
            "type": "string"
58 60
          },
59 61
          "thread": {
60 62
            "format": "at-uri",
61 63
            "type": "string"
62 64
          },
63 65
          "viewer": {
64 66
            "description": "The reader, for their own poll votes.",
65 67
            "format": "did",
66 68
            "type": "string"
67 69
          }
68 70
        },
69 71
        "required": [
70 72
          "thread",
71 73
          "forum"
72 74
        ],
73 75
        "type": "params"
74 76
      },
75 77
      "type": "query"
78 +
    },
79 +
    "postView": {
80 +
      "description": "The fields a thread and each reply share: the post itself and its author, hydrated.",
81 +
      "properties": {
82 +
        "author": {
83 +
          "format": "did",
84 +
          "type": "string"
85 +
        },
86 +
        "authorPosts": {
87 +
          "description": "Deprecated and no longer rendered: the author's post count on this forum. Kept for older clients.",
88 +
          "type": "integer"
89 +
        },
90 +
        "authorProfile": {
91 +
          "description": "The author's app.atmobb.actor.profile record, when they have one.",
92 +
          "type": "unknown"
93 +
        },
94 +
        "authorStamps": {
95 +
          "description": "The stamps the author wears on the viewing forum, in order.",
96 +
          "items": {
97 +
            "ref": "app.atmobb.forum.getStamps#trayEntry",
98 +
            "type": "ref"
99 +
          },
100 +
          "maxLength": 3,
101 +
          "type": "array"
102 +
        },
103 +
        "authorTotalPosts": {
104 +
          "description": "Deprecated and no longer rendered: the author's post count across every indexed forum. Kept for older clients.",
105 +
          "type": "integer"
106 +
        },
107 +
        "cid": {
108 +
          "format": "cid",
109 +
          "type": "string"
110 +
        },
111 +
        "indexedAt": {
112 +
          "format": "datetime",
113 +
          "type": "string"
114 +
        },
115 +
        "uri": {
116 +
          "format": "at-uri",
117 +
          "type": "string"
118 +
        },
119 +
        "value": {
120 +
          "description": "The thread or reply record.",
121 +
          "type": "unknown"
122 +
        }
123 +
      },
124 +
      "required": [
125 +
        "uri",
126 +
        "author",
127 +
        "value"
128 +
      ],
129 +
      "type": "object"
76 130
    }
77 131
  },
78 132
  "id": "app.atmobb.discussion.getThreadPage",
79 133
  "lexicon": 1
80 134
}

Compare Other Versions

Lexicon Garden

@