ink.branchline.getBuds

branchline.ink

Schema Diff

+13 -1

From

CID
bafyreihte2qd42i...
Indexed At
2026-04-18 03:25 UTC
View this version

To

CID
bafyreig3o45if75...
Indexed At
2026-04-20 22:24 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 6 non-breaking changes.

Non-Breaking Changes (6)
  • AddedVertex AddedVertex { vertex_id: "ink.branchline.getBuds#budView.bloomsAt" }
  • AddedVertex AddedVertex { vertex_id: "ink.branchline.getBuds#budView.viewerBookmarked" }
  • AddedVertex AddedVertex { vertex_id: "ink.branchline.getBuds#budView.viewerCanEdit" }
  • AddedEdge AddedEdge { src: "ink.branchline.getBuds#budView", tgt: "ink.branchline.getBuds#budView.bloomsAt", kind: "prop", name: Some("bloomsAt") }
  • AddedEdge AddedEdge { src: "ink.branchline.getBuds#budView", tgt: "ink.branchline.getBuds#budView.viewerBookmarked", kind: "prop", name: Some("viewerBookmarked") }
  • AddedEdge AddedEdge { src: "ink.branchline.getBuds#budView", tgt: "ink.branchline.getBuds#budView.viewerCanEdit", kind: "prop", name: Some("viewerCanEdit") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "ink.branchline.getBuds#budView.bloomsAt" }
  • AddedVertex { vertex_id: "ink.branchline.getBuds#budView.viewerBookmarked" }
  • AddedVertex { vertex_id: "ink.branchline.getBuds#budView.viewerCanEdit" }

Additional Notes

  • Non-breaking: AddedEdge { src: "ink.branchline.getBuds#budView", tgt: "ink.branchline.getBuds#budView.bloomsAt", kind: "prop", name: Some("bloomsAt") }
  • Non-breaking: AddedEdge { src: "ink.branchline.getBuds#budView", tgt: "ink.branchline.getBuds#budView.viewerBookmarked", kind: "prop", name: Some("viewerBookmarked") }
  • Non-breaking: AddedEdge { src: "ink.branchline.getBuds#budView", tgt: "ink.branchline.getBuds#budView.viewerCanEdit", kind: "prop", name: Some("viewerCanEdit") }
1 1
{
2 2
  "id": "ink.branchline.getBuds",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "query",
6 6
      "output": {
7 7
        "schema": {
8 8
          "type": "object",
9 9
          "required": [
10 10
            "buds"
11 11
          ],
12 12
          "properties": {
13 13
            "buds": {
14 14
              "type": "array",
15 15
              "items": {
16 16
                "ref": "#budView",
17 17
                "type": "ref"
18 18
              }
19 19
            }
20 20
          }
21 21
        },
22 22
        "encoding": "application/json"
23 23
      },
24 24
      "parameters": {
25 25
        "type": "params",
26 26
        "required": [
27 27
          "uris"
28 28
        ],
29 29
        "properties": {
30 30
          "uris": {
31 31
            "type": "array",
32 32
            "items": {
33 33
              "type": "string",
34 34
              "format": "at-uri"
35 35
            },
36 36
            "maxLength": 25,
37 37
            "description": "AT-URIs of buds to hydrate."
38 38
          }
39 39
        }
40 40
      },
41 41
      "description": "Hydrate full bud views for a set of AT-URIs. Buds are returned in the same order as the input URIs. Unknown URIs are silently omitted from the response."
42 42
    },
43 43
    "budView": {
44 44
      "type": "object",
45 45
      "required": [
46 46
        "uri",
47 47
        "cid",
48 -
        "author",
49 48
        "title",
50 49
        "text",
51 50
        "createdAt",
52 51
        "depth",
53 52
        "pollenCount"
54 53
      ],
55 54
      "properties": {
56 55
        "cid": {
57 56
          "type": "string",
58 57
          "format": "cid"
59 58
        },
60 59
        "uri": {
61 60
          "type": "string",
62 61
          "format": "at-uri"
63 62
        },
64 63
        "text": {
65 64
          "type": "string"
66 65
        },
67 66
        "depth": {
68 67
          "type": "integer",
69 68
          "minimum": 0,
70 69
          "description": "Depth of this bud in the story tree (0 = root)."
71 70
        },
72 71
        "title": {
73 72
          "type": "string"
74 73
        },
75 74
        "author": {
76 75
          "ref": "#authorView",
77 76
          "type": "ref"
78 77
        },
79 78
        "locked": {
80 79
          "type": "boolean",
81 80
          "description": "True when the bud's bloom time can no longer be extended."
82 81
        },
83 82
        "parent": {
84 83
          "ref": "com.atproto.repo.strongRef",
85 84
          "type": "ref"
86 85
        },
87 86
        "growing": {
88 87
          "type": "boolean",
89 88
          "description": "True when the bud has not yet reached its bloomsAt time and is still in the growing window."
90 89
        },
90 +
        "bloomsAt": {
91 +
          "type": "string",
92 +
          "format": "datetime",
93 +
          "description": "Timestamp when this bud finishes its growing window and blooms into the feed. Present on every bud; compare with the current time rather than relying on `growing` alone when a live countdown is needed."
94 +
        },
91 95
        "children": {
92 96
          "type": "array",
93 97
          "items": {
94 98
            "type": "string",
95 99
            "format": "at-uri"
96 100
          },
97 101
          "description": "AT-URIs of buds that extend this bud."
98 102
        },
99 103
        "createdAt": {
100 104
          "type": "string",
101 105
          "format": "datetime"
102 106
        },
103 107
        "formatting": {
104 108
          "type": "array",
105 109
          "items": {
106 110
            "ref": "ink.branchline.bud#formatSpan",
107 111
            "type": "ref"
108 112
          }
109 113
        },
110 114
        "pollenCount": {
111 115
          "type": "integer",
112 116
          "minimum": 0,
113 117
          "description": "Lifetime number of pollen grains on this bud (raw count, not the ranking-weighted score)."
114 118
        },
119 +
        "viewerCanEdit": {
120 +
          "type": "boolean",
121 +
          "description": "True when the authenticated viewer is permitted to edit this bud — they are the author, the bud has no children, and it is not locked. Omitted when there is no viewer session."
122 +
        },
123 +
        "viewerBookmarked": {
124 +
          "type": "boolean",
125 +
          "description": "True when the authenticated viewer has a bookmark whose subject is this bud. A bookmark earlier or later on the same lineage does not light this flag; only the exact subject does. Omitted when there is no viewer session."
126 +
        },
115 127
        "viewerPollinated": {
116 128
          "type": "boolean",
117 129
          "description": "True when the authenticated viewer has already pollinated this bud. Omitted when there is no viewer session."
118 130
        },
119 131
        "intermediateCount": {
120 132
          "type": "integer",
121 133
          "minimum": 0,
122 134
          "description": "Count of distinct contributor DIDs on the root-to-bud path, including the root author and this bud's author."
123 135
        }
124 136
      }
125 137
    },
126 138
    "authorView": {
127 139
      "type": "object",
128 140
      "required": [
129 141
        "did",
130 142
        "handle"
131 143
      ],
132 144
      "properties": {
133 145
        "did": {
134 146
          "type": "string",
135 147
          "format": "did"
136 148
        },
137 149
        "handle": {
138 150
          "type": "string",
139 151
          "format": "handle"
140 152
        },
141 153
        "displayName": {
142 154
          "type": "string",
143 155
          "maxLength": 640,
144 156
          "maxGraphemes": 64
145 157
        }
146 158
      }
147 159
    }
148 160
  },
149 161
  "$type": "com.atproto.lexicon.schema",
150 162
  "lexicon": 1
151 163
}

Compare Other Versions

Lexicon Garden

@