app.chronosky.schedule.listPosts

chronosky.app

Schema Diff

+48 -2

From

CID
bafyreibcyc4za2l...
Indexed At
2026-02-18 18:04 UTC
View this version

To

CID
bafyreidlhwepmds...
Indexed At
2026-03-19 20:24 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 15 non-breaking changes.

Breaking Changes (2)
  • RemovedEdge RemovedEdge { src: "app.chronosky.schedule.listPosts#scheduledPost.embed", tgt: "app.chronosky.schedule.listPosts#scheduledPost.embed:variant1", kind: "variant", name: Some("app.bsky.embed.images#view") }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.cid", sort: "maxLength", value: "200" }
Non-Breaking Changes (15)
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageView" }
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageView.images" }
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageView.images:items" }
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage" }
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.alt" }
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.cid" }
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.fullsize" }
  • AddedVertex AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.thumb" }
  • AddedEdge AddedEdge { src: "app.chronosky.schedule.listPosts#imageView", tgt: "app.chronosky.schedule.listPosts#imageView.images", kind: "prop", name: Some("images") }
  • AddedEdge AddedEdge { src: "app.chronosky.schedule.listPosts#imageView.images", tgt: "app.chronosky.schedule.listPosts#imageView.images:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.alt", kind: "prop", name: Some("alt") }
  • AddedEdge AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.cid", kind: "prop", name: Some("cid") }
  • AddedEdge AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.fullsize", kind: "prop", name: Some("fullsize") }
  • AddedEdge AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.thumb", kind: "prop", name: Some("thumb") }
  • AddedEdge AddedEdge { src: "app.chronosky.schedule.listPosts#scheduledPost.embed", tgt: "app.chronosky.schedule.listPosts#scheduledPost.embed:variant1", kind: "variant", name: Some("#imageView") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageView" }
  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageView.images" }
  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageView.images:items" }
  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage" }
  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.alt" }
  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.cid" }
  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.fullsize" }
  • AddedVertex { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.thumb" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "app.chronosky.schedule.listPosts#imageViewImage.cid", sort: "maxLength", value: "200" }

Additional Notes

  • Breaking: RemovedEdge { src: "app.chronosky.schedule.listPosts#scheduledPost.embed", tgt: "app.chronosky.schedule.listPosts#scheduledPost.embed:variant1", kind: "variant", name: Some("app.bsky.embed.images#view") }
  • Non-breaking: AddedEdge { src: "app.chronosky.schedule.listPosts#imageView", tgt: "app.chronosky.schedule.listPosts#imageView.images", kind: "prop", name: Some("images") }
  • Non-breaking: AddedEdge { src: "app.chronosky.schedule.listPosts#imageView.images", tgt: "app.chronosky.schedule.listPosts#imageView.images:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.alt", kind: "prop", name: Some("alt") }
  • Non-breaking: AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.cid", kind: "prop", name: Some("cid") }
  • Non-breaking: AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.fullsize", kind: "prop", name: Some("fullsize") }
  • Non-breaking: AddedEdge { src: "app.chronosky.schedule.listPosts#imageViewImage", tgt: "app.chronosky.schedule.listPosts#imageViewImage.thumb", kind: "prop", name: Some("thumb") }
  • Non-breaking: AddedEdge { src: "app.chronosky.schedule.listPosts#scheduledPost.embed", tgt: "app.chronosky.schedule.listPosts#scheduledPost.embed:variant1", kind: "variant", name: Some("#imageView") }
1 1
{
2 2
  "id": "app.chronosky.schedule.listPosts",
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
            "posts",
11 11
            "pagination"
12 12
          ],
13 13
          "properties": {
14 14
            "posts": {
15 15
              "type": "array",
16 16
              "items": {
17 17
                "ref": "#scheduledPost",
18 18
                "type": "ref"
19 19
              }
20 20
            },
21 21
            "pagination": {
22 22
              "ref": "#pagination",
23 23
              "type": "ref"
24 24
            }
25 25
          }
26 26
        },
27 27
        "encoding": "application/json"
28 28
      },
29 29
      "parameters": {
30 30
        "type": "params",
31 31
        "properties": {
32 32
          "page": {
33 33
            "type": "integer",
34 34
            "default": 1,
35 35
            "minimum": 1,
36 36
            "description": "Page number (1-indexed)."
37 37
          },
38 38
          "limit": {
39 39
            "type": "integer",
40 40
            "default": 20,
41 41
            "maximum": 100,
42 42
            "minimum": 1,
43 43
            "description": "Number of parent posts per page. Thread posts always include all children regardless of limit (e.g., limit=100 returns up to 100 parent posts plus all their children)."
44 44
          },
45 45
          "status": {
46 46
            "enum": [
47 47
              "PENDING",
48 48
              "EXECUTING",
49 49
              "COMPLETED",
50 50
              "FAILED",
51 51
              "CANCELLED"
52 52
            ],
53 53
            "type": "string",
54 54
            "maxLength": 20,
55 55
            "description": "Filter by post status."
56 56
          }
57 57
        }
58 58
      },
59 59
      "description": "List scheduled posts for the authenticated user with pagination and filtering."
60 60
    },
61 +
    "imageView": {
62 +
      "type": "object",
63 +
      "required": [
64 +
        "images"
65 +
      ],
66 +
      "properties": {
67 +
        "images": {
68 +
          "type": "array",
69 +
          "items": {
70 +
            "ref": "#imageViewImage",
71 +
            "type": "ref"
72 +
          },
73 +
          "maxLength": 4,
74 +
          "description": "List of image views with CID references."
75 +
        }
76 +
      },
77 +
      "description": "Image embed view with CID references. Similar to app.bsky.embed.images#view but includes cid on each image."
78 +
    },
61 79
    "pagination": {
62 80
      "type": "object",
63 81
      "required": [
64 82
        "page",
65 83
        "limit",
66 84
        "total",
67 85
        "totalPages"
68 86
      ],
69 87
      "properties": {
70 88
        "page": {
71 89
          "type": "integer",
72 90
          "minimum": 1,
73 91
          "description": "Current page number."
74 92
        },
75 93
        "limit": {
76 94
          "type": "integer",
77 95
          "minimum": 1,
78 96
          "description": "Posts per page."
79 97
        },
80 98
        "total": {
81 99
          "type": "integer",
82 100
          "minimum": 0,
83 101
          "description": "Total number of posts."
84 102
        },
85 103
        "totalPages": {
86 104
          "type": "integer",
87 105
          "minimum": 0,
88 106
          "description": "Total number of pages."
89 107
        }
90 108
      },
91 109
      "description": "Pagination information."
92 110
    },
93 111
    "scheduledPost": {
94 112
      "type": "object",
95 113
      "required": [
96 114
        "id",
97 115
        "userId",
98 116
        "text",
99 117
        "scheduledAt",
100 118
        "status",
101 119
        "createdAt",
102 120
        "updatedAt",
103 121
        "retryCount",
104 122
        "langs"
105 123
      ],
106 124
      "properties": {
107 125
        "id": {
108 126
          "type": "string",
109 127
          "maxLength": 100,
110 128
          "description": "Post ID."
111 129
        },
112 130
        "text": {
113 131
          "type": "string",
114 132
          "maxLength": 3000,
115 133
          "description": "Post content text (app.bsky.feed.post#text). May be empty if embeds are present.",
116 134
          "maxGraphemes": 300
117 135
        },
118 136
        "atUri": {
119 137
          "type": "string",
120 138
          "maxLength": 500,
121 139
          "description": "AT Protocol post URI (at://did:plc:.../app.bsky.feed.post/...). Present after successful execution."
122 140
        },
123 141
        "embed": {
124 142
          "refs": [
125 143
            "app.bsky.embed.images",
126 -
            "app.bsky.embed.images#view",
144 +
            "#imageView",
127 145
            "app.bsky.embed.external",
128 146
            "app.bsky.embed.record",
129 147
            "app.bsky.embed.video",
130 148
            "app.bsky.embed.recordWithMedia"
131 149
          ],
132 150
          "type": "union",
133 -
          "description": "Embedded content such as images, external links, or quoted posts (app.bsky.embed.*). For image embeds, may be returned as app.bsky.embed.images#view with thumb/fullsize URLs."
151 +
          "description": "Embedded content such as images, external links, or quoted posts. For image embeds, returned as #imageView with thumb/fullsize URLs and CID references."
134 152
        },
135 153
        "langs": {
136 154
          "type": "array",
137 155
          "items": {
138 156
            "type": "string",
139 157
            "format": "language"
140 158
          },
141 159
          "maxLength": 3,
142 160
          "description": "Language codes for post content (app.bsky.feed.post#langs). ISO 639-1 or 639-3 codes."
143 161
        },
144 162
        "atRkey": {
145 163
          "type": "string",
146 164
          "maxLength": 100,
147 165
          "description": "AT Protocol record key. Present after successful execution."
148 166
        },
149 167
        "facets": {
150 168
          "type": "array",
151 169
          "items": {
152 170
            "ref": "app.bsky.richtext.facet",
153 171
            "type": "ref"
154 172
          },
155 173
          "description": "Rich text facets for mentions, links, and hashtags (app.bsky.richtext.facet)."
156 174
        },
157 175
        "labels": {
158 176
          "ref": "com.atproto.label.defs#selfLabels",
159 177
          "type": "ref",
160 178
          "description": "Self-applied content labels for content warnings (AT Protocol standard)."
161 179
        },
162 180
        "status": {
163 181
          "enum": [
164 182
            "PENDING",
165 183
            "EXECUTING",
166 184
            "COMPLETED",
167 185
            "FAILED",
168 186
            "CANCELLED"
169 187
          ],
170 188
          "type": "string",
171 189
          "maxLength": 20,
172 190
          "description": "Post status."
173 191
        },
174 192
        "userId": {
175 193
          "type": "string",
176 194
          "maxLength": 200,
177 195
          "description": "User ID who created this post."
178 196
        },
179 197
        "children": {
180 198
          "type": "array",
181 199
          "items": {
182 200
            "ref": "#scheduledPost",
183 201
            "type": "ref"
184 202
          },
185 203
          "description": "Child posts in thread. Only present for parent posts with children."
186 204
        },
187 205
        "errorMsg": {
188 206
          "type": "string",
189 207
          "maxLength": 2000,
190 208
          "description": "Error message if execution failed. Present only when status is FAILED."
191 209
        },
192 210
        "createdAt": {
193 211
          "type": "string",
194 212
          "format": "datetime",
195 213
          "maxLength": 100,
196 214
          "description": "Post creation datetime (ISO 8601)."
197 215
        },
198 216
        "updatedAt": {
199 217
          "type": "string",
200 218
          "format": "datetime",
201 219
          "maxLength": 100,
202 220
          "description": "Post last update datetime (ISO 8601)."
203 221
        },
204 222
        "executedAt": {
205 223
          "type": "string",
206 224
          "format": "datetime",
207 225
          "maxLength": 100,
208 226
          "description": "Execution completion datetime (ISO 8601). Present only when status is COMPLETED or FAILED."
209 227
        },
210 228
        "retryCount": {
211 229
          "type": "integer",
212 230
          "minimum": 0,
213 231
          "description": "Number of execution retry attempts."
214 232
        },
215 233
        "postgateCid": {
216 234
          "type": "string",
217 235
          "maxLength": 100,
218 236
          "description": "CID for postgate record. Present after successful execution with postgate settings."
219 237
        },
220 238
        "postgateUri": {
221 239
          "type": "string",
222 240
          "maxLength": 500,
223 241
          "description": "AT Protocol URI for postgate record. Present after successful execution with postgate settings."
224 242
        },
225 243
        "scheduledAt": {
226 244
          "type": "string",
227 245
          "format": "datetime",
228 246
          "maxLength": 100,
229 247
          "description": "Scheduled publication datetime (ISO 8601)."
230 248
        },
231 249
        "threadDepth": {
232 250
          "type": "integer",
233 251
          "minimum": 0,
234 252
          "description": "Thread depth level (0 for root post, 1 for direct reply, etc.)."
235 253
        },
236 254
        "parentPostId": {
237 255
          "type": "string",
238 256
          "maxLength": 100,
239 257
          "description": "Parent post ID for thread posts. Null for root posts."
240 258
        },
241 259
        "threadgateCid": {
242 260
          "type": "string",
243 261
          "maxLength": 100,
244 262
          "description": "CID for threadgate record. Present after successful execution with threadgate rules."
245 263
        },
246 264
        "threadgateUri": {
247 265
          "type": "string",
248 266
          "maxLength": 500,
249 267
          "description": "AT Protocol URI for threadgate record. Present after successful execution with threadgate rules."
250 268
        },
251 269
        "threadPosition": {
252 270
          "type": "integer",
253 271
          "minimum": 0,
254 272
          "description": "Position in thread (0-indexed). 0 for parent post, 1+ for children."
255 273
        },
256 274
        "threadgateRules": {
257 275
          "type": "array",
258 276
          "items": {
259 277
            "refs": [
260 278
              "app.bsky.feed.threadgate#mentionRule",
261 279
              "app.bsky.feed.threadgate#followerRule",
262 280
              "app.bsky.feed.threadgate#followingRule",
263 281
              "app.bsky.feed.threadgate#listRule"
264 282
            ],
265 283
            "type": "union"
266 284
          },
267 285
          "maxLength": 5,
268 286
          "description": "Reply restriction rules (app.bsky.feed.threadgate). Defines who can reply to this post."
269 287
        },
270 288
        "postgateDisableEmbedding": {
271 289
          "type": "boolean",
272 290
          "description": "Whether to disable quote posts and embeds for this post (app.bsky.feed.postgate)."
273 291
        }
274 292
      },
275 293
      "description": "Scheduled post object with AT Protocol standard fields."
294 +
    },
295 +
    "imageViewImage": {
296 +
      "type": "object",
297 +
      "required": [
298 +
        "thumb",
299 +
        "fullsize",
300 +
        "alt"
301 +
      ],
302 +
      "properties": {
303 +
        "alt": {
304 +
          "type": "string",
305 +
          "description": "Alt text for the image."
306 +
        },
307 +
        "cid": {
308 +
          "type": "string",
309 +
          "maxLength": 200,
310 +
          "description": "CID of the image blob. Use this value with updatePost#imagesEmbed to reference this image without re-uploading."
311 +
        },
312 +
        "thumb": {
313 +
          "type": "string",
314 +
          "description": "Thumbnail URL for the image."
315 +
        },
316 +
        "fullsize": {
317 +
          "type": "string",
318 +
          "description": "Full-size URL for the image."
319 +
        }
320 +
      },
321 +
      "description": "Image view with CID for referencing in updatePost. Extends app.bsky.embed.images#viewImage with cid field."
276 322
    }
277 323
  },
278 324
  "$type": "com.atproto.lexicon.schema",
279 325
  "lexicon": 1
280 326
}

Compare Other Versions

Lexicon Garden

@