a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky
atproto bluesky typescript npm

feat(lexicon-doc): add pull command functionality

mary.my.id 4ade55d1 3a893455

verified
Changed files
+4992 -2125
.changeset
lexdocs
bluemoji
bluesky
frontpage
leaflet
lexcom
tangled
whtwnd
packages
definitions
atproto
lexicons
com
atproto
admin
identity
label
lexicon
moderation
repo
server
sync
temp
bluemoji
bluesky
lexicons
app
bsky
actor
bookmark
embed
feed
graph
labeler
notification
richtext
unspecced
video
chat
frontpage
lexicons
fyi
frontpage
unravel
lib
lexicons
types
fyi
frontpage
leaflet
lexicon-community
microcosm
lexicons
blue
com
bad-example
ozone
tangled
whitewind
lexicons
scripts
+36
.changeset/four-bees-double.md
··· 1 + --- 2 + '@atcute/lex-cli': minor 3 + --- 4 + 5 + add pull command functionality 6 + 7 + this is useful if you're consuming someone else's lexicons 8 + 9 + ```js 10 + // lex.config.js 11 + import { defineLexiconConfig } from '@atcute/lex-cli'; 12 + 13 + export default defineLexiconConfig({ 14 + files: ['lexicons/**/*.json'], 15 + outdir: 'lib/lexicons/', 16 + imports: ['@atcute/atproto'], 17 + 18 + pull: { 19 + outdir: 'lexicons/', 20 + clean: true, 21 + sources: [ 22 + { 23 + type: 'git', 24 + remote: 'https://github.com/bluesky-social/atproto.git', 25 + pattern: ['lexicons/app/bsky/**/*.json', 'lexicons/chat/bsky/**/*.json'], 26 + }, 27 + ], 28 + }, 29 + }); 30 + ``` 31 + 32 + then run 33 + 34 + ``` 35 + pnpm lex-cli pull -c lex.config.js 36 + ```
+10
.changeset/wet-rats-admire.md
··· 1 + --- 2 + '@atcute/frontpage': major 3 + --- 4 + 5 + pull latest Frontpage lexicons 6 + 7 + normally this would've been a patch change, but this change alters Frontpage's types are exported to 8 + accomodate for the new `fyi.frontpage.*` namespace. 9 + 10 + another major change may occur if the old namespace is fully removed.
-1
lexdocs/bluemoji/README.md
··· 1 - https://github.com/aendra-rininsland/bluemoji/tree/802a236415645e765a40fb02b6dc1e04344058f5/schema/
lexdocs/bluemoji/blue.moji/collection/defs.json packages/definitions/bluemoji/lexicons/blue/moji/collection/defs.json
lexdocs/bluemoji/blue.moji/collection/getItem.json packages/definitions/bluemoji/lexicons/blue/moji/collection/getItem.json
lexdocs/bluemoji/blue.moji/collection/item.json packages/definitions/bluemoji/lexicons/blue/moji/collection/item.json
lexdocs/bluemoji/blue.moji/collection/listCollection.json packages/definitions/bluemoji/lexicons/blue/moji/collection/listCollection.json
lexdocs/bluemoji/blue.moji/collection/putItem.json packages/definitions/bluemoji/lexicons/blue/moji/collection/putItem.json
lexdocs/bluemoji/blue.moji/collection/saveToCollection.json packages/definitions/bluemoji/lexicons/blue/moji/collection/saveToCollection.json
lexdocs/bluemoji/blue.moji/packs/defs.json packages/definitions/bluemoji/lexicons/blue/moji/packs/defs.json
lexdocs/bluemoji/blue.moji/packs/getActorPacks.json packages/definitions/bluemoji/lexicons/blue/moji/packs/getActorPacks.json
lexdocs/bluemoji/blue.moji/packs/getPack.json packages/definitions/bluemoji/lexicons/blue/moji/packs/getPack.json
lexdocs/bluemoji/blue.moji/packs/getPacks.json packages/definitions/bluemoji/lexicons/blue/moji/packs/getPacks.json
lexdocs/bluemoji/blue.moji/packs/pack.json packages/definitions/bluemoji/lexicons/blue/moji/packs/pack.json
lexdocs/bluemoji/blue.moji/packs/packitem.json packages/definitions/bluemoji/lexicons/blue/moji/packs/packitem.json
lexdocs/bluemoji/blue.moji/richtext/facet.json packages/definitions/bluemoji/lexicons/blue/moji/richtext/facet.json
-1
lexdocs/bluesky/README.md
··· 1 - https://github.com/bluesky-social/atproto/tree/39b5c08e0799468eba0c3bf50f4f5a8104c35f34/lexicons/
+177 -48
lexdocs/bluesky/app/bsky/actor/defs.json packages/definitions/bluesky/lexicons/app/bsky/actor/defs.json
··· 6 6 "type": "object", 7 7 "required": ["did", "handle"], 8 8 "properties": { 9 - "did": { "type": "string", "format": "did" }, 10 - "handle": { "type": "string", "format": "handle" }, 9 + "did": { 10 + "type": "string", 11 + "format": "did" 12 + }, 13 + "handle": { 14 + "type": "string", 15 + "format": "handle" 16 + }, 11 17 "displayName": { 12 18 "type": "string", 13 19 "maxGraphemes": 64, 14 20 "maxLength": 640 15 21 }, 16 - "pronouns": { "type": "string" }, 17 - "avatar": { "type": "string", "format": "uri" }, 22 + "pronouns": { 23 + "type": "string" 24 + }, 25 + "avatar": { 26 + "type": "string", 27 + "format": "uri" 28 + }, 18 29 "associated": { 19 30 "type": "ref", 20 31 "ref": "#profileAssociated" 21 32 }, 22 - "viewer": { "type": "ref", "ref": "#viewerState" }, 33 + "viewer": { 34 + "type": "ref", 35 + "ref": "#viewerState" 36 + }, 23 37 "labels": { 24 38 "type": "array", 25 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 39 + "items": { 40 + "type": "ref", 41 + "ref": "com.atproto.label.defs#label" 42 + } 43 + }, 44 + "createdAt": { 45 + "type": "string", 46 + "format": "datetime" 26 47 }, 27 - "createdAt": { "type": "string", "format": "datetime" }, 28 48 "verification": { 29 49 "type": "ref", 30 50 "ref": "#verificationState" ··· 43 63 "type": "object", 44 64 "required": ["did", "handle"], 45 65 "properties": { 46 - "did": { "type": "string", "format": "did" }, 47 - "handle": { "type": "string", "format": "handle" }, 66 + "did": { 67 + "type": "string", 68 + "format": "did" 69 + }, 70 + "handle": { 71 + "type": "string", 72 + "format": "handle" 73 + }, 48 74 "displayName": { 49 75 "type": "string", 50 76 "maxGraphemes": 64, 51 77 "maxLength": 640 52 78 }, 53 - "pronouns": { "type": "string" }, 79 + "pronouns": { 80 + "type": "string" 81 + }, 54 82 "description": { 55 83 "type": "string", 56 84 "maxGraphemes": 256, 57 85 "maxLength": 2560 58 86 }, 59 - "avatar": { "type": "string", "format": "uri" }, 87 + "avatar": { 88 + "type": "string", 89 + "format": "uri" 90 + }, 60 91 "associated": { 61 92 "type": "ref", 62 93 "ref": "#profileAssociated" 63 94 }, 64 - "indexedAt": { "type": "string", "format": "datetime" }, 65 - "createdAt": { "type": "string", "format": "datetime" }, 66 - "viewer": { "type": "ref", "ref": "#viewerState" }, 95 + "indexedAt": { 96 + "type": "string", 97 + "format": "datetime" 98 + }, 99 + "createdAt": { 100 + "type": "string", 101 + "format": "datetime" 102 + }, 103 + "viewer": { 104 + "type": "ref", 105 + "ref": "#viewerState" 106 + }, 67 107 "labels": { 68 108 "type": "array", 69 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 109 + "items": { 110 + "type": "ref", 111 + "ref": "com.atproto.label.defs#label" 112 + } 70 113 }, 71 114 "verification": { 72 115 "type": "ref", ··· 86 129 "type": "object", 87 130 "required": ["did", "handle"], 88 131 "properties": { 89 - "did": { "type": "string", "format": "did" }, 90 - "handle": { "type": "string", "format": "handle" }, 132 + "did": { 133 + "type": "string", 134 + "format": "did" 135 + }, 136 + "handle": { 137 + "type": "string", 138 + "format": "handle" 139 + }, 91 140 "displayName": { 92 141 "type": "string", 93 142 "maxGraphemes": 64, ··· 98 147 "maxGraphemes": 256, 99 148 "maxLength": 2560 100 149 }, 101 - "pronouns": { "type": "string" }, 102 - "website": { "type": "string", "format": "uri" }, 103 - "avatar": { "type": "string", "format": "uri" }, 104 - "banner": { "type": "string", "format": "uri" }, 105 - "followersCount": { "type": "integer" }, 106 - "followsCount": { "type": "integer" }, 107 - "postsCount": { "type": "integer" }, 150 + "pronouns": { 151 + "type": "string" 152 + }, 153 + "website": { 154 + "type": "string", 155 + "format": "uri" 156 + }, 157 + "avatar": { 158 + "type": "string", 159 + "format": "uri" 160 + }, 161 + "banner": { 162 + "type": "string", 163 + "format": "uri" 164 + }, 165 + "followersCount": { 166 + "type": "integer" 167 + }, 168 + "followsCount": { 169 + "type": "integer" 170 + }, 171 + "postsCount": { 172 + "type": "integer" 173 + }, 108 174 "associated": { 109 175 "type": "ref", 110 176 "ref": "#profileAssociated" ··· 113 179 "type": "ref", 114 180 "ref": "app.bsky.graph.defs#starterPackViewBasic" 115 181 }, 116 - "indexedAt": { "type": "string", "format": "datetime" }, 117 - "createdAt": { "type": "string", "format": "datetime" }, 118 - "viewer": { "type": "ref", "ref": "#viewerState" }, 182 + "indexedAt": { 183 + "type": "string", 184 + "format": "datetime" 185 + }, 186 + "createdAt": { 187 + "type": "string", 188 + "format": "datetime" 189 + }, 190 + "viewer": { 191 + "type": "ref", 192 + "ref": "#viewerState" 193 + }, 119 194 "labels": { 120 195 "type": "array", 121 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 196 + "items": { 197 + "type": "ref", 198 + "ref": "com.atproto.label.defs#label" 199 + } 122 200 }, 123 201 "pinnedPost": { 124 202 "type": "ref", ··· 141 219 "profileAssociated": { 142 220 "type": "object", 143 221 "properties": { 144 - "lists": { "type": "integer" }, 145 - "feedgens": { "type": "integer" }, 146 - "starterPacks": { "type": "integer" }, 147 - "labeler": { "type": "boolean" }, 148 - "chat": { "type": "ref", "ref": "#profileAssociatedChat" }, 222 + "lists": { 223 + "type": "integer" 224 + }, 225 + "feedgens": { 226 + "type": "integer" 227 + }, 228 + "starterPacks": { 229 + "type": "integer" 230 + }, 231 + "labeler": { 232 + "type": "boolean" 233 + }, 234 + "chat": { 235 + "type": "ref", 236 + "ref": "#profileAssociatedChat" 237 + }, 149 238 "activitySubscription": { 150 239 "type": "ref", 151 240 "ref": "#profileAssociatedActivitySubscription" ··· 176 265 "type": "object", 177 266 "description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.", 178 267 "properties": { 179 - "muted": { "type": "boolean" }, 268 + "muted": { 269 + "type": "boolean" 270 + }, 180 271 "mutedByList": { 181 272 "type": "ref", 182 273 "ref": "app.bsky.graph.defs#listViewBasic" 183 274 }, 184 - "blockedBy": { "type": "boolean" }, 185 - "blocking": { "type": "string", "format": "at-uri" }, 275 + "blockedBy": { 276 + "type": "boolean" 277 + }, 278 + "blocking": { 279 + "type": "string", 280 + "format": "at-uri" 281 + }, 186 282 "blockingByList": { 187 283 "type": "ref", 188 284 "ref": "app.bsky.graph.defs#listViewBasic" 189 285 }, 190 - "following": { "type": "string", "format": "at-uri" }, 191 - "followedBy": { "type": "string", "format": "at-uri" }, 286 + "following": { 287 + "type": "string", 288 + "format": "at-uri" 289 + }, 290 + "followedBy": { 291 + "type": "string", 292 + "format": "at-uri" 293 + }, 192 294 "knownFollowers": { 193 295 "description": "This property is present only in selected cases, as an optimization.", 194 296 "type": "ref", ··· 206 308 "description": "The subject's followers whom you also follow", 207 309 "required": ["count", "followers"], 208 310 "properties": { 209 - "count": { "type": "integer" }, 311 + "count": { 312 + "type": "integer" 313 + }, 210 314 "followers": { 211 315 "type": "array", 212 316 "minLength": 0, ··· 226 330 "verifications": { 227 331 "type": "array", 228 332 "description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.", 229 - "items": { "type": "ref", "ref": "#verificationView" } 333 + "items": { 334 + "type": "ref", 335 + "ref": "#verificationView" 336 + } 230 337 }, 231 338 "verifiedStatus": { 232 339 "type": "string", ··· 292 399 "type": "object", 293 400 "required": ["enabled"], 294 401 "properties": { 295 - "enabled": { "type": "boolean", "default": false } 402 + "enabled": { 403 + "type": "boolean", 404 + "default": false 405 + } 296 406 } 297 407 }, 298 408 "contentLabelPref": { ··· 304 414 "description": "Which labeler does this preference apply to? If undefined, applies globally.", 305 415 "format": "did" 306 416 }, 307 - "label": { "type": "string" }, 417 + "label": { 418 + "type": "string" 419 + }, 308 420 "visibility": { 309 421 "type": "string", 310 422 "knownValues": ["ignore", "show", "warn", "hide"] ··· 424 536 "tags": { 425 537 "type": "array", 426 538 "maxLength": 100, 427 - "items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 }, 539 + "items": { 540 + "type": "string", 541 + "maxLength": 640, 542 + "maxGraphemes": 64 543 + }, 428 544 "description": "A list of tags which describe the account owner's interests gathered during onboarding." 429 545 } 430 546 } ··· 440 556 "description": "A word that the account owner has muted.", 441 557 "required": ["value", "targets"], 442 558 "properties": { 443 - "id": { "type": "string" }, 559 + "id": { 560 + "type": "string" 561 + }, 444 562 "value": { 445 563 "type": "string", 446 564 "description": "The muted word itself.", ··· 488 606 "properties": { 489 607 "items": { 490 608 "type": "array", 491 - "items": { "type": "string", "format": "at-uri" }, 609 + "items": { 610 + "type": "string", 611 + "format": "at-uri" 612 + }, 492 613 "description": "A list of URIs of posts the account owner has hidden." 493 614 } 494 615 } ··· 528 649 "description": "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.", 529 650 "type": "array", 530 651 "maxLength": 1000, 531 - "items": { "type": "string", "maxLength": 100 } 652 + "items": { 653 + "type": "string", 654 + "maxLength": 100 655 + } 532 656 }, 533 657 "nuxs": { 534 658 "description": "Storage for NUXs the user has encountered.", ··· 546 670 "type": "object", 547 671 "required": ["guide"], 548 672 "properties": { 549 - "guide": { "type": "string", "maxLength": 100 } 673 + "guide": { 674 + "type": "string", 675 + "maxLength": 100 676 + } 550 677 } 551 678 }, 552 679 "nux": { ··· 626 753 "description": "The status for the account.", 627 754 "knownValues": ["app.bsky.actor.status#live"] 628 755 }, 629 - "record": { "type": "unknown" }, 756 + "record": { 757 + "type": "unknown" 758 + }, 630 759 "embed": { 631 760 "type": "union", 632 761 "description": "An optional embed associated with the status.",
lexdocs/bluesky/app/bsky/actor/getPreferences.json packages/definitions/bluesky/lexicons/app/bsky/actor/getPreferences.json
lexdocs/bluesky/app/bsky/actor/getProfile.json packages/definitions/bluesky/lexicons/app/bsky/actor/getProfile.json
+4 -1
lexdocs/bluesky/app/bsky/actor/getProfiles.json packages/definitions/bluesky/lexicons/app/bsky/actor/getProfiles.json
··· 11 11 "properties": { 12 12 "actors": { 13 13 "type": "array", 14 - "items": { "type": "string", "format": "at-identifier" }, 14 + "items": { 15 + "type": "string", 16 + "format": "at-identifier" 17 + }, 15 18 "maxLength": 25 16 19 } 17 20 }
+6 -2
lexdocs/bluesky/app/bsky/actor/getSuggestions.json packages/definitions/bluesky/lexicons/app/bsky/actor/getSuggestions.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["actors"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "actors": { 28 32 "type": "array", 29 33 "items": {
+8 -2
lexdocs/bluesky/app/bsky/actor/profile.json packages/definitions/bluesky/lexicons/app/bsky/actor/profile.json
··· 26 26 "maxGraphemes": 20, 27 27 "maxLength": 200 28 28 }, 29 - "website": { "type": "string", "format": "uri" }, 29 + "website": { 30 + "type": "string", 31 + "format": "uri" 32 + }, 30 33 "avatar": { 31 34 "type": "blob", 32 35 "description": "Small image to be displayed next to posts from account. AKA, 'profile picture'", ··· 52 55 "type": "ref", 53 56 "ref": "com.atproto.repo.strongRef" 54 57 }, 55 - "createdAt": { "type": "string", "format": "datetime" } 58 + "createdAt": { 59 + "type": "string", 60 + "format": "datetime" 61 + } 56 62 } 57 63 } 58 64 }
lexdocs/bluesky/app/bsky/actor/putPreferences.json packages/definitions/bluesky/lexicons/app/bsky/actor/putPreferences.json
+6 -2
lexdocs/bluesky/app/bsky/actor/searchActors.json packages/definitions/bluesky/lexicons/app/bsky/actor/searchActors.json
··· 22 22 "maximum": 100, 23 23 "default": 25 24 24 }, 25 - "cursor": { "type": "string" } 25 + "cursor": { 26 + "type": "string" 27 + } 26 28 } 27 29 }, 28 30 "output": { ··· 31 33 "type": "object", 32 34 "required": ["actors"], 33 35 "properties": { 34 - "cursor": { "type": "string" }, 36 + "cursor": { 37 + "type": "string" 38 + }, 35 39 "actors": { 36 40 "type": "array", 37 41 "items": {
lexdocs/bluesky/app/bsky/actor/searchActorsTypeahead.json packages/definitions/bluesky/lexicons/app/bsky/actor/searchActorsTypeahead.json
+4 -1
lexdocs/bluesky/app/bsky/actor/status.json packages/definitions/bluesky/lexicons/app/bsky/actor/status.json
··· 25 25 "description": "The duration of the status in minutes. Applications can choose to impose minimum and maximum limits.", 26 26 "minimum": 1 27 27 }, 28 - "createdAt": { "type": "string", "format": "datetime" } 28 + "createdAt": { 29 + "type": "string", 30 + "format": "datetime" 31 + } 29 32 } 30 33 } 31 34 },
+8 -2
lexdocs/bluesky/app/bsky/bookmark/createBookmark.json packages/definitions/bluesky/lexicons/app/bsky/bookmark/createBookmark.json
··· 11 11 "type": "object", 12 12 "required": ["uri", "cid"], 13 13 "properties": { 14 - "uri": { "type": "string", "format": "at-uri" }, 15 - "cid": { "type": "string", "format": "cid" } 14 + "uri": { 15 + "type": "string", 16 + "format": "at-uri" 17 + }, 18 + "cid": { 19 + "type": "string", 20 + "format": "cid" 21 + } 16 22 } 17 23 } 18 24 },
+4 -1
lexdocs/bluesky/app/bsky/bookmark/defs.json packages/definitions/bluesky/lexicons/app/bsky/bookmark/defs.json
··· 23 23 "type": "ref", 24 24 "ref": "com.atproto.repo.strongRef" 25 25 }, 26 - "createdAt": { "type": "string", "format": "datetime" }, 26 + "createdAt": { 27 + "type": "string", 28 + "format": "datetime" 29 + }, 27 30 "item": { 28 31 "type": "union", 29 32 "refs": [
+4 -1
lexdocs/bluesky/app/bsky/bookmark/deleteBookmark.json packages/definitions/bluesky/lexicons/app/bsky/bookmark/deleteBookmark.json
··· 11 11 "type": "object", 12 12 "required": ["uri"], 13 13 "properties": { 14 - "uri": { "type": "string", "format": "at-uri" } 14 + "uri": { 15 + "type": "string", 16 + "format": "at-uri" 17 + } 15 18 } 16 19 } 17 20 },
+6 -2
lexdocs/bluesky/app/bsky/bookmark/getBookmarks.json packages/definitions/bluesky/lexicons/app/bsky/bookmark/getBookmarks.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["bookmarks"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "bookmarks": { 28 32 "type": "array", 29 33 "items": {
+8 -2
lexdocs/bluesky/app/bsky/embed/defs.json packages/definitions/bluesky/lexicons/app/bsky/embed/defs.json
··· 7 7 "description": "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.", 8 8 "required": ["width", "height"], 9 9 "properties": { 10 - "width": { "type": "integer", "minimum": 1 }, 11 - "height": { "type": "integer", "minimum": 1 } 10 + "width": { 11 + "type": "integer", 12 + "minimum": 1 13 + }, 14 + "height": { 15 + "type": "integer", 16 + "minimum": 1 17 + } 12 18 } 13 19 } 14 20 }
+24 -7
lexdocs/bluesky/app/bsky/embed/external.json packages/definitions/bluesky/lexicons/app/bsky/embed/external.json
··· 17 17 "type": "object", 18 18 "required": ["uri", "title", "description"], 19 19 "properties": { 20 - "uri": { "type": "string", "format": "uri" }, 21 - "title": { "type": "string" }, 22 - "description": { "type": "string" }, 20 + "uri": { 21 + "type": "string", 22 + "format": "uri" 23 + }, 24 + "title": { 25 + "type": "string" 26 + }, 27 + "description": { 28 + "type": "string" 29 + }, 23 30 "thumb": { 24 31 "type": "blob", 25 32 "accept": ["image/*"], ··· 41 48 "type": "object", 42 49 "required": ["uri", "title", "description"], 43 50 "properties": { 44 - "uri": { "type": "string", "format": "uri" }, 45 - "title": { "type": "string" }, 46 - "description": { "type": "string" }, 47 - "thumb": { "type": "string", "format": "uri" } 51 + "uri": { 52 + "type": "string", 53 + "format": "uri" 54 + }, 55 + "title": { 56 + "type": "string" 57 + }, 58 + "description": { 59 + "type": "string" 60 + }, 61 + "thumb": { 62 + "type": "string", 63 + "format": "uri" 64 + } 48 65 } 49 66 } 50 67 }
+8 -2
lexdocs/bluesky/app/bsky/embed/images.json packages/definitions/bluesky/lexicons/app/bsky/embed/images.json
··· 9 9 "properties": { 10 10 "images": { 11 11 "type": "array", 12 - "items": { "type": "ref", "ref": "#image" }, 12 + "items": { 13 + "type": "ref", 14 + "ref": "#image" 15 + }, 13 16 "maxLength": 4 14 17 } 15 18 } ··· 39 42 "properties": { 40 43 "images": { 41 44 "type": "array", 42 - "items": { "type": "ref", "ref": "#viewImage" }, 45 + "items": { 46 + "type": "ref", 47 + "ref": "#viewImage" 48 + }, 43 49 "maxLength": 4 44 50 } 45 51 }
+60 -16
lexdocs/bluesky/app/bsky/embed/record.json packages/definitions/bluesky/lexicons/app/bsky/embed/record.json
··· 7 7 "type": "object", 8 8 "required": ["record"], 9 9 "properties": { 10 - "record": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 10 + "record": { 11 + "type": "ref", 12 + "ref": "com.atproto.repo.strongRef" 13 + } 11 14 } 12 15 }, 13 16 "view": { ··· 33 36 "type": "object", 34 37 "required": ["uri", "cid", "author", "value", "indexedAt"], 35 38 "properties": { 36 - "uri": { "type": "string", "format": "at-uri" }, 37 - "cid": { "type": "string", "format": "cid" }, 39 + "uri": { 40 + "type": "string", 41 + "format": "at-uri" 42 + }, 43 + "cid": { 44 + "type": "string", 45 + "format": "cid" 46 + }, 38 47 "author": { 39 48 "type": "ref", 40 49 "ref": "app.bsky.actor.defs#profileViewBasic" ··· 45 54 }, 46 55 "labels": { 47 56 "type": "array", 48 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 57 + "items": { 58 + "type": "ref", 59 + "ref": "com.atproto.label.defs#label" 60 + } 61 + }, 62 + "replyCount": { 63 + "type": "integer" 64 + }, 65 + "repostCount": { 66 + "type": "integer" 67 + }, 68 + "likeCount": { 69 + "type": "integer" 49 70 }, 50 - "replyCount": { "type": "integer" }, 51 - "repostCount": { "type": "integer" }, 52 - "likeCount": { "type": "integer" }, 53 - "quoteCount": { "type": "integer" }, 71 + "quoteCount": { 72 + "type": "integer" 73 + }, 54 74 "embeds": { 55 75 "type": "array", 56 76 "items": { ··· 64 84 ] 65 85 } 66 86 }, 67 - "indexedAt": { "type": "string", "format": "datetime" } 87 + "indexedAt": { 88 + "type": "string", 89 + "format": "datetime" 90 + } 68 91 } 69 92 }, 70 93 "viewNotFound": { 71 94 "type": "object", 72 95 "required": ["uri", "notFound"], 73 96 "properties": { 74 - "uri": { "type": "string", "format": "at-uri" }, 75 - "notFound": { "type": "boolean", "const": true } 97 + "uri": { 98 + "type": "string", 99 + "format": "at-uri" 100 + }, 101 + "notFound": { 102 + "type": "boolean", 103 + "const": true 104 + } 76 105 } 77 106 }, 78 107 "viewBlocked": { 79 108 "type": "object", 80 109 "required": ["uri", "blocked", "author"], 81 110 "properties": { 82 - "uri": { "type": "string", "format": "at-uri" }, 83 - "blocked": { "type": "boolean", "const": true }, 84 - "author": { "type": "ref", "ref": "app.bsky.feed.defs#blockedAuthor" } 111 + "uri": { 112 + "type": "string", 113 + "format": "at-uri" 114 + }, 115 + "blocked": { 116 + "type": "boolean", 117 + "const": true 118 + }, 119 + "author": { 120 + "type": "ref", 121 + "ref": "app.bsky.feed.defs#blockedAuthor" 122 + } 85 123 } 86 124 }, 87 125 "viewDetached": { 88 126 "type": "object", 89 127 "required": ["uri", "detached"], 90 128 "properties": { 91 - "uri": { "type": "string", "format": "at-uri" }, 92 - "detached": { "type": "boolean", "const": true } 129 + "uri": { 130 + "type": "string", 131 + "format": "at-uri" 132 + }, 133 + "detached": { 134 + "type": "boolean", 135 + "const": true 136 + } 93 137 } 94 138 } 95 139 }
lexdocs/bluesky/app/bsky/embed/recordWithMedia.json packages/definitions/bluesky/lexicons/app/bsky/embed/recordWithMedia.json
+16 -4
lexdocs/bluesky/app/bsky/embed/video.json packages/definitions/bluesky/lexicons/app/bsky/embed/video.json
··· 15 15 }, 16 16 "captions": { 17 17 "type": "array", 18 - "items": { "type": "ref", "ref": "#caption" }, 18 + "items": { 19 + "type": "ref", 20 + "ref": "#caption" 21 + }, 19 22 "maxLength": 20 20 23 }, 21 24 "alt": { ··· 49 52 "type": "object", 50 53 "required": ["cid", "playlist"], 51 54 "properties": { 52 - "cid": { "type": "string", "format": "cid" }, 53 - "playlist": { "type": "string", "format": "uri" }, 54 - "thumbnail": { "type": "string", "format": "uri" }, 55 + "cid": { 56 + "type": "string", 57 + "format": "cid" 58 + }, 59 + "playlist": { 60 + "type": "string", 61 + "format": "uri" 62 + }, 63 + "thumbnail": { 64 + "type": "string", 65 + "format": "uri" 66 + }, 55 67 "alt": { 56 68 "type": "string", 57 69 "maxGraphemes": 1000,
+210 -56
lexdocs/bluesky/app/bsky/feed/defs.json packages/definitions/bluesky/lexicons/app/bsky/feed/defs.json
··· 6 6 "type": "object", 7 7 "required": ["uri", "cid", "author", "record", "indexedAt"], 8 8 "properties": { 9 - "uri": { "type": "string", "format": "at-uri" }, 10 - "cid": { "type": "string", "format": "cid" }, 9 + "uri": { 10 + "type": "string", 11 + "format": "at-uri" 12 + }, 13 + "cid": { 14 + "type": "string", 15 + "format": "cid" 16 + }, 11 17 "author": { 12 18 "type": "ref", 13 19 "ref": "app.bsky.actor.defs#profileViewBasic" 14 20 }, 15 - "record": { "type": "unknown" }, 21 + "record": { 22 + "type": "unknown" 23 + }, 16 24 "embed": { 17 25 "type": "union", 18 26 "refs": [ ··· 23 31 "app.bsky.embed.recordWithMedia#view" 24 32 ] 25 33 }, 26 - "bookmarkCount": { "type": "integer" }, 27 - "replyCount": { "type": "integer" }, 28 - "repostCount": { "type": "integer" }, 29 - "likeCount": { "type": "integer" }, 30 - "quoteCount": { "type": "integer" }, 31 - "indexedAt": { "type": "string", "format": "datetime" }, 32 - "viewer": { "type": "ref", "ref": "#viewerState" }, 34 + "bookmarkCount": { 35 + "type": "integer" 36 + }, 37 + "replyCount": { 38 + "type": "integer" 39 + }, 40 + "repostCount": { 41 + "type": "integer" 42 + }, 43 + "likeCount": { 44 + "type": "integer" 45 + }, 46 + "quoteCount": { 47 + "type": "integer" 48 + }, 49 + "indexedAt": { 50 + "type": "string", 51 + "format": "datetime" 52 + }, 53 + "viewer": { 54 + "type": "ref", 55 + "ref": "#viewerState" 56 + }, 33 57 "labels": { 34 58 "type": "array", 35 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 59 + "items": { 60 + "type": "ref", 61 + "ref": "com.atproto.label.defs#label" 62 + } 63 + }, 64 + "threadgate": { 65 + "type": "ref", 66 + "ref": "#threadgateView" 36 67 }, 37 - "threadgate": { "type": "ref", "ref": "#threadgateView" }, 38 68 "debug": { 39 69 "type": "unknown", 40 70 "description": "Debug information for internal development" ··· 45 75 "type": "object", 46 76 "description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.", 47 77 "properties": { 48 - "repost": { "type": "string", "format": "at-uri" }, 49 - "like": { "type": "string", "format": "at-uri" }, 50 - "bookmarked": { "type": "boolean" }, 51 - "threadMuted": { "type": "boolean" }, 52 - "replyDisabled": { "type": "boolean" }, 53 - "embeddingDisabled": { "type": "boolean" }, 54 - "pinned": { "type": "boolean" } 78 + "repost": { 79 + "type": "string", 80 + "format": "at-uri" 81 + }, 82 + "like": { 83 + "type": "string", 84 + "format": "at-uri" 85 + }, 86 + "bookmarked": { 87 + "type": "boolean" 88 + }, 89 + "threadMuted": { 90 + "type": "boolean" 91 + }, 92 + "replyDisabled": { 93 + "type": "boolean" 94 + }, 95 + "embeddingDisabled": { 96 + "type": "boolean" 97 + }, 98 + "pinned": { 99 + "type": "boolean" 100 + } 55 101 } 56 102 }, 57 103 "threadContext": { 58 104 "type": "object", 59 105 "description": "Metadata about this post within the context of the thread it is in.", 60 106 "properties": { 61 - "rootAuthorLike": { "type": "string", "format": "at-uri" } 107 + "rootAuthorLike": { 108 + "type": "string", 109 + "format": "at-uri" 110 + } 62 111 } 63 112 }, 64 113 "feedViewPost": { 65 114 "type": "object", 66 115 "required": ["post"], 67 116 "properties": { 68 - "post": { "type": "ref", "ref": "#postView" }, 69 - "reply": { "type": "ref", "ref": "#replyRef" }, 70 - "reason": { "type": "union", "refs": ["#reasonRepost", "#reasonPin"] }, 117 + "post": { 118 + "type": "ref", 119 + "ref": "#postView" 120 + }, 121 + "reply": { 122 + "type": "ref", 123 + "ref": "#replyRef" 124 + }, 125 + "reason": { 126 + "type": "union", 127 + "refs": ["#reasonRepost", "#reasonPin"] 128 + }, 71 129 "feedContext": { 72 130 "type": "string", 73 131 "description": "Context provided by feed generator that may be passed back alongside interactions.", ··· 103 161 "type": "object", 104 162 "required": ["by", "indexedAt"], 105 163 "properties": { 106 - "by": { "type": "ref", "ref": "app.bsky.actor.defs#profileViewBasic" }, 107 - "uri": { "type": "string", "format": "at-uri" }, 108 - "cid": { "type": "string", "format": "cid" }, 109 - "indexedAt": { "type": "string", "format": "datetime" } 164 + "by": { 165 + "type": "ref", 166 + "ref": "app.bsky.actor.defs#profileViewBasic" 167 + }, 168 + "uri": { 169 + "type": "string", 170 + "format": "at-uri" 171 + }, 172 + "cid": { 173 + "type": "string", 174 + "format": "cid" 175 + }, 176 + "indexedAt": { 177 + "type": "string", 178 + "format": "datetime" 179 + } 110 180 } 111 181 }, 112 182 "reasonPin": { ··· 117 187 "type": "object", 118 188 "required": ["post"], 119 189 "properties": { 120 - "post": { "type": "ref", "ref": "#postView" }, 190 + "post": { 191 + "type": "ref", 192 + "ref": "#postView" 193 + }, 121 194 "parent": { 122 195 "type": "union", 123 196 "refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"] ··· 129 202 "refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"] 130 203 } 131 204 }, 132 - "threadContext": { "type": "ref", "ref": "#threadContext" } 205 + "threadContext": { 206 + "type": "ref", 207 + "ref": "#threadContext" 208 + } 133 209 } 134 210 }, 135 211 "notFoundPost": { 136 212 "type": "object", 137 213 "required": ["uri", "notFound"], 138 214 "properties": { 139 - "uri": { "type": "string", "format": "at-uri" }, 140 - "notFound": { "type": "boolean", "const": true } 215 + "uri": { 216 + "type": "string", 217 + "format": "at-uri" 218 + }, 219 + "notFound": { 220 + "type": "boolean", 221 + "const": true 222 + } 141 223 } 142 224 }, 143 225 "blockedPost": { 144 226 "type": "object", 145 227 "required": ["uri", "blocked", "author"], 146 228 "properties": { 147 - "uri": { "type": "string", "format": "at-uri" }, 148 - "blocked": { "type": "boolean", "const": true }, 149 - "author": { "type": "ref", "ref": "#blockedAuthor" } 229 + "uri": { 230 + "type": "string", 231 + "format": "at-uri" 232 + }, 233 + "blocked": { 234 + "type": "boolean", 235 + "const": true 236 + }, 237 + "author": { 238 + "type": "ref", 239 + "ref": "#blockedAuthor" 240 + } 150 241 } 151 242 }, 152 243 "blockedAuthor": { 153 244 "type": "object", 154 245 "required": ["did"], 155 246 "properties": { 156 - "did": { "type": "string", "format": "did" }, 157 - "viewer": { "type": "ref", "ref": "app.bsky.actor.defs#viewerState" } 247 + "did": { 248 + "type": "string", 249 + "format": "did" 250 + }, 251 + "viewer": { 252 + "type": "ref", 253 + "ref": "app.bsky.actor.defs#viewerState" 254 + } 158 255 } 159 256 }, 160 257 "generatorView": { 161 258 "type": "object", 162 259 "required": ["uri", "cid", "did", "creator", "displayName", "indexedAt"], 163 260 "properties": { 164 - "uri": { "type": "string", "format": "at-uri" }, 165 - "cid": { "type": "string", "format": "cid" }, 166 - "did": { "type": "string", "format": "did" }, 167 - "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, 168 - "displayName": { "type": "string" }, 261 + "uri": { 262 + "type": "string", 263 + "format": "at-uri" 264 + }, 265 + "cid": { 266 + "type": "string", 267 + "format": "cid" 268 + }, 269 + "did": { 270 + "type": "string", 271 + "format": "did" 272 + }, 273 + "creator": { 274 + "type": "ref", 275 + "ref": "app.bsky.actor.defs#profileView" 276 + }, 277 + "displayName": { 278 + "type": "string" 279 + }, 169 280 "description": { 170 281 "type": "string", 171 282 "maxGraphemes": 300, ··· 173 284 }, 174 285 "descriptionFacets": { 175 286 "type": "array", 176 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 287 + "items": { 288 + "type": "ref", 289 + "ref": "app.bsky.richtext.facet" 290 + } 291 + }, 292 + "avatar": { 293 + "type": "string", 294 + "format": "uri" 295 + }, 296 + "likeCount": { 297 + "type": "integer", 298 + "minimum": 0 299 + }, 300 + "acceptsInteractions": { 301 + "type": "boolean" 177 302 }, 178 - "avatar": { "type": "string", "format": "uri" }, 179 - "likeCount": { "type": "integer", "minimum": 0 }, 180 - "acceptsInteractions": { "type": "boolean" }, 181 303 "labels": { 182 304 "type": "array", 183 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 305 + "items": { 306 + "type": "ref", 307 + "ref": "com.atproto.label.defs#label" 308 + } 309 + }, 310 + "viewer": { 311 + "type": "ref", 312 + "ref": "#generatorViewerState" 184 313 }, 185 - "viewer": { "type": "ref", "ref": "#generatorViewerState" }, 186 314 "contentMode": { 187 315 "type": "string", 188 316 "knownValues": ["app.bsky.feed.defs#contentModeUnspecified", "app.bsky.feed.defs#contentModeVideo"] 189 317 }, 190 - "indexedAt": { "type": "string", "format": "datetime" } 318 + "indexedAt": { 319 + "type": "string", 320 + "format": "datetime" 321 + } 191 322 } 192 323 }, 193 324 "generatorViewerState": { 194 325 "type": "object", 195 326 "properties": { 196 - "like": { "type": "string", "format": "at-uri" } 327 + "like": { 328 + "type": "string", 329 + "format": "at-uri" 330 + } 197 331 } 198 332 }, 199 333 "skeletonFeedPost": { 200 334 "type": "object", 201 335 "required": ["post"], 202 336 "properties": { 203 - "post": { "type": "string", "format": "at-uri" }, 337 + "post": { 338 + "type": "string", 339 + "format": "at-uri" 340 + }, 204 341 "reason": { 205 342 "type": "union", 206 343 "refs": ["#skeletonReasonRepost", "#skeletonReasonPin"] ··· 216 353 "type": "object", 217 354 "required": ["repost"], 218 355 "properties": { 219 - "repost": { "type": "string", "format": "at-uri" } 356 + "repost": { 357 + "type": "string", 358 + "format": "at-uri" 359 + } 220 360 } 221 361 }, 222 362 "skeletonReasonPin": { ··· 226 366 "threadgateView": { 227 367 "type": "object", 228 368 "properties": { 229 - "uri": { "type": "string", "format": "at-uri" }, 230 - "cid": { "type": "string", "format": "cid" }, 231 - "record": { "type": "unknown" }, 369 + "uri": { 370 + "type": "string", 371 + "format": "at-uri" 372 + }, 373 + "cid": { 374 + "type": "string", 375 + "format": "cid" 376 + }, 377 + "record": { 378 + "type": "unknown" 379 + }, 232 380 "lists": { 233 381 "type": "array", 234 - "items": { "type": "ref", "ref": "app.bsky.graph.defs#listViewBasic" } 382 + "items": { 383 + "type": "ref", 384 + "ref": "app.bsky.graph.defs#listViewBasic" 385 + } 235 386 } 236 387 } 237 388 }, 238 389 "interaction": { 239 390 "type": "object", 240 391 "properties": { 241 - "item": { "type": "string", "format": "at-uri" }, 392 + "item": { 393 + "type": "string", 394 + "format": "at-uri" 395 + }, 242 396 "event": { 243 397 "type": "string", 244 398 "knownValues": [
+22 -6
lexdocs/bluesky/app/bsky/feed/describeFeedGenerator.json packages/definitions/bluesky/lexicons/app/bsky/feed/describeFeedGenerator.json
··· 11 11 "type": "object", 12 12 "required": ["did", "feeds"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" }, 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + }, 15 18 "feeds": { 16 19 "type": "array", 17 - "items": { "type": "ref", "ref": "#feed" } 20 + "items": { 21 + "type": "ref", 22 + "ref": "#feed" 23 + } 18 24 }, 19 - "links": { "type": "ref", "ref": "#links" } 25 + "links": { 26 + "type": "ref", 27 + "ref": "#links" 28 + } 20 29 } 21 30 } 22 31 } ··· 25 34 "type": "object", 26 35 "required": ["uri"], 27 36 "properties": { 28 - "uri": { "type": "string", "format": "at-uri" } 37 + "uri": { 38 + "type": "string", 39 + "format": "at-uri" 40 + } 29 41 } 30 42 }, 31 43 "links": { 32 44 "type": "object", 33 45 "properties": { 34 - "privacyPolicy": { "type": "string" }, 35 - "termsOfService": { "type": "string" } 46 + "privacyPolicy": { 47 + "type": "string" 48 + }, 49 + "termsOfService": { 50 + "type": "string" 51 + } 36 52 } 37 53 } 38 54 }
+12 -3
lexdocs/bluesky/app/bsky/feed/generator.json packages/definitions/bluesky/lexicons/app/bsky/feed/generator.json
··· 10 10 "type": "object", 11 11 "required": ["did", "displayName", "createdAt"], 12 12 "properties": { 13 - "did": { "type": "string", "format": "did" }, 13 + "did": { 14 + "type": "string", 15 + "format": "did" 16 + }, 14 17 "displayName": { 15 18 "type": "string", 16 19 "maxGraphemes": 24, ··· 23 26 }, 24 27 "descriptionFacets": { 25 28 "type": "array", 26 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 29 + "items": { 30 + "type": "ref", 31 + "ref": "app.bsky.richtext.facet" 32 + } 27 33 }, 28 34 "avatar": { 29 35 "type": "blob", ··· 46 52 "app.bsky.feed.defs#contentModeVideo" 47 53 ] 48 54 }, 49 - "createdAt": { "type": "string", "format": "datetime" } 55 + "createdAt": { 56 + "type": "string", 57 + "format": "datetime" 58 + } 50 59 } 51 60 } 52 61 }
+10 -3
lexdocs/bluesky/app/bsky/feed/getActorFeeds.json packages/definitions/bluesky/lexicons/app/bsky/feed/getActorFeeds.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" }, 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 20 25 } 21 26 }, 22 27 "output": { ··· 25 30 "type": "object", 26 31 "required": ["feeds"], 27 32 "properties": { 28 - "cursor": { "type": "string" }, 33 + "cursor": { 34 + "type": "string" 35 + }, 29 36 "feeds": { 30 37 "type": "array", 31 38 "items": {
+18 -4
lexdocs/bluesky/app/bsky/feed/getActorLikes.json packages/definitions/bluesky/lexicons/app/bsky/feed/getActorLikes.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" }, 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 20 25 } 21 26 }, 22 27 "output": { ··· 25 30 "type": "object", 26 31 "required": ["feed"], 27 32 "properties": { 28 - "cursor": { "type": "string" }, 33 + "cursor": { 34 + "type": "string" 35 + }, 29 36 "feed": { 30 37 "type": "array", 31 38 "items": { ··· 36 43 } 37 44 } 38 45 }, 39 - "errors": [{ "name": "BlockedActor" }, { "name": "BlockedByActor" }] 46 + "errors": [ 47 + { 48 + "name": "BlockedActor" 49 + }, 50 + { 51 + "name": "BlockedByActor" 52 + } 53 + ] 40 54 } 41 55 } 42 56 }
+18 -4
lexdocs/bluesky/app/bsky/feed/getAuthorFeed.json packages/definitions/bluesky/lexicons/app/bsky/feed/getAuthorFeed.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" }, 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" }, 22 + "cursor": { 23 + "type": "string" 24 + }, 20 25 "filter": { 21 26 "type": "string", 22 27 "description": "Combinations of post/repost types to include in response.", ··· 41 46 "type": "object", 42 47 "required": ["feed"], 43 48 "properties": { 44 - "cursor": { "type": "string" }, 49 + "cursor": { 50 + "type": "string" 51 + }, 45 52 "feed": { 46 53 "type": "array", 47 54 "items": { ··· 52 59 } 53 60 } 54 61 }, 55 - "errors": [{ "name": "BlockedActor" }, { "name": "BlockedByActor" }] 62 + "errors": [ 63 + { 64 + "name": "BlockedActor" 65 + }, 66 + { 67 + "name": "BlockedByActor" 68 + } 69 + ] 56 70 } 57 71 } 58 72 }
+15 -4
lexdocs/bluesky/app/bsky/feed/getFeed.json packages/definitions/bluesky/lexicons/app/bsky/feed/getFeed.json
··· 9 9 "type": "params", 10 10 "required": ["feed"], 11 11 "properties": { 12 - "feed": { "type": "string", "format": "at-uri" }, 12 + "feed": { 13 + "type": "string", 14 + "format": "at-uri" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 20 25 } 21 26 }, 22 27 "output": { ··· 25 30 "type": "object", 26 31 "required": ["feed"], 27 32 "properties": { 28 - "cursor": { "type": "string" }, 33 + "cursor": { 34 + "type": "string" 35 + }, 29 36 "feed": { 30 37 "type": "array", 31 38 "items": { ··· 36 43 } 37 44 } 38 45 }, 39 - "errors": [{ "name": "UnknownFeed" }] 46 + "errors": [ 47 + { 48 + "name": "UnknownFeed" 49 + } 50 + ] 40 51 } 41 52 } 42 53 }
lexdocs/bluesky/app/bsky/feed/getFeedGenerator.json packages/definitions/bluesky/lexicons/app/bsky/feed/getFeedGenerator.json
+4 -1
lexdocs/bluesky/app/bsky/feed/getFeedGenerators.json packages/definitions/bluesky/lexicons/app/bsky/feed/getFeedGenerators.json
··· 11 11 "properties": { 12 12 "feeds": { 13 13 "type": "array", 14 - "items": { "type": "string", "format": "at-uri" } 14 + "items": { 15 + "type": "string", 16 + "format": "at-uri" 17 + } 15 18 } 16 19 } 17 20 },
+11 -3
lexdocs/bluesky/app/bsky/feed/getFeedSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/feed/getFeedSkeleton.json
··· 20 20 "maximum": 100, 21 21 "default": 50 22 22 }, 23 - "cursor": { "type": "string" } 23 + "cursor": { 24 + "type": "string" 25 + } 24 26 } 25 27 }, 26 28 "output": { ··· 29 31 "type": "object", 30 32 "required": ["feed"], 31 33 "properties": { 32 - "cursor": { "type": "string" }, 34 + "cursor": { 35 + "type": "string" 36 + }, 33 37 "feed": { 34 38 "type": "array", 35 39 "items": { ··· 45 49 } 46 50 } 47 51 }, 48 - "errors": [{ "name": "UnknownFeed" }] 52 + "errors": [ 53 + { 54 + "name": "UnknownFeed" 55 + } 56 + ] 49 57 } 50 58 } 51 59 }
+30 -8
lexdocs/bluesky/app/bsky/feed/getLikes.json packages/definitions/bluesky/lexicons/app/bsky/feed/getLikes.json
··· 25 25 "maximum": 100, 26 26 "default": 50 27 27 }, 28 - "cursor": { "type": "string" } 28 + "cursor": { 29 + "type": "string" 30 + } 29 31 } 30 32 }, 31 33 "output": { ··· 34 36 "type": "object", 35 37 "required": ["uri", "likes"], 36 38 "properties": { 37 - "uri": { "type": "string", "format": "at-uri" }, 38 - "cid": { "type": "string", "format": "cid" }, 39 - "cursor": { "type": "string" }, 39 + "uri": { 40 + "type": "string", 41 + "format": "at-uri" 42 + }, 43 + "cid": { 44 + "type": "string", 45 + "format": "cid" 46 + }, 47 + "cursor": { 48 + "type": "string" 49 + }, 40 50 "likes": { 41 51 "type": "array", 42 - "items": { "type": "ref", "ref": "#like" } 52 + "items": { 53 + "type": "ref", 54 + "ref": "#like" 55 + } 43 56 } 44 57 } 45 58 } ··· 49 62 "type": "object", 50 63 "required": ["indexedAt", "createdAt", "actor"], 51 64 "properties": { 52 - "indexedAt": { "type": "string", "format": "datetime" }, 53 - "createdAt": { "type": "string", "format": "datetime" }, 54 - "actor": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" } 65 + "indexedAt": { 66 + "type": "string", 67 + "format": "datetime" 68 + }, 69 + "createdAt": { 70 + "type": "string", 71 + "format": "datetime" 72 + }, 73 + "actor": { 74 + "type": "ref", 75 + "ref": "app.bsky.actor.defs#profileView" 76 + } 55 77 } 56 78 } 57 79 }
+11 -3
lexdocs/bluesky/app/bsky/feed/getListFeed.json packages/definitions/bluesky/lexicons/app/bsky/feed/getListFeed.json
··· 20 20 "maximum": 100, 21 21 "default": 50 22 22 }, 23 - "cursor": { "type": "string" } 23 + "cursor": { 24 + "type": "string" 25 + } 24 26 } 25 27 }, 26 28 "output": { ··· 29 31 "type": "object", 30 32 "required": ["feed"], 31 33 "properties": { 32 - "cursor": { "type": "string" }, 34 + "cursor": { 35 + "type": "string" 36 + }, 33 37 "feed": { 34 38 "type": "array", 35 39 "items": { ··· 40 44 } 41 45 } 42 46 }, 43 - "errors": [{ "name": "UnknownList" }] 47 + "errors": [ 48 + { 49 + "name": "UnknownList" 50 + } 51 + ] 44 52 } 45 53 } 46 54 }
+5 -1
lexdocs/bluesky/app/bsky/feed/getPostThread.json packages/definitions/bluesky/lexicons/app/bsky/feed/getPostThread.json
··· 51 51 } 52 52 } 53 53 }, 54 - "errors": [{ "name": "NotFound" }] 54 + "errors": [ 55 + { 56 + "name": "NotFound" 57 + } 58 + ] 55 59 } 56 60 } 57 61 }
+8 -2
lexdocs/bluesky/app/bsky/feed/getPosts.json packages/definitions/bluesky/lexicons/app/bsky/feed/getPosts.json
··· 12 12 "uris": { 13 13 "type": "array", 14 14 "description": "List of post AT-URIs to return hydrated views for.", 15 - "items": { "type": "string", "format": "at-uri" }, 15 + "items": { 16 + "type": "string", 17 + "format": "at-uri" 18 + }, 16 19 "maxLength": 25 17 20 } 18 21 } ··· 25 28 "properties": { 26 29 "posts": { 27 30 "type": "array", 28 - "items": { "type": "ref", "ref": "app.bsky.feed.defs#postView" } 31 + "items": { 32 + "type": "ref", 33 + "ref": "app.bsky.feed.defs#postView" 34 + } 29 35 } 30 36 } 31 37 }
+14 -4
lexdocs/bluesky/app/bsky/feed/getQuotes.json packages/definitions/bluesky/lexicons/app/bsky/feed/getQuotes.json
··· 25 25 "maximum": 100, 26 26 "default": 50 27 27 }, 28 - "cursor": { "type": "string" } 28 + "cursor": { 29 + "type": "string" 30 + } 29 31 } 30 32 }, 31 33 "output": { ··· 34 36 "type": "object", 35 37 "required": ["uri", "posts"], 36 38 "properties": { 37 - "uri": { "type": "string", "format": "at-uri" }, 38 - "cid": { "type": "string", "format": "cid" }, 39 - "cursor": { "type": "string" }, 39 + "uri": { 40 + "type": "string", 41 + "format": "at-uri" 42 + }, 43 + "cid": { 44 + "type": "string", 45 + "format": "cid" 46 + }, 47 + "cursor": { 48 + "type": "string" 49 + }, 40 50 "posts": { 41 51 "type": "array", 42 52 "items": {
+14 -4
lexdocs/bluesky/app/bsky/feed/getRepostedBy.json packages/definitions/bluesky/lexicons/app/bsky/feed/getRepostedBy.json
··· 25 25 "maximum": 100, 26 26 "default": 50 27 27 }, 28 - "cursor": { "type": "string" } 28 + "cursor": { 29 + "type": "string" 30 + } 29 31 } 30 32 }, 31 33 "output": { ··· 34 36 "type": "object", 35 37 "required": ["uri", "repostedBy"], 36 38 "properties": { 37 - "uri": { "type": "string", "format": "at-uri" }, 38 - "cid": { "type": "string", "format": "cid" }, 39 - "cursor": { "type": "string" }, 39 + "uri": { 40 + "type": "string", 41 + "format": "at-uri" 42 + }, 43 + "cid": { 44 + "type": "string", 45 + "format": "cid" 46 + }, 47 + "cursor": { 48 + "type": "string" 49 + }, 40 50 "repostedBy": { 41 51 "type": "array", 42 52 "items": {
+6 -2
lexdocs/bluesky/app/bsky/feed/getSuggestedFeeds.json packages/definitions/bluesky/lexicons/app/bsky/feed/getSuggestedFeeds.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["feeds"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "feeds": { 28 32 "type": "array", 29 33 "items": {
+6 -2
lexdocs/bluesky/app/bsky/feed/getTimeline.json packages/definitions/bluesky/lexicons/app/bsky/feed/getTimeline.json
··· 18 18 "maximum": 100, 19 19 "default": 50 20 20 }, 21 - "cursor": { "type": "string" } 21 + "cursor": { 22 + "type": "string" 23 + } 22 24 } 23 25 }, 24 26 "output": { ··· 27 29 "type": "object", 28 30 "required": ["feed"], 29 31 "properties": { 30 - "cursor": { "type": "string" }, 32 + "cursor": { 33 + "type": "string" 34 + }, 31 35 "feed": { 32 36 "type": "array", 33 37 "items": {
-20
lexdocs/bluesky/app/bsky/feed/like.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "app.bsky.feed.like", 4 - "defs": { 5 - "main": { 6 - "type": "record", 7 - "description": "Record declaring a 'like' of a piece of subject content.", 8 - "key": "tid", 9 - "record": { 10 - "type": "object", 11 - "required": ["subject", "createdAt"], 12 - "properties": { 13 - "subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 14 - "createdAt": { "type": "string", "format": "datetime" }, 15 - "via": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 16 - } 17 - } 18 - } 19 - } 20 - }
+44 -11
lexdocs/bluesky/app/bsky/feed/post.json packages/definitions/bluesky/lexicons/app/bsky/feed/post.json
··· 19 19 "entities": { 20 20 "type": "array", 21 21 "description": "DEPRECATED: replaced by app.bsky.richtext.facet.", 22 - "items": { "type": "ref", "ref": "#entity" } 22 + "items": { 23 + "type": "ref", 24 + "ref": "#entity" 25 + } 23 26 }, 24 27 "facets": { 25 28 "type": "array", 26 29 "description": "Annotations of text (mentions, URLs, hashtags, etc)", 27 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 30 + "items": { 31 + "type": "ref", 32 + "ref": "app.bsky.richtext.facet" 33 + } 28 34 }, 29 - "reply": { "type": "ref", "ref": "#replyRef" }, 35 + "reply": { 36 + "type": "ref", 37 + "ref": "#replyRef" 38 + }, 30 39 "embed": { 31 40 "type": "union", 32 41 "refs": [ ··· 41 50 "type": "array", 42 51 "description": "Indicates human language of post primary text content.", 43 52 "maxLength": 3, 44 - "items": { "type": "string", "format": "language" } 53 + "items": { 54 + "type": "string", 55 + "format": "language" 56 + } 45 57 }, 46 58 "labels": { 47 59 "type": "union", ··· 52 64 "type": "array", 53 65 "description": "Additional hashtags, in addition to any included in post text and facets.", 54 66 "maxLength": 8, 55 - "items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 } 67 + "items": { 68 + "type": "string", 69 + "maxLength": 640, 70 + "maxGraphemes": 64 71 + } 56 72 }, 57 73 "createdAt": { 58 74 "type": "string", ··· 66 82 "type": "object", 67 83 "required": ["root", "parent"], 68 84 "properties": { 69 - "root": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 70 - "parent": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 85 + "root": { 86 + "type": "ref", 87 + "ref": "com.atproto.repo.strongRef" 88 + }, 89 + "parent": { 90 + "type": "ref", 91 + "ref": "com.atproto.repo.strongRef" 92 + } 71 93 } 72 94 }, 73 95 "entity": { ··· 75 97 "description": "Deprecated: use facets instead.", 76 98 "required": ["index", "type", "value"], 77 99 "properties": { 78 - "index": { "type": "ref", "ref": "#textSlice" }, 100 + "index": { 101 + "type": "ref", 102 + "ref": "#textSlice" 103 + }, 79 104 "type": { 80 105 "type": "string", 81 106 "description": "Expected values are 'mention' and 'link'." 82 107 }, 83 - "value": { "type": "string" } 108 + "value": { 109 + "type": "string" 110 + } 84 111 } 85 112 }, 86 113 "textSlice": { ··· 88 115 "description": "Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.", 89 116 "required": ["start", "end"], 90 117 "properties": { 91 - "start": { "type": "integer", "minimum": 0 }, 92 - "end": { "type": "integer", "minimum": 0 } 118 + "start": { 119 + "type": "integer", 120 + "minimum": 0 121 + }, 122 + "end": { 123 + "type": "integer", 124 + "minimum": 0 125 + } 93 126 } 94 127 } 95 128 }
+4 -1
lexdocs/bluesky/app/bsky/feed/postgate.json packages/definitions/bluesky/lexicons/app/bsky/feed/postgate.json
··· 10 10 "type": "object", 11 11 "required": ["post", "createdAt"], 12 12 "properties": { 13 - "createdAt": { "type": "string", "format": "datetime" }, 13 + "createdAt": { 14 + "type": "string", 15 + "format": "datetime" 16 + }, 14 17 "post": { 15 18 "type": "string", 16 19 "format": "at-uri",
-20
lexdocs/bluesky/app/bsky/feed/repost.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "app.bsky.feed.repost", 4 - "defs": { 5 - "main": { 6 - "description": "Record representing a 'repost' of an existing Bluesky post.", 7 - "type": "record", 8 - "key": "tid", 9 - "record": { 10 - "type": "object", 11 - "required": ["subject", "createdAt"], 12 - "properties": { 13 - "subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 14 - "createdAt": { "type": "string", "format": "datetime" }, 15 - "via": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 16 - } 17 - } 18 - } 19 - } 20 - }
+8 -2
lexdocs/bluesky/app/bsky/feed/searchPosts.json packages/definitions/bluesky/lexicons/app/bsky/feed/searchPosts.json
··· 78 78 "type": "object", 79 79 "required": ["posts"], 80 80 "properties": { 81 - "cursor": { "type": "string" }, 81 + "cursor": { 82 + "type": "string" 83 + }, 82 84 "hitsTotal": { 83 85 "type": "integer", 84 86 "description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits." ··· 93 95 } 94 96 } 95 97 }, 96 - "errors": [{ "name": "BadQueryString" }] 98 + "errors": [ 99 + { 100 + "name": "BadQueryString" 101 + } 102 + ] 97 103 } 98 104 } 99 105 }
lexdocs/bluesky/app/bsky/feed/sendInteractions.json packages/definitions/bluesky/lexicons/app/bsky/feed/sendInteractions.json
+8 -2
lexdocs/bluesky/app/bsky/feed/threadgate.json packages/definitions/bluesky/lexicons/app/bsky/feed/threadgate.json
··· 24 24 "refs": ["#mentionRule", "#followerRule", "#followingRule", "#listRule"] 25 25 } 26 26 }, 27 - "createdAt": { "type": "string", "format": "datetime" }, 27 + "createdAt": { 28 + "type": "string", 29 + "format": "datetime" 30 + }, 28 31 "hiddenReplies": { 29 32 "type": "array", 30 33 "maxLength": 300, ··· 57 60 "description": "Allow replies from actors on a list.", 58 61 "required": ["list"], 59 62 "properties": { 60 - "list": { "type": "string", "format": "at-uri" } 63 + "list": { 64 + "type": "string", 65 + "format": "at-uri" 66 + } 61 67 } 62 68 } 63 69 }
+4 -1
lexdocs/bluesky/app/bsky/graph/block.json packages/definitions/bluesky/lexicons/app/bsky/graph/block.json
··· 15 15 "format": "did", 16 16 "description": "DID of the account to be blocked." 17 17 }, 18 - "createdAt": { "type": "string", "format": "datetime" } 18 + "createdAt": { 19 + "type": "string", 20 + "format": "datetime" 21 + } 19 22 } 20 23 } 21 24 }
-166
lexdocs/bluesky/app/bsky/graph/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "app.bsky.graph.defs", 4 - "defs": { 5 - "listViewBasic": { 6 - "type": "object", 7 - "required": ["uri", "cid", "name", "purpose"], 8 - "properties": { 9 - "uri": { "type": "string", "format": "at-uri" }, 10 - "cid": { "type": "string", "format": "cid" }, 11 - "name": { "type": "string", "maxLength": 64, "minLength": 1 }, 12 - "purpose": { "type": "ref", "ref": "#listPurpose" }, 13 - "avatar": { "type": "string", "format": "uri" }, 14 - "listItemCount": { "type": "integer", "minimum": 0 }, 15 - "labels": { 16 - "type": "array", 17 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 18 - }, 19 - "viewer": { "type": "ref", "ref": "#listViewerState" }, 20 - "indexedAt": { "type": "string", "format": "datetime" } 21 - } 22 - }, 23 - "listView": { 24 - "type": "object", 25 - "required": ["uri", "cid", "creator", "name", "purpose", "indexedAt"], 26 - "properties": { 27 - "uri": { "type": "string", "format": "at-uri" }, 28 - "cid": { "type": "string", "format": "cid" }, 29 - "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, 30 - "name": { "type": "string", "maxLength": 64, "minLength": 1 }, 31 - "purpose": { "type": "ref", "ref": "#listPurpose" }, 32 - "description": { 33 - "type": "string", 34 - "maxGraphemes": 300, 35 - "maxLength": 3000 36 - }, 37 - "descriptionFacets": { 38 - "type": "array", 39 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 40 - }, 41 - "avatar": { "type": "string", "format": "uri" }, 42 - "listItemCount": { "type": "integer", "minimum": 0 }, 43 - "labels": { 44 - "type": "array", 45 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 46 - }, 47 - "viewer": { "type": "ref", "ref": "#listViewerState" }, 48 - "indexedAt": { "type": "string", "format": "datetime" } 49 - } 50 - }, 51 - "listItemView": { 52 - "type": "object", 53 - "required": ["uri", "subject"], 54 - "properties": { 55 - "uri": { "type": "string", "format": "at-uri" }, 56 - "subject": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" } 57 - } 58 - }, 59 - "starterPackView": { 60 - "type": "object", 61 - "required": ["uri", "cid", "record", "creator", "indexedAt"], 62 - "properties": { 63 - "uri": { "type": "string", "format": "at-uri" }, 64 - "cid": { "type": "string", "format": "cid" }, 65 - "record": { "type": "unknown" }, 66 - "creator": { 67 - "type": "ref", 68 - "ref": "app.bsky.actor.defs#profileViewBasic" 69 - }, 70 - "list": { "type": "ref", "ref": "#listViewBasic" }, 71 - "listItemsSample": { 72 - "type": "array", 73 - "maxLength": 12, 74 - "items": { "type": "ref", "ref": "#listItemView" } 75 - }, 76 - "feeds": { 77 - "type": "array", 78 - "maxLength": 3, 79 - "items": { "type": "ref", "ref": "app.bsky.feed.defs#generatorView" } 80 - }, 81 - "joinedWeekCount": { "type": "integer", "minimum": 0 }, 82 - "joinedAllTimeCount": { "type": "integer", "minimum": 0 }, 83 - "labels": { 84 - "type": "array", 85 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 86 - }, 87 - "indexedAt": { "type": "string", "format": "datetime" } 88 - } 89 - }, 90 - "starterPackViewBasic": { 91 - "type": "object", 92 - "required": ["uri", "cid", "record", "creator", "indexedAt"], 93 - "properties": { 94 - "uri": { "type": "string", "format": "at-uri" }, 95 - "cid": { "type": "string", "format": "cid" }, 96 - "record": { "type": "unknown" }, 97 - "creator": { 98 - "type": "ref", 99 - "ref": "app.bsky.actor.defs#profileViewBasic" 100 - }, 101 - "listItemCount": { "type": "integer", "minimum": 0 }, 102 - "joinedWeekCount": { "type": "integer", "minimum": 0 }, 103 - "joinedAllTimeCount": { "type": "integer", "minimum": 0 }, 104 - "labels": { 105 - "type": "array", 106 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 107 - }, 108 - "indexedAt": { "type": "string", "format": "datetime" } 109 - } 110 - }, 111 - "listPurpose": { 112 - "type": "string", 113 - "knownValues": [ 114 - "app.bsky.graph.defs#modlist", 115 - "app.bsky.graph.defs#curatelist", 116 - "app.bsky.graph.defs#referencelist" 117 - ] 118 - }, 119 - "modlist": { 120 - "type": "token", 121 - "description": "A list of actors to apply an aggregate moderation action (mute/block) on." 122 - }, 123 - "curatelist": { 124 - "type": "token", 125 - "description": "A list of actors used for curation purposes such as list feeds or interaction gating." 126 - }, 127 - "referencelist": { 128 - "type": "token", 129 - "description": "A list of actors used for only for reference purposes such as within a starter pack." 130 - }, 131 - "listViewerState": { 132 - "type": "object", 133 - "properties": { 134 - "muted": { "type": "boolean" }, 135 - "blocked": { "type": "string", "format": "at-uri" } 136 - } 137 - }, 138 - "notFoundActor": { 139 - "type": "object", 140 - "description": "indicates that a handle or DID could not be resolved", 141 - "required": ["actor", "notFound"], 142 - "properties": { 143 - "actor": { "type": "string", "format": "at-identifier" }, 144 - "notFound": { "type": "boolean", "const": true } 145 - } 146 - }, 147 - "relationship": { 148 - "type": "object", 149 - "description": "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)", 150 - "required": ["did"], 151 - "properties": { 152 - "did": { "type": "string", "format": "did" }, 153 - "following": { 154 - "type": "string", 155 - "format": "at-uri", 156 - "description": "if the actor follows this DID, this is the AT-URI of the follow record" 157 - }, 158 - "followedBy": { 159 - "type": "string", 160 - "format": "at-uri", 161 - "description": "if the actor is followed by this DID, contains the AT-URI of the follow record" 162 - } 163 - } 164 - } 165 - } 166 - }
+12 -3
lexdocs/bluesky/app/bsky/graph/follow.json packages/definitions/bluesky/lexicons/app/bsky/graph/follow.json
··· 10 10 "type": "object", 11 11 "required": ["subject", "createdAt"], 12 12 "properties": { 13 - "subject": { "type": "string", "format": "did" }, 14 - "createdAt": { "type": "string", "format": "datetime" }, 15 - "via": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 13 + "subject": { 14 + "type": "string", 15 + "format": "did" 16 + }, 17 + "createdAt": { 18 + "type": "string", 19 + "format": "datetime" 20 + }, 21 + "via": { 22 + "type": "ref", 23 + "ref": "com.atproto.repo.strongRef" 24 + } 16 25 } 17 26 } 18 27 }
+10 -3
lexdocs/bluesky/app/bsky/graph/getActorStarterPacks.json packages/definitions/bluesky/lexicons/app/bsky/graph/getActorStarterPacks.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" }, 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 20 25 } 21 26 }, 22 27 "output": { ··· 25 30 "type": "object", 26 31 "required": ["starterPacks"], 27 32 "properties": { 28 - "cursor": { "type": "string" }, 33 + "cursor": { 34 + "type": "string" 35 + }, 29 36 "starterPacks": { 30 37 "type": "array", 31 38 "items": {
+6 -2
lexdocs/bluesky/app/bsky/graph/getBlocks.json packages/definitions/bluesky/lexicons/app/bsky/graph/getBlocks.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["blocks"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "blocks": { 28 32 "type": "array", 29 33 "items": {
+10 -3
lexdocs/bluesky/app/bsky/graph/getFollowers.json packages/definitions/bluesky/lexicons/app/bsky/graph/getFollowers.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" }, 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 20 25 } 21 26 }, 22 27 "output": { ··· 29 34 "type": "ref", 30 35 "ref": "app.bsky.actor.defs#profileView" 31 36 }, 32 - "cursor": { "type": "string" }, 37 + "cursor": { 38 + "type": "string" 39 + }, 33 40 "followers": { 34 41 "type": "array", 35 42 "items": {
+10 -3
lexdocs/bluesky/app/bsky/graph/getFollows.json packages/definitions/bluesky/lexicons/app/bsky/graph/getFollows.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" }, 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 20 25 } 21 26 }, 22 27 "output": { ··· 29 34 "type": "ref", 30 35 "ref": "app.bsky.actor.defs#profileView" 31 36 }, 32 - "cursor": { "type": "string" }, 37 + "cursor": { 38 + "type": "string" 39 + }, 33 40 "follows": { 34 41 "type": "array", 35 42 "items": {
+10 -3
lexdocs/bluesky/app/bsky/graph/getKnownFollowers.json packages/definitions/bluesky/lexicons/app/bsky/graph/getKnownFollowers.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" }, 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "minimum": 1, 16 19 "maximum": 100, 17 20 "default": 50 18 21 }, 19 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 20 25 } 21 26 }, 22 27 "output": { ··· 29 34 "type": "ref", 30 35 "ref": "app.bsky.actor.defs#profileView" 31 36 }, 32 - "cursor": { "type": "string" }, 37 + "cursor": { 38 + "type": "string" 39 + }, 33 40 "followers": { 34 41 "type": "array", 35 42 "items": {
+10 -3
lexdocs/bluesky/app/bsky/graph/getList.json packages/definitions/bluesky/lexicons/app/bsky/graph/getList.json
··· 20 20 "maximum": 100, 21 21 "default": 50 22 22 }, 23 - "cursor": { "type": "string" } 23 + "cursor": { 24 + "type": "string" 25 + } 24 26 } 25 27 }, 26 28 "output": { ··· 29 31 "type": "object", 30 32 "required": ["list", "items"], 31 33 "properties": { 32 - "cursor": { "type": "string" }, 33 - "list": { "type": "ref", "ref": "app.bsky.graph.defs#listView" }, 34 + "cursor": { 35 + "type": "string" 36 + }, 37 + "list": { 38 + "type": "ref", 39 + "ref": "app.bsky.graph.defs#listView" 40 + }, 34 41 "items": { 35 42 "type": "array", 36 43 "items": {
+10 -3
lexdocs/bluesky/app/bsky/graph/getListBlocks.json packages/definitions/bluesky/lexicons/app/bsky/graph/getListBlocks.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["lists"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "lists": { 28 32 "type": "array", 29 - "items": { "type": "ref", "ref": "app.bsky.graph.defs#listView" } 33 + "items": { 34 + "type": "ref", 35 + "ref": "app.bsky.graph.defs#listView" 36 + } 30 37 } 31 38 } 32 39 }
+10 -3
lexdocs/bluesky/app/bsky/graph/getListMutes.json packages/definitions/bluesky/lexicons/app/bsky/graph/getListMutes.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["lists"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "lists": { 28 32 "type": "array", 29 - "items": { "type": "ref", "ref": "app.bsky.graph.defs#listView" } 33 + "items": { 34 + "type": "ref", 35 + "ref": "app.bsky.graph.defs#listView" 36 + } 30 37 } 31 38 } 32 39 }
+10 -3
lexdocs/bluesky/app/bsky/graph/getLists.json packages/definitions/bluesky/lexicons/app/bsky/graph/getLists.json
··· 20 20 "maximum": 100, 21 21 "default": 50 22 22 }, 23 - "cursor": { "type": "string" }, 23 + "cursor": { 24 + "type": "string" 25 + }, 24 26 "purposes": { 25 27 "type": "array", 26 28 "description": "Optional filter by list purpose. If not specified, all supported types are returned.", ··· 37 39 "type": "object", 38 40 "required": ["lists"], 39 41 "properties": { 40 - "cursor": { "type": "string" }, 42 + "cursor": { 43 + "type": "string" 44 + }, 41 45 "lists": { 42 46 "type": "array", 43 - "items": { "type": "ref", "ref": "app.bsky.graph.defs#listView" } 47 + "items": { 48 + "type": "ref", 49 + "ref": "app.bsky.graph.defs#listView" 50 + } 44 51 } 45 52 } 46 53 }
+10 -3
lexdocs/bluesky/app/bsky/graph/getListsWithMembership.json packages/definitions/bluesky/lexicons/app/bsky/graph/getListsWithMembership.json
··· 20 20 "maximum": 100, 21 21 "default": 50 22 22 }, 23 - "cursor": { "type": "string" }, 23 + "cursor": { 24 + "type": "string" 25 + }, 24 26 "purposes": { 25 27 "type": "array", 26 28 "description": "Optional filter by list purpose. If not specified, all supported types are returned.", ··· 37 39 "type": "object", 38 40 "required": ["listsWithMembership"], 39 41 "properties": { 40 - "cursor": { "type": "string" }, 42 + "cursor": { 43 + "type": "string" 44 + }, 41 45 "listsWithMembership": { 42 46 "type": "array", 43 - "items": { "type": "ref", "ref": "#listWithMembership" } 47 + "items": { 48 + "type": "ref", 49 + "ref": "#listWithMembership" 50 + } 44 51 } 45 52 } 46 53 }
+6 -2
lexdocs/bluesky/app/bsky/graph/getMutes.json packages/definitions/bluesky/lexicons/app/bsky/graph/getMutes.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["mutes"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "mutes": { 28 32 "type": "array", 29 33 "items": {
+4 -1
lexdocs/bluesky/app/bsky/graph/getRelationships.json packages/definitions/bluesky/lexicons/app/bsky/graph/getRelationships.json
··· 31 31 "type": "object", 32 32 "required": ["relationships"], 33 33 "properties": { 34 - "actor": { "type": "string", "format": "did" }, 34 + "actor": { 35 + "type": "string", 36 + "format": "did" 37 + }, 35 38 "relationships": { 36 39 "type": "array", 37 40 "items": {
lexdocs/bluesky/app/bsky/graph/getStarterPack.json packages/definitions/bluesky/lexicons/app/bsky/graph/getStarterPack.json
+4 -1
lexdocs/bluesky/app/bsky/graph/getStarterPacks.json packages/definitions/bluesky/lexicons/app/bsky/graph/getStarterPacks.json
··· 11 11 "properties": { 12 12 "uris": { 13 13 "type": "array", 14 - "items": { "type": "string", "format": "at-uri" }, 14 + "items": { 15 + "type": "string", 16 + "format": "at-uri" 17 + }, 15 18 "maxLength": 25 16 19 } 17 20 }
+10 -3
lexdocs/bluesky/app/bsky/graph/getStarterPacksWithMembership.json packages/definitions/bluesky/lexicons/app/bsky/graph/getStarterPacksWithMembership.json
··· 20 20 "maximum": 100, 21 21 "default": 50 22 22 }, 23 - "cursor": { "type": "string" } 23 + "cursor": { 24 + "type": "string" 25 + } 24 26 } 25 27 }, 26 28 "output": { ··· 29 31 "type": "object", 30 32 "required": ["starterPacksWithMembership"], 31 33 "properties": { 32 - "cursor": { "type": "string" }, 34 + "cursor": { 35 + "type": "string" 36 + }, 33 37 "starterPacksWithMembership": { 34 38 "type": "array", 35 - "items": { "type": "ref", "ref": "#starterPackWithMembership" } 39 + "items": { 40 + "type": "ref", 41 + "ref": "#starterPackWithMembership" 42 + } 36 43 } 37 44 } 38 45 }
+4 -1
lexdocs/bluesky/app/bsky/graph/getSuggestedFollowsByActor.json packages/definitions/bluesky/lexicons/app/bsky/graph/getSuggestedFollowsByActor.json
··· 9 9 "type": "params", 10 10 "required": ["actor"], 11 11 "properties": { 12 - "actor": { "type": "string", "format": "at-identifier" } 12 + "actor": { 13 + "type": "string", 14 + "format": "at-identifier" 15 + } 13 16 } 14 17 }, 15 18 "output": {
+8 -2
lexdocs/bluesky/app/bsky/graph/list.json packages/definitions/bluesky/lexicons/app/bsky/graph/list.json
··· 28 28 }, 29 29 "descriptionFacets": { 30 30 "type": "array", 31 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 31 + "items": { 32 + "type": "ref", 33 + "ref": "app.bsky.richtext.facet" 34 + } 32 35 }, 33 36 "avatar": { 34 37 "type": "blob", ··· 39 42 "type": "union", 40 43 "refs": ["com.atproto.label.defs#selfLabels"] 41 44 }, 42 - "createdAt": { "type": "string", "format": "datetime" } 45 + "createdAt": { 46 + "type": "string", 47 + "format": "datetime" 48 + } 43 49 } 44 50 } 45 51 }
+4 -1
lexdocs/bluesky/app/bsky/graph/listblock.json packages/definitions/bluesky/lexicons/app/bsky/graph/listblock.json
··· 15 15 "format": "at-uri", 16 16 "description": "Reference (AT-URI) to the mod list record." 17 17 }, 18 - "createdAt": { "type": "string", "format": "datetime" } 18 + "createdAt": { 19 + "type": "string", 20 + "format": "datetime" 21 + } 19 22 } 20 23 } 21 24 }
+4 -1
lexdocs/bluesky/app/bsky/graph/listitem.json packages/definitions/bluesky/lexicons/app/bsky/graph/listitem.json
··· 20 20 "format": "at-uri", 21 21 "description": "Reference (AT-URI) to the list record (app.bsky.graph.list)." 22 22 }, 23 - "createdAt": { "type": "string", "format": "datetime" } 23 + "createdAt": { 24 + "type": "string", 25 + "format": "datetime" 26 + } 24 27 } 25 28 } 26 29 }
+4 -1
lexdocs/bluesky/app/bsky/graph/muteActor.json packages/definitions/bluesky/lexicons/app/bsky/graph/muteActor.json
··· 11 11 "type": "object", 12 12 "required": ["actor"], 13 13 "properties": { 14 - "actor": { "type": "string", "format": "at-identifier" } 14 + "actor": { 15 + "type": "string", 16 + "format": "at-identifier" 17 + } 15 18 } 16 19 } 17 20 }
+4 -1
lexdocs/bluesky/app/bsky/graph/muteActorList.json packages/definitions/bluesky/lexicons/app/bsky/graph/muteActorList.json
··· 11 11 "type": "object", 12 12 "required": ["list"], 13 13 "properties": { 14 - "list": { "type": "string", "format": "at-uri" } 14 + "list": { 15 + "type": "string", 16 + "format": "at-uri" 17 + } 15 18 } 16 19 } 17 20 }
+4 -1
lexdocs/bluesky/app/bsky/graph/muteThread.json packages/definitions/bluesky/lexicons/app/bsky/graph/muteThread.json
··· 11 11 "type": "object", 12 12 "required": ["root"], 13 13 "properties": { 14 - "root": { "type": "string", "format": "at-uri" } 14 + "root": { 15 + "type": "string", 16 + "format": "at-uri" 17 + } 15 18 } 16 19 } 17 20 }
lexdocs/bluesky/app/bsky/graph/searchStarterPacks.json packages/definitions/bluesky/lexicons/app/bsky/graph/searchStarterPacks.json
+16 -4
lexdocs/bluesky/app/bsky/graph/starterpack.json packages/definitions/bluesky/lexicons/app/bsky/graph/starterpack.json
··· 24 24 }, 25 25 "descriptionFacets": { 26 26 "type": "array", 27 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 27 + "items": { 28 + "type": "ref", 29 + "ref": "app.bsky.richtext.facet" 30 + } 28 31 }, 29 32 "list": { 30 33 "type": "string", ··· 34 37 "feeds": { 35 38 "type": "array", 36 39 "maxLength": 3, 37 - "items": { "type": "ref", "ref": "#feedItem" } 40 + "items": { 41 + "type": "ref", 42 + "ref": "#feedItem" 43 + } 38 44 }, 39 - "createdAt": { "type": "string", "format": "datetime" } 45 + "createdAt": { 46 + "type": "string", 47 + "format": "datetime" 48 + } 40 49 } 41 50 } 42 51 }, ··· 44 53 "type": "object", 45 54 "required": ["uri"], 46 55 "properties": { 47 - "uri": { "type": "string", "format": "at-uri" } 56 + "uri": { 57 + "type": "string", 58 + "format": "at-uri" 59 + } 48 60 } 49 61 } 50 62 }
+4 -1
lexdocs/bluesky/app/bsky/graph/unmuteActor.json packages/definitions/bluesky/lexicons/app/bsky/graph/unmuteActor.json
··· 11 11 "type": "object", 12 12 "required": ["actor"], 13 13 "properties": { 14 - "actor": { "type": "string", "format": "at-identifier" } 14 + "actor": { 15 + "type": "string", 16 + "format": "at-identifier" 17 + } 15 18 } 16 19 } 17 20 }
+4 -1
lexdocs/bluesky/app/bsky/graph/unmuteActorList.json packages/definitions/bluesky/lexicons/app/bsky/graph/unmuteActorList.json
··· 11 11 "type": "object", 12 12 "required": ["list"], 13 13 "properties": { 14 - "list": { "type": "string", "format": "at-uri" } 14 + "list": { 15 + "type": "string", 16 + "format": "at-uri" 17 + } 15 18 } 16 19 } 17 20 }
+4 -1
lexdocs/bluesky/app/bsky/graph/unmuteThread.json packages/definitions/bluesky/lexicons/app/bsky/graph/unmuteThread.json
··· 11 11 "type": "object", 12 12 "required": ["root"], 13 13 "properties": { 14 - "root": { "type": "string", "format": "at-uri" } 14 + "root": { 15 + "type": "string", 16 + "format": "at-uri" 17 + } 15 18 } 16 19 } 17 20 }
lexdocs/bluesky/app/bsky/graph/verification.json packages/definitions/bluesky/lexicons/app/bsky/graph/verification.json
+64 -16
lexdocs/bluesky/app/bsky/labeler/defs.json packages/definitions/bluesky/lexicons/app/bsky/labeler/defs.json
··· 6 6 "type": "object", 7 7 "required": ["uri", "cid", "creator", "indexedAt"], 8 8 "properties": { 9 - "uri": { "type": "string", "format": "at-uri" }, 10 - "cid": { "type": "string", "format": "cid" }, 11 - "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, 12 - "likeCount": { "type": "integer", "minimum": 0 }, 13 - "viewer": { "type": "ref", "ref": "#labelerViewerState" }, 14 - "indexedAt": { "type": "string", "format": "datetime" }, 9 + "uri": { 10 + "type": "string", 11 + "format": "at-uri" 12 + }, 13 + "cid": { 14 + "type": "string", 15 + "format": "cid" 16 + }, 17 + "creator": { 18 + "type": "ref", 19 + "ref": "app.bsky.actor.defs#profileView" 20 + }, 21 + "likeCount": { 22 + "type": "integer", 23 + "minimum": 0 24 + }, 25 + "viewer": { 26 + "type": "ref", 27 + "ref": "#labelerViewerState" 28 + }, 29 + "indexedAt": { 30 + "type": "string", 31 + "format": "datetime" 32 + }, 15 33 "labels": { 16 34 "type": "array", 17 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 35 + "items": { 36 + "type": "ref", 37 + "ref": "com.atproto.label.defs#label" 38 + } 18 39 } 19 40 } 20 41 }, ··· 22 43 "type": "object", 23 44 "required": ["uri", "cid", "creator", "policies", "indexedAt"], 24 45 "properties": { 25 - "uri": { "type": "string", "format": "at-uri" }, 26 - "cid": { "type": "string", "format": "cid" }, 27 - "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, 46 + "uri": { 47 + "type": "string", 48 + "format": "at-uri" 49 + }, 50 + "cid": { 51 + "type": "string", 52 + "format": "cid" 53 + }, 54 + "creator": { 55 + "type": "ref", 56 + "ref": "app.bsky.actor.defs#profileView" 57 + }, 28 58 "policies": { 29 59 "type": "ref", 30 60 "ref": "app.bsky.labeler.defs#labelerPolicies" 31 61 }, 32 - "likeCount": { "type": "integer", "minimum": 0 }, 33 - "viewer": { "type": "ref", "ref": "#labelerViewerState" }, 34 - "indexedAt": { "type": "string", "format": "datetime" }, 62 + "likeCount": { 63 + "type": "integer", 64 + "minimum": 0 65 + }, 66 + "viewer": { 67 + "type": "ref", 68 + "ref": "#labelerViewerState" 69 + }, 70 + "indexedAt": { 71 + "type": "string", 72 + "format": "datetime" 73 + }, 35 74 "labels": { 36 75 "type": "array", 37 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 76 + "items": { 77 + "type": "ref", 78 + "ref": "com.atproto.label.defs#label" 79 + } 38 80 }, 39 81 "reasonTypes": { 40 82 "description": "The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.", ··· 55 97 "subjectCollections": { 56 98 "type": "array", 57 99 "description": "Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.", 58 - "items": { "type": "string", "format": "nsid" } 100 + "items": { 101 + "type": "string", 102 + "format": "nsid" 103 + } 59 104 } 60 105 } 61 106 }, 62 107 "labelerViewerState": { 63 108 "type": "object", 64 109 "properties": { 65 - "like": { "type": "string", "format": "at-uri" } 110 + "like": { 111 + "type": "string", 112 + "format": "at-uri" 113 + } 66 114 } 67 115 }, 68 116 "labelerPolicies": {
+4 -1
lexdocs/bluesky/app/bsky/labeler/getServices.json packages/definitions/bluesky/lexicons/app/bsky/labeler/getServices.json
··· 11 11 "properties": { 12 12 "dids": { 13 13 "type": "array", 14 - "items": { "type": "string", "format": "did" } 14 + "items": { 15 + "type": "string", 16 + "format": "did" 17 + } 15 18 }, 16 19 "detailed": { 17 20 "type": "boolean",
+8 -2
lexdocs/bluesky/app/bsky/labeler/service.json packages/definitions/bluesky/lexicons/app/bsky/labeler/service.json
··· 18 18 "type": "union", 19 19 "refs": ["com.atproto.label.defs#selfLabels"] 20 20 }, 21 - "createdAt": { "type": "string", "format": "datetime" }, 21 + "createdAt": { 22 + "type": "string", 23 + "format": "datetime" 24 + }, 22 25 "reasonTypes": { 23 26 "description": "The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.", 24 27 "type": "array", ··· 38 41 "subjectCollections": { 39 42 "type": "array", 40 43 "description": "Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.", 41 - "items": { "type": "string", "format": "nsid" } 44 + "items": { 45 + "type": "string", 46 + "format": "nsid" 47 + } 42 48 } 43 49 } 44 50 }
lexdocs/bluesky/app/bsky/notification/declaration.json packages/definitions/bluesky/lexicons/app/bsky/notification/declaration.json
-88
lexdocs/bluesky/app/bsky/notification/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "app.bsky.notification.defs", 4 - "defs": { 5 - "recordDeleted": { 6 - "type": "object", 7 - "properties": {} 8 - }, 9 - "chatPreference": { 10 - "type": "object", 11 - "required": ["include", "push"], 12 - "properties": { 13 - "include": { "type": "string", "knownValues": ["all", "accepted"] }, 14 - "push": { "type": "boolean" } 15 - } 16 - }, 17 - "filterablePreference": { 18 - "type": "object", 19 - "required": ["include", "list", "push"], 20 - "properties": { 21 - "include": { "type": "string", "knownValues": ["all", "follows"] }, 22 - "list": { "type": "boolean" }, 23 - "push": { "type": "boolean" } 24 - } 25 - }, 26 - "preference": { 27 - "type": "object", 28 - "required": ["list", "push"], 29 - "properties": { 30 - "list": { "type": "boolean" }, 31 - "push": { "type": "boolean" } 32 - } 33 - }, 34 - "preferences": { 35 - "type": "object", 36 - "required": [ 37 - "chat", 38 - "follow", 39 - "like", 40 - "likeViaRepost", 41 - "mention", 42 - "quote", 43 - "reply", 44 - "repost", 45 - "repostViaRepost", 46 - "starterpackJoined", 47 - "subscribedPost", 48 - "unverified", 49 - "verified" 50 - ], 51 - "properties": { 52 - "chat": { "type": "ref", "ref": "#chatPreference" }, 53 - "follow": { "type": "ref", "ref": "#filterablePreference" }, 54 - "like": { "type": "ref", "ref": "#filterablePreference" }, 55 - "likeViaRepost": { "type": "ref", "ref": "#filterablePreference" }, 56 - "mention": { "type": "ref", "ref": "#filterablePreference" }, 57 - "quote": { "type": "ref", "ref": "#filterablePreference" }, 58 - "reply": { "type": "ref", "ref": "#filterablePreference" }, 59 - "repost": { "type": "ref", "ref": "#filterablePreference" }, 60 - "repostViaRepost": { "type": "ref", "ref": "#filterablePreference" }, 61 - "starterpackJoined": { "type": "ref", "ref": "#preference" }, 62 - "subscribedPost": { "type": "ref", "ref": "#preference" }, 63 - "unverified": { "type": "ref", "ref": "#preference" }, 64 - "verified": { "type": "ref", "ref": "#preference" } 65 - } 66 - }, 67 - "activitySubscription": { 68 - "type": "object", 69 - "required": ["post", "reply"], 70 - "properties": { 71 - "post": { "type": "boolean" }, 72 - "reply": { "type": "boolean" } 73 - } 74 - }, 75 - "subjectActivitySubscription": { 76 - "description": "Object used to store activity subscription data in stash.", 77 - "type": "object", 78 - "required": ["subject", "activitySubscription"], 79 - "properties": { 80 - "subject": { "type": "string", "format": "did" }, 81 - "activitySubscription": { 82 - "type": "ref", 83 - "ref": "#activitySubscription" 84 - } 85 - } 86 - } 87 - } 88 - }
lexdocs/bluesky/app/bsky/notification/getPreferences.json packages/definitions/bluesky/lexicons/app/bsky/notification/getPreferences.json
+10 -3
lexdocs/bluesky/app/bsky/notification/getUnreadCount.json packages/definitions/bluesky/lexicons/app/bsky/notification/getUnreadCount.json
··· 8 8 "parameters": { 9 9 "type": "params", 10 10 "properties": { 11 - "priority": { "type": "boolean" }, 12 - "seenAt": { "type": "string", "format": "datetime" } 11 + "priority": { 12 + "type": "boolean" 13 + }, 14 + "seenAt": { 15 + "type": "string", 16 + "format": "datetime" 17 + } 13 18 } 14 19 }, 15 20 "output": { ··· 18 23 "type": "object", 19 24 "required": ["count"], 20 25 "properties": { 21 - "count": { "type": "integer" } 26 + "count": { 27 + "type": "integer" 28 + } 22 29 } 23 30 } 24 31 }
+6 -2
lexdocs/bluesky/app/bsky/notification/listActivitySubscriptions.json packages/definitions/bluesky/lexicons/app/bsky/notification/listActivitySubscriptions.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["subscriptions"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "subscriptions": { 28 32 "type": "array", 29 33 "items": {
+54 -15
lexdocs/bluesky/app/bsky/notification/listNotifications.json packages/definitions/bluesky/lexicons/app/bsky/notification/listNotifications.json
··· 22 22 "maximum": 100, 23 23 "default": 50 24 24 }, 25 - "priority": { "type": "boolean" }, 26 - "cursor": { "type": "string" }, 27 - "seenAt": { "type": "string", "format": "datetime" } 25 + "priority": { 26 + "type": "boolean" 27 + }, 28 + "cursor": { 29 + "type": "string" 30 + }, 31 + "seenAt": { 32 + "type": "string", 33 + "format": "datetime" 34 + } 28 35 } 29 36 }, 30 37 "output": { ··· 33 40 "type": "object", 34 41 "required": ["notifications"], 35 42 "properties": { 36 - "cursor": { "type": "string" }, 43 + "cursor": { 44 + "type": "string" 45 + }, 37 46 "notifications": { 38 47 "type": "array", 39 - "items": { "type": "ref", "ref": "#notification" } 48 + "items": { 49 + "type": "ref", 50 + "ref": "#notification" 51 + } 52 + }, 53 + "priority": { 54 + "type": "boolean" 40 55 }, 41 - "priority": { "type": "boolean" }, 42 - "seenAt": { "type": "string", "format": "datetime" } 56 + "seenAt": { 57 + "type": "string", 58 + "format": "datetime" 59 + } 43 60 } 44 61 } 45 62 } ··· 48 65 "type": "object", 49 66 "required": ["uri", "cid", "author", "reason", "record", "isRead", "indexedAt"], 50 67 "properties": { 51 - "uri": { "type": "string", "format": "at-uri" }, 52 - "cid": { "type": "string", "format": "cid" }, 53 - "author": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }, 68 + "uri": { 69 + "type": "string", 70 + "format": "at-uri" 71 + }, 72 + "cid": { 73 + "type": "string", 74 + "format": "cid" 75 + }, 76 + "author": { 77 + "type": "ref", 78 + "ref": "app.bsky.actor.defs#profileView" 79 + }, 54 80 "reason": { 55 81 "type": "string", 56 82 "description": "The reason why this notification was delivered - e.g. your post was liked, or you received a new follower.", ··· 69 95 "subscribed-post" 70 96 ] 71 97 }, 72 - "reasonSubject": { "type": "string", "format": "at-uri" }, 73 - "record": { "type": "unknown" }, 74 - "isRead": { "type": "boolean" }, 75 - "indexedAt": { "type": "string", "format": "datetime" }, 98 + "reasonSubject": { 99 + "type": "string", 100 + "format": "at-uri" 101 + }, 102 + "record": { 103 + "type": "unknown" 104 + }, 105 + "isRead": { 106 + "type": "boolean" 107 + }, 108 + "indexedAt": { 109 + "type": "string", 110 + "format": "datetime" 111 + }, 76 112 "labels": { 77 113 "type": "array", 78 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 114 + "items": { 115 + "type": "ref", 116 + "ref": "com.atproto.label.defs#label" 117 + } 79 118 } 80 119 } 81 120 }
+8 -2
lexdocs/bluesky/app/bsky/notification/putActivitySubscription.json packages/definitions/bluesky/lexicons/app/bsky/notification/putActivitySubscription.json
··· 11 11 "type": "object", 12 12 "required": ["subject", "activitySubscription"], 13 13 "properties": { 14 - "subject": { "type": "string", "format": "did" }, 14 + "subject": { 15 + "type": "string", 16 + "format": "did" 17 + }, 15 18 "activitySubscription": { 16 19 "type": "ref", 17 20 "ref": "app.bsky.notification.defs#activitySubscription" ··· 25 28 "type": "object", 26 29 "required": ["subject"], 27 30 "properties": { 28 - "subject": { "type": "string", "format": "did" }, 31 + "subject": { 32 + "type": "string", 33 + "format": "did" 34 + }, 29 35 "activitySubscription": { 30 36 "type": "ref", 31 37 "ref": "app.bsky.notification.defs#activitySubscription"
+3 -1
lexdocs/bluesky/app/bsky/notification/putPreferences.json packages/definitions/bluesky/lexicons/app/bsky/notification/putPreferences.json
··· 11 11 "type": "object", 12 12 "required": ["priority"], 13 13 "properties": { 14 - "priority": { "type": "boolean" } 14 + "priority": { 15 + "type": "boolean" 16 + } 15 17 } 16 18 } 17 19 }
lexdocs/bluesky/app/bsky/notification/putPreferencesV2.json packages/definitions/bluesky/lexicons/app/bsky/notification/putPreferencesV2.json
+10 -3
lexdocs/bluesky/app/bsky/notification/registerPush.json packages/definitions/bluesky/lexicons/app/bsky/notification/registerPush.json
··· 11 11 "type": "object", 12 12 "required": ["serviceDid", "token", "platform", "appId"], 13 13 "properties": { 14 - "serviceDid": { "type": "string", "format": "did" }, 15 - "token": { "type": "string" }, 14 + "serviceDid": { 15 + "type": "string", 16 + "format": "did" 17 + }, 18 + "token": { 19 + "type": "string" 20 + }, 16 21 "platform": { 17 22 "type": "string", 18 23 "knownValues": ["ios", "android", "web"] 19 24 }, 20 - "appId": { "type": "string" }, 25 + "appId": { 26 + "type": "string" 27 + }, 21 28 "ageRestricted": { 22 29 "type": "boolean", 23 30 "description": "Set to true when the actor is age restricted"
+10 -3
lexdocs/bluesky/app/bsky/notification/unregisterPush.json packages/definitions/bluesky/lexicons/app/bsky/notification/unregisterPush.json
··· 11 11 "type": "object", 12 12 "required": ["serviceDid", "token", "platform", "appId"], 13 13 "properties": { 14 - "serviceDid": { "type": "string", "format": "did" }, 15 - "token": { "type": "string" }, 14 + "serviceDid": { 15 + "type": "string", 16 + "format": "did" 17 + }, 18 + "token": { 19 + "type": "string" 20 + }, 16 21 "platform": { 17 22 "type": "string", 18 23 "knownValues": ["ios", "android", "web"] 19 24 }, 20 - "appId": { "type": "string" } 25 + "appId": { 26 + "type": "string" 27 + } 21 28 } 22 29 } 23 30 }
+4 -1
lexdocs/bluesky/app/bsky/notification/updateSeen.json packages/definitions/bluesky/lexicons/app/bsky/notification/updateSeen.json
··· 11 11 "type": "object", 12 12 "required": ["seenAt"], 13 13 "properties": { 14 - "seenAt": { "type": "string", "format": "datetime" } 14 + "seenAt": { 15 + "type": "string", 16 + "format": "datetime" 17 + } 15 18 } 16 19 } 17 20 }
+29 -7
lexdocs/bluesky/app/bsky/richtext/facet.json packages/definitions/bluesky/lexicons/app/bsky/richtext/facet.json
··· 7 7 "description": "Annotation of a sub-string within rich text.", 8 8 "required": ["index", "features"], 9 9 "properties": { 10 - "index": { "type": "ref", "ref": "#byteSlice" }, 10 + "index": { 11 + "type": "ref", 12 + "ref": "#byteSlice" 13 + }, 11 14 "features": { 12 15 "type": "array", 13 - "items": { "type": "union", "refs": ["#mention", "#link", "#tag"] } 16 + "items": { 17 + "type": "union", 18 + "refs": ["#mention", "#link", "#tag"] 19 + } 14 20 } 15 21 } 16 22 }, ··· 19 25 "description": "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.", 20 26 "required": ["did"], 21 27 "properties": { 22 - "did": { "type": "string", "format": "did" } 28 + "did": { 29 + "type": "string", 30 + "format": "did" 31 + } 23 32 } 24 33 }, 25 34 "link": { ··· 27 36 "description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.", 28 37 "required": ["uri"], 29 38 "properties": { 30 - "uri": { "type": "string", "format": "uri" } 39 + "uri": { 40 + "type": "string", 41 + "format": "uri" 42 + } 31 43 } 32 44 }, 33 45 "tag": { ··· 35 47 "description": "Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').", 36 48 "required": ["tag"], 37 49 "properties": { 38 - "tag": { "type": "string", "maxLength": 640, "maxGraphemes": 64 } 50 + "tag": { 51 + "type": "string", 52 + "maxLength": 640, 53 + "maxGraphemes": 64 54 + } 39 55 } 40 56 }, 41 57 "byteSlice": { ··· 43 59 "description": "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.", 44 60 "required": ["byteStart", "byteEnd"], 45 61 "properties": { 46 - "byteStart": { "type": "integer", "minimum": 0 }, 47 - "byteEnd": { "type": "integer", "minimum": 0 } 62 + "byteStart": { 63 + "type": "integer", 64 + "minimum": 0 65 + }, 66 + "byteEnd": { 67 + "type": "integer", 68 + "minimum": 0 69 + } 48 70 } 49 71 } 50 72 }
+78 -23
lexdocs/bluesky/app/bsky/unspecced/defs.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/defs.json
··· 6 6 "type": "object", 7 7 "required": ["uri"], 8 8 "properties": { 9 - "uri": { "type": "string", "format": "at-uri" } 9 + "uri": { 10 + "type": "string", 11 + "format": "at-uri" 12 + } 10 13 } 11 14 }, 12 15 "skeletonSearchActor": { 13 16 "type": "object", 14 17 "required": ["did"], 15 18 "properties": { 16 - "did": { "type": "string", "format": "did" } 19 + "did": { 20 + "type": "string", 21 + "format": "did" 22 + } 17 23 } 18 24 }, 19 25 "skeletonSearchStarterPack": { 20 26 "type": "object", 21 27 "required": ["uri"], 22 28 "properties": { 23 - "uri": { "type": "string", "format": "at-uri" } 29 + "uri": { 30 + "type": "string", 31 + "format": "at-uri" 32 + } 24 33 } 25 34 }, 26 35 "trendingTopic": { 27 36 "type": "object", 28 37 "required": ["topic", "link"], 29 38 "properties": { 30 - "topic": { "type": "string" }, 31 - "displayName": { "type": "string" }, 32 - "description": { "type": "string" }, 33 - "link": { "type": "string" } 39 + "topic": { 40 + "type": "string" 41 + }, 42 + "displayName": { 43 + "type": "string" 44 + }, 45 + "description": { 46 + "type": "string" 47 + }, 48 + "link": { 49 + "type": "string" 50 + } 34 51 } 35 52 }, 36 53 "skeletonTrend": { 37 54 "type": "object", 38 55 "required": ["topic", "displayName", "link", "startedAt", "postCount", "dids"], 39 56 "properties": { 40 - "topic": { "type": "string" }, 41 - "displayName": { "type": "string" }, 42 - "link": { "type": "string" }, 43 - "startedAt": { "type": "string", "format": "datetime" }, 44 - "postCount": { "type": "integer" }, 45 - "status": { "type": "string", "knownValues": ["hot"] }, 46 - "category": { "type": "string" }, 57 + "topic": { 58 + "type": "string" 59 + }, 60 + "displayName": { 61 + "type": "string" 62 + }, 63 + "link": { 64 + "type": "string" 65 + }, 66 + "startedAt": { 67 + "type": "string", 68 + "format": "datetime" 69 + }, 70 + "postCount": { 71 + "type": "integer" 72 + }, 73 + "status": { 74 + "type": "string", 75 + "knownValues": ["hot"] 76 + }, 77 + "category": { 78 + "type": "string" 79 + }, 47 80 "dids": { 48 81 "type": "array", 49 82 "items": { ··· 57 90 "type": "object", 58 91 "required": ["topic", "displayName", "link", "startedAt", "postCount", "actors"], 59 92 "properties": { 60 - "topic": { "type": "string" }, 61 - "displayName": { "type": "string" }, 62 - "link": { "type": "string" }, 63 - "startedAt": { "type": "string", "format": "datetime" }, 64 - "postCount": { "type": "integer" }, 65 - "status": { "type": "string", "knownValues": ["hot"] }, 66 - "category": { "type": "string" }, 93 + "topic": { 94 + "type": "string" 95 + }, 96 + "displayName": { 97 + "type": "string" 98 + }, 99 + "link": { 100 + "type": "string" 101 + }, 102 + "startedAt": { 103 + "type": "string", 104 + "format": "datetime" 105 + }, 106 + "postCount": { 107 + "type": "integer" 108 + }, 109 + "status": { 110 + "type": "string", 111 + "knownValues": ["hot"] 112 + }, 113 + "category": { 114 + "type": "string" 115 + }, 67 116 "actors": { 68 117 "type": "array", 69 118 "items": { ··· 77 126 "type": "object", 78 127 "required": ["post", "moreParents", "moreReplies", "opThread", "hiddenByThreadgate", "mutedByViewer"], 79 128 "properties": { 80 - "post": { "type": "ref", "ref": "app.bsky.feed.defs#postView" }, 129 + "post": { 130 + "type": "ref", 131 + "ref": "app.bsky.feed.defs#postView" 132 + }, 81 133 "moreParents": { 82 134 "type": "boolean", 83 135 "description": "This post has more parents that were not present in the response. This is just a boolean, without the number of parents." ··· 112 164 "type": "object", 113 165 "required": ["author"], 114 166 "properties": { 115 - "author": { "type": "ref", "ref": "app.bsky.feed.defs#blockedAuthor" } 167 + "author": { 168 + "type": "ref", 169 + "ref": "app.bsky.feed.defs#blockedAuthor" 170 + } 116 171 } 117 172 }, 118 173 "ageAssuranceState": {
lexdocs/bluesky/app/bsky/unspecced/getAgeAssuranceState.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getAgeAssuranceState.json
+11 -3
lexdocs/bluesky/app/bsky/unspecced/getConfig.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getConfig.json
··· 11 11 "type": "object", 12 12 "required": [], 13 13 "properties": { 14 - "checkEmailConfirmed": { "type": "boolean" }, 14 + "checkEmailConfirmed": { 15 + "type": "boolean" 16 + }, 15 17 "liveNow": { 16 18 "type": "array", 17 - "items": { "type": "ref", "ref": "#liveNowConfig" } 19 + "items": { 20 + "type": "ref", 21 + "ref": "#liveNowConfig" 22 + } 18 23 } 19 24 } 20 25 } ··· 24 29 "type": "object", 25 30 "required": ["did", "domains"], 26 31 "properties": { 27 - "did": { "type": "string", "format": "did" }, 32 + "did": { 33 + "type": "string", 34 + "format": "did" 35 + }, 28 36 "domains": { 29 37 "type": "array", 30 38 "items": {
lexdocs/bluesky/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.json
lexdocs/bluesky/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.json
+9 -3
lexdocs/bluesky/app/bsky/unspecced/getPopularFeedGenerators.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getPopularFeedGenerators.json
··· 14 14 "maximum": 100, 15 15 "default": 50 16 16 }, 17 - "cursor": { "type": "string" }, 18 - "query": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + }, 20 + "query": { 21 + "type": "string" 22 + } 19 23 } 20 24 }, 21 25 "output": { ··· 24 28 "type": "object", 25 29 "required": ["feeds"], 26 30 "properties": { 27 - "cursor": { "type": "string" }, 31 + "cursor": { 32 + "type": "string" 33 + }, 28 34 "feeds": { 29 35 "type": "array", 30 36 "items": {
lexdocs/bluesky/app/bsky/unspecced/getPostThreadOtherV2.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getPostThreadOtherV2.json
lexdocs/bluesky/app/bsky/unspecced/getPostThreadV2.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getPostThreadV2.json
lexdocs/bluesky/app/bsky/unspecced/getSuggestedFeeds.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getSuggestedFeeds.json
lexdocs/bluesky/app/bsky/unspecced/getSuggestedFeedsSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getSuggestedFeedsSkeleton.json
lexdocs/bluesky/app/bsky/unspecced/getSuggestedStarterPacks.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getSuggestedStarterPacks.json
lexdocs/bluesky/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.json
lexdocs/bluesky/app/bsky/unspecced/getSuggestedUsers.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getSuggestedUsers.json
lexdocs/bluesky/app/bsky/unspecced/getSuggestedUsersSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getSuggestedUsersSkeleton.json
+6 -2
lexdocs/bluesky/app/bsky/unspecced/getSuggestionsSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getSuggestionsSkeleton.json
··· 19 19 "maximum": 100, 20 20 "default": 50 21 21 }, 22 - "cursor": { "type": "string" }, 22 + "cursor": { 23 + "type": "string" 24 + }, 23 25 "relativeToDid": { 24 26 "type": "string", 25 27 "format": "did", ··· 33 35 "type": "object", 34 36 "required": ["actors"], 35 37 "properties": { 36 - "cursor": { "type": "string" }, 38 + "cursor": { 39 + "type": "string" 40 + }, 37 41 "actors": { 38 42 "type": "array", 39 43 "items": {
+7 -2
lexdocs/bluesky/app/bsky/unspecced/getTaggedSuggestions.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getTaggedSuggestions.json
··· 30 30 "type": "object", 31 31 "required": ["tag", "subjectType", "subject"], 32 32 "properties": { 33 - "tag": { "type": "string" }, 33 + "tag": { 34 + "type": "string" 35 + }, 34 36 "subjectType": { 35 37 "type": "string", 36 38 "knownValues": ["actor", "feed"] 37 39 }, 38 - "subject": { "type": "string", "format": "uri" } 40 + "subject": { 41 + "type": "string", 42 + "format": "uri" 43 + } 39 44 } 40 45 } 41 46 }
lexdocs/bluesky/app/bsky/unspecced/getTrendingTopics.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getTrendingTopics.json
lexdocs/bluesky/app/bsky/unspecced/getTrends.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getTrends.json
lexdocs/bluesky/app/bsky/unspecced/getTrendsSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/getTrendsSkeleton.json
+11 -1
lexdocs/bluesky/app/bsky/unspecced/initAgeAssurance.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/initAgeAssurance.json
··· 33 33 "ref": "app.bsky.unspecced.defs#ageAssuranceState" 34 34 } 35 35 }, 36 - "errors": [{ "name": "InvalidEmail" }, { "name": "DidTooLong" }, { "name": "InvalidInitiation" }] 36 + "errors": [ 37 + { 38 + "name": "InvalidEmail" 39 + }, 40 + { 41 + "name": "DidTooLong" 42 + }, 43 + { 44 + "name": "InvalidInitiation" 45 + } 46 + ] 37 47 } 38 48 } 39 49 }
+8 -2
lexdocs/bluesky/app/bsky/unspecced/searchActorsSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/searchActorsSkeleton.json
··· 40 40 "type": "object", 41 41 "required": ["actors"], 42 42 "properties": { 43 - "cursor": { "type": "string" }, 43 + "cursor": { 44 + "type": "string" 45 + }, 44 46 "hitsTotal": { 45 47 "type": "integer", 46 48 "description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits." ··· 55 57 } 56 58 } 57 59 }, 58 - "errors": [{ "name": "BadQueryString" }] 60 + "errors": [ 61 + { 62 + "name": "BadQueryString" 63 + } 64 + ] 59 65 } 60 66 } 61 67 }
+8 -2
lexdocs/bluesky/app/bsky/unspecced/searchPostsSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/searchPostsSkeleton.json
··· 83 83 "type": "object", 84 84 "required": ["posts"], 85 85 "properties": { 86 - "cursor": { "type": "string" }, 86 + "cursor": { 87 + "type": "string" 88 + }, 87 89 "hitsTotal": { 88 90 "type": "integer", 89 91 "description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits." ··· 98 100 } 99 101 } 100 102 }, 101 - "errors": [{ "name": "BadQueryString" }] 103 + "errors": [ 104 + { 105 + "name": "BadQueryString" 106 + } 107 + ] 102 108 } 103 109 } 104 110 }
lexdocs/bluesky/app/bsky/unspecced/searchStarterPacksSkeleton.json packages/definitions/bluesky/lexicons/app/bsky/unspecced/searchStarterPacksSkeleton.json
+16 -5
lexdocs/bluesky/app/bsky/video/defs.json packages/definitions/bluesky/lexicons/app/bsky/video/defs.json
··· 6 6 "type": "object", 7 7 "required": ["jobId", "did", "state"], 8 8 "properties": { 9 - "jobId": { "type": "string" }, 10 - "did": { "type": "string", "format": "did" }, 9 + "jobId": { 10 + "type": "string" 11 + }, 12 + "did": { 13 + "type": "string", 14 + "format": "did" 15 + }, 11 16 "state": { 12 17 "type": "string", 13 18 "description": "The state of the video processing job. All values not listed as a known value indicate that the job is in process.", ··· 19 24 "maximum": 100, 20 25 "description": "Progress within the current processing state." 21 26 }, 22 - "blob": { "type": "blob" }, 23 - "error": { "type": "string" }, 24 - "message": { "type": "string" } 27 + "blob": { 28 + "type": "blob" 29 + }, 30 + "error": { 31 + "type": "string" 32 + }, 33 + "message": { 34 + "type": "string" 35 + } 25 36 } 26 37 } 27 38 }
lexdocs/bluesky/app/bsky/video/getJobStatus.json packages/definitions/bluesky/lexicons/app/bsky/video/getJobStatus.json
-24
lexdocs/bluesky/app/bsky/video/getUploadLimits.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "app.bsky.video.getUploadLimits", 4 - "defs": { 5 - "main": { 6 - "type": "query", 7 - "description": "Get video upload limits for the authenticated user.", 8 - "output": { 9 - "encoding": "application/json", 10 - "schema": { 11 - "type": "object", 12 - "required": ["canUpload"], 13 - "properties": { 14 - "canUpload": { "type": "boolean" }, 15 - "remainingDailyVideos": { "type": "integer" }, 16 - "remainingDailyBytes": { "type": "integer" }, 17 - "message": { "type": "string" }, 18 - "error": { "type": "string" } 19 - } 20 - } 21 - } 22 - } 23 - } 24 - }
lexdocs/bluesky/app/bsky/video/uploadVideo.json packages/definitions/bluesky/lexicons/app/bsky/video/uploadVideo.json
lexdocs/bluesky/chat/bsky/actor/declaration.json packages/definitions/bluesky/lexicons/chat/bsky/actor/declaration.json
+20 -5
lexdocs/bluesky/chat/bsky/actor/defs.json packages/definitions/bluesky/lexicons/chat/bsky/actor/defs.json
··· 6 6 "type": "object", 7 7 "required": ["did", "handle"], 8 8 "properties": { 9 - "did": { "type": "string", "format": "did" }, 10 - "handle": { "type": "string", "format": "handle" }, 9 + "did": { 10 + "type": "string", 11 + "format": "did" 12 + }, 13 + "handle": { 14 + "type": "string", 15 + "format": "handle" 16 + }, 11 17 "displayName": { 12 18 "type": "string", 13 19 "maxGraphemes": 64, 14 20 "maxLength": 640 15 21 }, 16 - "avatar": { "type": "string", "format": "uri" }, 22 + "avatar": { 23 + "type": "string", 24 + "format": "uri" 25 + }, 17 26 "associated": { 18 27 "type": "ref", 19 28 "ref": "app.bsky.actor.defs#profileAssociated" 20 29 }, 21 - "viewer": { "type": "ref", "ref": "app.bsky.actor.defs#viewerState" }, 30 + "viewer": { 31 + "type": "ref", 32 + "ref": "app.bsky.actor.defs#viewerState" 33 + }, 22 34 "labels": { 23 35 "type": "array", 24 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 36 + "items": { 37 + "type": "ref", 38 + "ref": "com.atproto.label.defs#label" 39 + } 25 40 }, 26 41 "chatDisabled": { 27 42 "type": "boolean",
lexdocs/bluesky/chat/bsky/actor/deleteAccount.json packages/definitions/bluesky/lexicons/chat/bsky/actor/deleteAccount.json
lexdocs/bluesky/chat/bsky/actor/exportAccountData.json packages/definitions/bluesky/lexicons/chat/bsky/actor/exportAccountData.json
+3 -1
lexdocs/bluesky/chat/bsky/convo/acceptConvo.json packages/definitions/bluesky/lexicons/chat/bsky/convo/acceptConvo.json
··· 10 10 "type": "object", 11 11 "required": ["convoId"], 12 12 "properties": { 13 - "convoId": { "type": "string" } 13 + "convoId": { 14 + "type": "string" 15 + } 14 16 } 15 17 } 16 18 },
+6 -2
lexdocs/bluesky/chat/bsky/convo/addReaction.json packages/definitions/bluesky/lexicons/chat/bsky/convo/addReaction.json
··· 11 11 "type": "object", 12 12 "required": ["convoId", "messageId", "value"], 13 13 "properties": { 14 - "convoId": { "type": "string" }, 15 - "messageId": { "type": "string" }, 14 + "convoId": { 15 + "type": "string" 16 + }, 17 + "messageId": { 18 + "type": "string" 19 + }, 16 20 "value": { 17 21 "type": "string", 18 22 "minLength": 1,
+157 -47
lexdocs/bluesky/chat/bsky/convo/defs.json packages/definitions/bluesky/lexicons/chat/bsky/convo/defs.json
··· 6 6 "type": "object", 7 7 "required": ["did", "messageId", "convoId"], 8 8 "properties": { 9 - "did": { "type": "string", "format": "did" }, 10 - "convoId": { "type": "string" }, 11 - "messageId": { "type": "string" } 9 + "did": { 10 + "type": "string", 11 + "format": "did" 12 + }, 13 + "convoId": { 14 + "type": "string" 15 + }, 16 + "messageId": { 17 + "type": "string" 18 + } 12 19 } 13 20 }, 14 21 "messageInput": { ··· 23 30 "facets": { 24 31 "type": "array", 25 32 "description": "Annotations of text (mentions, URLs, hashtags, etc)", 26 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 33 + "items": { 34 + "type": "ref", 35 + "ref": "app.bsky.richtext.facet" 36 + } 27 37 }, 28 38 "embed": { 29 39 "type": "union", ··· 35 45 "type": "object", 36 46 "required": ["id", "rev", "text", "sender", "sentAt"], 37 47 "properties": { 38 - "id": { "type": "string" }, 39 - "rev": { "type": "string" }, 48 + "id": { 49 + "type": "string" 50 + }, 51 + "rev": { 52 + "type": "string" 53 + }, 40 54 "text": { 41 55 "type": "string", 42 56 "maxLength": 10000, ··· 45 59 "facets": { 46 60 "type": "array", 47 61 "description": "Annotations of text (mentions, URLs, hashtags, etc)", 48 - "items": { "type": "ref", "ref": "app.bsky.richtext.facet" } 62 + "items": { 63 + "type": "ref", 64 + "ref": "app.bsky.richtext.facet" 65 + } 49 66 }, 50 67 "embed": { 51 68 "type": "union", ··· 54 71 "reactions": { 55 72 "type": "array", 56 73 "description": "Reactions to this message, in ascending order of creation time.", 57 - "items": { "type": "ref", "ref": "#reactionView" } 74 + "items": { 75 + "type": "ref", 76 + "ref": "#reactionView" 77 + } 78 + }, 79 + "sender": { 80 + "type": "ref", 81 + "ref": "#messageViewSender" 58 82 }, 59 - "sender": { "type": "ref", "ref": "#messageViewSender" }, 60 - "sentAt": { "type": "string", "format": "datetime" } 83 + "sentAt": { 84 + "type": "string", 85 + "format": "datetime" 86 + } 61 87 } 62 88 }, 63 89 "deletedMessageView": { 64 90 "type": "object", 65 91 "required": ["id", "rev", "sender", "sentAt"], 66 92 "properties": { 67 - "id": { "type": "string" }, 68 - "rev": { "type": "string" }, 69 - "sender": { "type": "ref", "ref": "#messageViewSender" }, 70 - "sentAt": { "type": "string", "format": "datetime" } 93 + "id": { 94 + "type": "string" 95 + }, 96 + "rev": { 97 + "type": "string" 98 + }, 99 + "sender": { 100 + "type": "ref", 101 + "ref": "#messageViewSender" 102 + }, 103 + "sentAt": { 104 + "type": "string", 105 + "format": "datetime" 106 + } 71 107 } 72 108 }, 73 109 "messageViewSender": { 74 110 "type": "object", 75 111 "required": ["did"], 76 112 "properties": { 77 - "did": { "type": "string", "format": "did" } 113 + "did": { 114 + "type": "string", 115 + "format": "did" 116 + } 78 117 } 79 118 }, 80 119 "reactionView": { 81 120 "type": "object", 82 121 "required": ["value", "sender", "createdAt"], 83 122 "properties": { 84 - "value": { "type": "string" }, 85 - "sender": { "type": "ref", "ref": "#reactionViewSender" }, 86 - "createdAt": { "type": "string", "format": "datetime" } 123 + "value": { 124 + "type": "string" 125 + }, 126 + "sender": { 127 + "type": "ref", 128 + "ref": "#reactionViewSender" 129 + }, 130 + "createdAt": { 131 + "type": "string", 132 + "format": "datetime" 133 + } 87 134 } 88 135 }, 89 136 "reactionViewSender": { 90 137 "type": "object", 91 138 "required": ["did"], 92 139 "properties": { 93 - "did": { "type": "string", "format": "did" } 140 + "did": { 141 + "type": "string", 142 + "format": "did" 143 + } 94 144 } 95 145 }, 96 146 "messageAndReactionView": { 97 147 "type": "object", 98 148 "required": ["message", "reaction"], 99 149 "properties": { 100 - "message": { "type": "ref", "ref": "#messageView" }, 101 - "reaction": { "type": "ref", "ref": "#reactionView" } 150 + "message": { 151 + "type": "ref", 152 + "ref": "#messageView" 153 + }, 154 + "reaction": { 155 + "type": "ref", 156 + "ref": "#reactionView" 157 + } 102 158 } 103 159 }, 104 160 "convoView": { 105 161 "type": "object", 106 162 "required": ["id", "rev", "members", "muted", "unreadCount"], 107 163 "properties": { 108 - "id": { "type": "string" }, 109 - "rev": { "type": "string" }, 164 + "id": { 165 + "type": "string" 166 + }, 167 + "rev": { 168 + "type": "string" 169 + }, 110 170 "members": { 111 171 "type": "array", 112 172 "items": { ··· 122 182 "type": "union", 123 183 "refs": ["#messageAndReactionView"] 124 184 }, 125 - "muted": { "type": "boolean" }, 185 + "muted": { 186 + "type": "boolean" 187 + }, 126 188 "status": { 127 189 "type": "string", 128 190 "knownValues": ["request", "accepted"] 129 191 }, 130 - "unreadCount": { "type": "integer" } 192 + "unreadCount": { 193 + "type": "integer" 194 + } 131 195 } 132 196 }, 133 197 "logBeginConvo": { 134 198 "type": "object", 135 199 "required": ["rev", "convoId"], 136 200 "properties": { 137 - "rev": { "type": "string" }, 138 - "convoId": { "type": "string" } 201 + "rev": { 202 + "type": "string" 203 + }, 204 + "convoId": { 205 + "type": "string" 206 + } 139 207 } 140 208 }, 141 209 "logAcceptConvo": { 142 210 "type": "object", 143 211 "required": ["rev", "convoId"], 144 212 "properties": { 145 - "rev": { "type": "string" }, 146 - "convoId": { "type": "string" } 213 + "rev": { 214 + "type": "string" 215 + }, 216 + "convoId": { 217 + "type": "string" 218 + } 147 219 } 148 220 }, 149 221 "logLeaveConvo": { 150 222 "type": "object", 151 223 "required": ["rev", "convoId"], 152 224 "properties": { 153 - "rev": { "type": "string" }, 154 - "convoId": { "type": "string" } 225 + "rev": { 226 + "type": "string" 227 + }, 228 + "convoId": { 229 + "type": "string" 230 + } 155 231 } 156 232 }, 157 233 "logMuteConvo": { 158 234 "type": "object", 159 235 "required": ["rev", "convoId"], 160 236 "properties": { 161 - "rev": { "type": "string" }, 162 - "convoId": { "type": "string" } 237 + "rev": { 238 + "type": "string" 239 + }, 240 + "convoId": { 241 + "type": "string" 242 + } 163 243 } 164 244 }, 165 245 "logUnmuteConvo": { 166 246 "type": "object", 167 247 "required": ["rev", "convoId"], 168 248 "properties": { 169 - "rev": { "type": "string" }, 170 - "convoId": { "type": "string" } 249 + "rev": { 250 + "type": "string" 251 + }, 252 + "convoId": { 253 + "type": "string" 254 + } 171 255 } 172 256 }, 173 257 "logCreateMessage": { 174 258 "type": "object", 175 259 "required": ["rev", "convoId", "message"], 176 260 "properties": { 177 - "rev": { "type": "string" }, 178 - "convoId": { "type": "string" }, 261 + "rev": { 262 + "type": "string" 263 + }, 264 + "convoId": { 265 + "type": "string" 266 + }, 179 267 "message": { 180 268 "type": "union", 181 269 "refs": ["#messageView", "#deletedMessageView"] ··· 186 274 "type": "object", 187 275 "required": ["rev", "convoId", "message"], 188 276 "properties": { 189 - "rev": { "type": "string" }, 190 - "convoId": { "type": "string" }, 277 + "rev": { 278 + "type": "string" 279 + }, 280 + "convoId": { 281 + "type": "string" 282 + }, 191 283 "message": { 192 284 "type": "union", 193 285 "refs": ["#messageView", "#deletedMessageView"] ··· 198 290 "type": "object", 199 291 "required": ["rev", "convoId", "message"], 200 292 "properties": { 201 - "rev": { "type": "string" }, 202 - "convoId": { "type": "string" }, 293 + "rev": { 294 + "type": "string" 295 + }, 296 + "convoId": { 297 + "type": "string" 298 + }, 203 299 "message": { 204 300 "type": "union", 205 301 "refs": ["#messageView", "#deletedMessageView"] ··· 210 306 "type": "object", 211 307 "required": ["rev", "convoId", "message", "reaction"], 212 308 "properties": { 213 - "rev": { "type": "string" }, 214 - "convoId": { "type": "string" }, 309 + "rev": { 310 + "type": "string" 311 + }, 312 + "convoId": { 313 + "type": "string" 314 + }, 215 315 "message": { 216 316 "type": "union", 217 317 "refs": ["#messageView", "#deletedMessageView"] 218 318 }, 219 - "reaction": { "type": "ref", "ref": "#reactionView" } 319 + "reaction": { 320 + "type": "ref", 321 + "ref": "#reactionView" 322 + } 220 323 } 221 324 }, 222 325 "logRemoveReaction": { 223 326 "type": "object", 224 327 "required": ["rev", "convoId", "message", "reaction"], 225 328 "properties": { 226 - "rev": { "type": "string" }, 227 - "convoId": { "type": "string" }, 329 + "rev": { 330 + "type": "string" 331 + }, 332 + "convoId": { 333 + "type": "string" 334 + }, 228 335 "message": { 229 336 "type": "union", 230 337 "refs": ["#messageView", "#deletedMessageView"] 231 338 }, 232 - "reaction": { "type": "ref", "ref": "#reactionView" } 339 + "reaction": { 340 + "type": "ref", 341 + "ref": "#reactionView" 342 + } 233 343 } 234 344 } 235 345 }
+6 -2
lexdocs/bluesky/chat/bsky/convo/deleteMessageForSelf.json packages/definitions/bluesky/lexicons/chat/bsky/convo/deleteMessageForSelf.json
··· 10 10 "type": "object", 11 11 "required": ["convoId", "messageId"], 12 12 "properties": { 13 - "convoId": { "type": "string" }, 14 - "messageId": { "type": "string" } 13 + "convoId": { 14 + "type": "string" 15 + }, 16 + "messageId": { 17 + "type": "string" 18 + } 15 19 } 16 20 } 17 21 },
+3 -1
lexdocs/bluesky/chat/bsky/convo/getConvo.json packages/definitions/bluesky/lexicons/chat/bsky/convo/getConvo.json
··· 8 8 "type": "params", 9 9 "required": ["convoId"], 10 10 "properties": { 11 - "convoId": { "type": "string" } 11 + "convoId": { 12 + "type": "string" 13 + } 12 14 } 13 15 }, 14 16 "output": {
lexdocs/bluesky/chat/bsky/convo/getConvoAvailability.json packages/definitions/bluesky/lexicons/chat/bsky/convo/getConvoAvailability.json
lexdocs/bluesky/chat/bsky/convo/getConvoForMembers.json packages/definitions/bluesky/lexicons/chat/bsky/convo/getConvoForMembers.json
+6 -2
lexdocs/bluesky/chat/bsky/convo/getLog.json packages/definitions/bluesky/lexicons/chat/bsky/convo/getLog.json
··· 8 8 "type": "params", 9 9 "required": [], 10 10 "properties": { 11 - "cursor": { "type": "string" } 11 + "cursor": { 12 + "type": "string" 13 + } 12 14 } 13 15 }, 14 16 "output": { ··· 17 19 "type": "object", 18 20 "required": ["logs"], 19 21 "properties": { 20 - "cursor": { "type": "string" }, 22 + "cursor": { 23 + "type": "string" 24 + }, 21 25 "logs": { 22 26 "type": "array", 23 27 "items": {
+9 -3
lexdocs/bluesky/chat/bsky/convo/getMessages.json packages/definitions/bluesky/lexicons/chat/bsky/convo/getMessages.json
··· 8 8 "type": "params", 9 9 "required": ["convoId"], 10 10 "properties": { 11 - "convoId": { "type": "string" }, 11 + "convoId": { 12 + "type": "string" 13 + }, 12 14 "limit": { 13 15 "type": "integer", 14 16 "minimum": 1, 15 17 "maximum": 100, 16 18 "default": 50 17 19 }, 18 - "cursor": { "type": "string" } 20 + "cursor": { 21 + "type": "string" 22 + } 19 23 } 20 24 }, 21 25 "output": { ··· 24 28 "type": "object", 25 29 "required": ["messages"], 26 30 "properties": { 27 - "cursor": { "type": "string" }, 31 + "cursor": { 32 + "type": "string" 33 + }, 28 34 "messages": { 29 35 "type": "array", 30 36 "items": {
+9 -3
lexdocs/bluesky/chat/bsky/convo/leaveConvo.json packages/definitions/bluesky/lexicons/chat/bsky/convo/leaveConvo.json
··· 10 10 "type": "object", 11 11 "required": ["convoId"], 12 12 "properties": { 13 - "convoId": { "type": "string" } 13 + "convoId": { 14 + "type": "string" 15 + } 14 16 } 15 17 } 16 18 }, ··· 20 22 "type": "object", 21 23 "required": ["convoId", "rev"], 22 24 "properties": { 23 - "convoId": { "type": "string" }, 24 - "rev": { "type": "string" } 25 + "convoId": { 26 + "type": "string" 27 + }, 28 + "rev": { 29 + "type": "string" 30 + } 25 31 } 26 32 } 27 33 }
+6 -2
lexdocs/bluesky/chat/bsky/convo/listConvos.json packages/definitions/bluesky/lexicons/chat/bsky/convo/listConvos.json
··· 13 13 "maximum": 100, 14 14 "default": 50 15 15 }, 16 - "cursor": { "type": "string" }, 16 + "cursor": { 17 + "type": "string" 18 + }, 17 19 "readState": { 18 20 "type": "string", 19 21 "knownValues": ["unread"] ··· 30 32 "type": "object", 31 33 "required": ["convos"], 32 34 "properties": { 33 - "cursor": { "type": "string" }, 35 + "cursor": { 36 + "type": "string" 37 + }, 34 38 "convos": { 35 39 "type": "array", 36 40 "items": {
+3 -1
lexdocs/bluesky/chat/bsky/convo/muteConvo.json packages/definitions/bluesky/lexicons/chat/bsky/convo/muteConvo.json
··· 10 10 "type": "object", 11 11 "required": ["convoId"], 12 12 "properties": { 13 - "convoId": { "type": "string" } 13 + "convoId": { 14 + "type": "string" 15 + } 14 16 } 15 17 } 16 18 },
+6 -2
lexdocs/bluesky/chat/bsky/convo/removeReaction.json packages/definitions/bluesky/lexicons/chat/bsky/convo/removeReaction.json
··· 11 11 "type": "object", 12 12 "required": ["convoId", "messageId", "value"], 13 13 "properties": { 14 - "convoId": { "type": "string" }, 15 - "messageId": { "type": "string" }, 14 + "convoId": { 15 + "type": "string" 16 + }, 17 + "messageId": { 18 + "type": "string" 19 + }, 16 20 "value": { 17 21 "type": "string", 18 22 "minLength": 1,
+3 -1
lexdocs/bluesky/chat/bsky/convo/sendMessage.json packages/definitions/bluesky/lexicons/chat/bsky/convo/sendMessage.json
··· 10 10 "type": "object", 11 11 "required": ["convoId", "message"], 12 12 "properties": { 13 - "convoId": { "type": "string" }, 13 + "convoId": { 14 + "type": "string" 15 + }, 14 16 "message": { 15 17 "type": "ref", 16 18 "ref": "chat.bsky.convo.defs#messageInput"
+3 -1
lexdocs/bluesky/chat/bsky/convo/sendMessageBatch.json packages/definitions/bluesky/lexicons/chat/bsky/convo/sendMessageBatch.json
··· 42 42 "type": "object", 43 43 "required": ["convoId", "message"], 44 44 "properties": { 45 - "convoId": { "type": "string" }, 45 + "convoId": { 46 + "type": "string" 47 + }, 46 48 "message": { 47 49 "type": "ref", 48 50 "ref": "chat.bsky.convo.defs#messageInput"
+3 -1
lexdocs/bluesky/chat/bsky/convo/unmuteConvo.json packages/definitions/bluesky/lexicons/chat/bsky/convo/unmuteConvo.json
··· 10 10 "type": "object", 11 11 "required": ["convoId"], 12 12 "properties": { 13 - "convoId": { "type": "string" } 13 + "convoId": { 14 + "type": "string" 15 + } 14 16 } 15 17 } 16 18 },
lexdocs/bluesky/chat/bsky/convo/updateAllRead.json packages/definitions/bluesky/lexicons/chat/bsky/convo/updateAllRead.json
+6 -2
lexdocs/bluesky/chat/bsky/convo/updateRead.json packages/definitions/bluesky/lexicons/chat/bsky/convo/updateRead.json
··· 10 10 "type": "object", 11 11 "required": ["convoId"], 12 12 "properties": { 13 - "convoId": { "type": "string" }, 14 - "messageId": { "type": "string" } 13 + "convoId": { 14 + "type": "string" 15 + }, 16 + "messageId": { 17 + "type": "string" 18 + } 15 19 } 16 20 } 17 21 },
-38
lexdocs/bluesky/chat/bsky/moderation/getActorMetadata.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "chat.bsky.moderation.getActorMetadata", 4 - "defs": { 5 - "main": { 6 - "type": "query", 7 - "parameters": { 8 - "type": "params", 9 - "required": ["actor"], 10 - "properties": { 11 - "actor": { "type": "string", "format": "did" } 12 - } 13 - }, 14 - "output": { 15 - "encoding": "application/json", 16 - "schema": { 17 - "type": "object", 18 - "required": ["day", "month", "all"], 19 - "properties": { 20 - "day": { "type": "ref", "ref": "#metadata" }, 21 - "month": { "type": "ref", "ref": "#metadata" }, 22 - "all": { "type": "ref", "ref": "#metadata" } 23 - } 24 - } 25 - } 26 - }, 27 - "metadata": { 28 - "type": "object", 29 - "required": ["messagesSent", "messagesReceived", "convos", "convosStarted"], 30 - "properties": { 31 - "messagesSent": { "type": "integer" }, 32 - "messagesReceived": { "type": "integer" }, 33 - "convos": { "type": "integer" }, 34 - "convosStarted": { "type": "integer" } 35 - } 36 - } 37 - } 38 - }
+11 -3
lexdocs/bluesky/chat/bsky/moderation/getMessageContext.json packages/definitions/bluesky/lexicons/chat/bsky/moderation/getMessageContext.json
··· 12 12 "type": "string", 13 13 "description": "Conversation that the message is from. NOTE: this field will eventually be required." 14 14 }, 15 - "messageId": { "type": "string" }, 16 - "before": { "type": "integer", "default": 5 }, 17 - "after": { "type": "integer", "default": 5 } 15 + "messageId": { 16 + "type": "string" 17 + }, 18 + "before": { 19 + "type": "integer", 20 + "default": 5 21 + }, 22 + "after": { 23 + "type": "integer", 24 + "default": 5 25 + } 18 26 } 19 27 }, 20 28 "output": {
+10 -3
lexdocs/bluesky/chat/bsky/moderation/updateActorAccess.json packages/definitions/bluesky/lexicons/chat/bsky/moderation/updateActorAccess.json
··· 10 10 "type": "object", 11 11 "required": ["actor", "allowAccess"], 12 12 "properties": { 13 - "actor": { "type": "string", "format": "did" }, 14 - "allowAccess": { "type": "boolean" }, 15 - "ref": { "type": "string" } 13 + "actor": { 14 + "type": "string", 15 + "format": "did" 16 + }, 17 + "allowAccess": { 18 + "type": "boolean" 19 + }, 20 + "ref": { 21 + "type": "string" 22 + } 16 23 } 17 24 } 18 25 }
-71
lexdocs/bluesky/com/atproto/admin/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.admin.defs", 4 - "defs": { 5 - "statusAttr": { 6 - "type": "object", 7 - "required": ["applied"], 8 - "properties": { 9 - "applied": { "type": "boolean" }, 10 - "ref": { "type": "string" } 11 - } 12 - }, 13 - "accountView": { 14 - "type": "object", 15 - "required": ["did", "handle", "indexedAt"], 16 - "properties": { 17 - "did": { "type": "string", "format": "did" }, 18 - "handle": { "type": "string", "format": "handle" }, 19 - "email": { "type": "string" }, 20 - "relatedRecords": { "type": "array", "items": { "type": "unknown" } }, 21 - "indexedAt": { "type": "string", "format": "datetime" }, 22 - "invitedBy": { 23 - "type": "ref", 24 - "ref": "com.atproto.server.defs#inviteCode" 25 - }, 26 - "invites": { 27 - "type": "array", 28 - "items": { 29 - "type": "ref", 30 - "ref": "com.atproto.server.defs#inviteCode" 31 - } 32 - }, 33 - "invitesDisabled": { "type": "boolean" }, 34 - "emailConfirmedAt": { "type": "string", "format": "datetime" }, 35 - "inviteNote": { "type": "string" }, 36 - "deactivatedAt": { "type": "string", "format": "datetime" }, 37 - "threatSignatures": { 38 - "type": "array", 39 - "items": { 40 - "type": "ref", 41 - "ref": "#threatSignature" 42 - } 43 - } 44 - } 45 - }, 46 - "repoRef": { 47 - "type": "object", 48 - "required": ["did"], 49 - "properties": { 50 - "did": { "type": "string", "format": "did" } 51 - } 52 - }, 53 - "repoBlobRef": { 54 - "type": "object", 55 - "required": ["did", "cid"], 56 - "properties": { 57 - "did": { "type": "string", "format": "did" }, 58 - "cid": { "type": "string", "format": "cid" }, 59 - "recordUri": { "type": "string", "format": "at-uri" } 60 - } 61 - }, 62 - "threatSignature": { 63 - "type": "object", 64 - "required": ["property", "value"], 65 - "properties": { 66 - "property": { "type": "string" }, 67 - "value": { "type": "string" } 68 - } 69 - } 70 - } 71 - }
+4 -1
lexdocs/bluesky/com/atproto/admin/deleteAccount.json packages/definitions/atproto/lexicons/com/atproto/admin/deleteAccount.json
··· 11 11 "type": "object", 12 12 "required": ["did"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" } 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + } 15 18 } 16 19 } 17 20 }
+4 -1
lexdocs/bluesky/com/atproto/admin/disableAccountInvites.json packages/definitions/atproto/lexicons/com/atproto/admin/disableAccountInvites.json
··· 11 11 "type": "object", 12 12 "required": ["account"], 13 13 "properties": { 14 - "account": { "type": "string", "format": "did" }, 14 + "account": { 15 + "type": "string", 16 + "format": "did" 17 + }, 15 18 "note": { 16 19 "type": "string", 17 20 "description": "Optional reason for disabled invites."
+6 -2
lexdocs/bluesky/com/atproto/admin/disableInviteCodes.json packages/definitions/atproto/lexicons/com/atproto/admin/disableInviteCodes.json
··· 12 12 "properties": { 13 13 "codes": { 14 14 "type": "array", 15 - "items": { "type": "string" } 15 + "items": { 16 + "type": "string" 17 + } 16 18 }, 17 19 "accounts": { 18 20 "type": "array", 19 - "items": { "type": "string" } 21 + "items": { 22 + "type": "string" 23 + } 20 24 } 21 25 } 22 26 }
+4 -1
lexdocs/bluesky/com/atproto/admin/enableAccountInvites.json packages/definitions/atproto/lexicons/com/atproto/admin/enableAccountInvites.json
··· 11 11 "type": "object", 12 12 "required": ["account"], 13 13 "properties": { 14 - "account": { "type": "string", "format": "did" }, 14 + "account": { 15 + "type": "string", 16 + "format": "did" 17 + }, 15 18 "note": { 16 19 "type": "string", 17 20 "description": "Optional reason for enabled invites."
+4 -1
lexdocs/bluesky/com/atproto/admin/getAccountInfo.json packages/definitions/atproto/lexicons/com/atproto/admin/getAccountInfo.json
··· 9 9 "type": "params", 10 10 "required": ["did"], 11 11 "properties": { 12 - "did": { "type": "string", "format": "did" } 12 + "did": { 13 + "type": "string", 14 + "format": "did" 15 + } 13 16 } 14 17 }, 15 18 "output": {
+4 -1
lexdocs/bluesky/com/atproto/admin/getAccountInfos.json packages/definitions/atproto/lexicons/com/atproto/admin/getAccountInfos.json
··· 11 11 "properties": { 12 12 "dids": { 13 13 "type": "array", 14 - "items": { "type": "string", "format": "did" } 14 + "items": { 15 + "type": "string", 16 + "format": "did" 17 + } 15 18 } 16 19 } 17 20 },
+6 -2
lexdocs/bluesky/com/atproto/admin/getInviteCodes.json packages/definitions/atproto/lexicons/com/atproto/admin/getInviteCodes.json
··· 19 19 "maximum": 500, 20 20 "default": 100 21 21 }, 22 - "cursor": { "type": "string" } 22 + "cursor": { 23 + "type": "string" 24 + } 23 25 } 24 26 }, 25 27 "output": { ··· 28 30 "type": "object", 29 31 "required": ["codes"], 30 32 "properties": { 31 - "cursor": { "type": "string" }, 33 + "cursor": { 34 + "type": "string" 35 + }, 32 36 "codes": { 33 37 "type": "array", 34 38 "items": {
+12 -3
lexdocs/bluesky/com/atproto/admin/getSubjectStatus.json packages/definitions/atproto/lexicons/com/atproto/admin/getSubjectStatus.json
··· 8 8 "parameters": { 9 9 "type": "params", 10 10 "properties": { 11 - "did": { "type": "string", "format": "did" }, 12 - "uri": { "type": "string", "format": "at-uri" }, 13 - "blob": { "type": "string", "format": "cid" } 11 + "did": { 12 + "type": "string", 13 + "format": "did" 14 + }, 15 + "uri": { 16 + "type": "string", 17 + "format": "at-uri" 18 + }, 19 + "blob": { 20 + "type": "string", 21 + "format": "cid" 22 + } 14 23 } 15 24 }, 16 25 "output": {
+9 -3
lexdocs/bluesky/com/atproto/admin/searchAccounts.json packages/definitions/atproto/lexicons/com/atproto/admin/searchAccounts.json
··· 8 8 "parameters": { 9 9 "type": "params", 10 10 "properties": { 11 - "email": { "type": "string" }, 12 - "cursor": { "type": "string" }, 11 + "email": { 12 + "type": "string" 13 + }, 14 + "cursor": { 15 + "type": "string" 16 + }, 13 17 "limit": { 14 18 "type": "integer", 15 19 "minimum": 1, ··· 24 28 "type": "object", 25 29 "required": ["accounts"], 26 30 "properties": { 27 - "cursor": { "type": "string" }, 31 + "cursor": { 32 + "type": "string" 33 + }, 28 34 "accounts": { 29 35 "type": "array", 30 36 "items": {
+17 -5
lexdocs/bluesky/com/atproto/admin/sendEmail.json packages/definitions/atproto/lexicons/com/atproto/admin/sendEmail.json
··· 11 11 "type": "object", 12 12 "required": ["recipientDid", "content", "senderDid"], 13 13 "properties": { 14 - "recipientDid": { "type": "string", "format": "did" }, 15 - "content": { "type": "string" }, 16 - "subject": { "type": "string" }, 17 - "senderDid": { "type": "string", "format": "did" }, 14 + "recipientDid": { 15 + "type": "string", 16 + "format": "did" 17 + }, 18 + "content": { 19 + "type": "string" 20 + }, 21 + "subject": { 22 + "type": "string" 23 + }, 24 + "senderDid": { 25 + "type": "string", 26 + "format": "did" 27 + }, 18 28 "comment": { 19 29 "type": "string", 20 30 "description": "Additional comment by the sender that won't be used in the email itself but helpful to provide more context for moderators/reviewers" ··· 28 38 "type": "object", 29 39 "required": ["sent"], 30 40 "properties": { 31 - "sent": { "type": "boolean" } 41 + "sent": { 42 + "type": "boolean" 43 + } 32 44 } 33 45 } 34 46 }
+3 -1
lexdocs/bluesky/com/atproto/admin/updateAccountEmail.json packages/definitions/atproto/lexicons/com/atproto/admin/updateAccountEmail.json
··· 16 16 "format": "at-identifier", 17 17 "description": "The handle or DID of the repo." 18 18 }, 19 - "email": { "type": "string" } 19 + "email": { 20 + "type": "string" 21 + } 20 22 } 21 23 } 22 24 }
+8 -2
lexdocs/bluesky/com/atproto/admin/updateAccountHandle.json packages/definitions/atproto/lexicons/com/atproto/admin/updateAccountHandle.json
··· 11 11 "type": "object", 12 12 "required": ["did", "handle"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" }, 15 - "handle": { "type": "string", "format": "handle" } 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + }, 18 + "handle": { 19 + "type": "string", 20 + "format": "handle" 21 + } 16 22 } 17 23 } 18 24 }
+7 -2
lexdocs/bluesky/com/atproto/admin/updateAccountPassword.json packages/definitions/atproto/lexicons/com/atproto/admin/updateAccountPassword.json
··· 11 11 "type": "object", 12 12 "required": ["did", "password"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" }, 15 - "password": { "type": "string" } 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + }, 18 + "password": { 19 + "type": "string" 20 + } 16 21 } 17 22 } 18 23 }
+4 -1
lexdocs/bluesky/com/atproto/admin/updateAccountSigningKey.json packages/definitions/atproto/lexicons/com/atproto/admin/updateAccountSigningKey.json
··· 11 11 "type": "object", 12 12 "required": ["did", "signingKey"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" }, 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + }, 15 18 "signingKey": { 16 19 "type": "string", 17 20 "format": "did",
lexdocs/bluesky/com/atproto/admin/updateSubjectStatus.json packages/definitions/atproto/lexicons/com/atproto/admin/updateSubjectStatus.json
+4 -1
lexdocs/bluesky/com/atproto/identity/defs.json packages/definitions/atproto/lexicons/com/atproto/identity/defs.json
··· 6 6 "type": "object", 7 7 "required": ["did", "handle", "didDoc"], 8 8 "properties": { 9 - "did": { "type": "string", "format": "did" }, 9 + "did": { 10 + "type": "string", 11 + "format": "did" 12 + }, 10 13 "handle": { 11 14 "type": "string", 12 15 "format": "handle",
+12 -4
lexdocs/bluesky/com/atproto/identity/getRecommendedDidCredentials.json packages/definitions/atproto/lexicons/com/atproto/identity/getRecommendedDidCredentials.json
··· 13 13 "rotationKeys": { 14 14 "description": "Recommended rotation keys for PLC dids. Should be undefined (or ignored) for did:webs.", 15 15 "type": "array", 16 - "items": { "type": "string" } 16 + "items": { 17 + "type": "string" 18 + } 17 19 }, 18 20 "alsoKnownAs": { 19 21 "type": "array", 20 - "items": { "type": "string" } 22 + "items": { 23 + "type": "string" 24 + } 21 25 }, 22 - "verificationMethods": { "type": "unknown" }, 23 - "services": { "type": "unknown" } 26 + "verificationMethods": { 27 + "type": "unknown" 28 + }, 29 + "services": { 30 + "type": "unknown" 31 + } 24 32 } 25 33 } 26 34 }
lexdocs/bluesky/com/atproto/identity/refreshIdentity.json packages/definitions/atproto/lexicons/com/atproto/identity/refreshIdentity.json
lexdocs/bluesky/com/atproto/identity/requestPlcOperationSignature.json packages/definitions/atproto/lexicons/com/atproto/identity/requestPlcOperationSignature.json
lexdocs/bluesky/com/atproto/identity/resolveDid.json packages/definitions/atproto/lexicons/com/atproto/identity/resolveDid.json
+4 -1
lexdocs/bluesky/com/atproto/identity/resolveHandle.json packages/definitions/atproto/lexicons/com/atproto/identity/resolveHandle.json
··· 22 22 "type": "object", 23 23 "required": ["did"], 24 24 "properties": { 25 - "did": { "type": "string", "format": "did" } 25 + "did": { 26 + "type": "string", 27 + "format": "did" 28 + } 26 29 } 27 30 } 28 31 },
lexdocs/bluesky/com/atproto/identity/resolveIdentity.json packages/definitions/atproto/lexicons/com/atproto/identity/resolveIdentity.json
+12 -4
lexdocs/bluesky/com/atproto/identity/signPlcOperation.json packages/definitions/atproto/lexicons/com/atproto/identity/signPlcOperation.json
··· 16 16 }, 17 17 "rotationKeys": { 18 18 "type": "array", 19 - "items": { "type": "string" } 19 + "items": { 20 + "type": "string" 21 + } 20 22 }, 21 23 "alsoKnownAs": { 22 24 "type": "array", 23 - "items": { "type": "string" } 25 + "items": { 26 + "type": "string" 27 + } 24 28 }, 25 - "verificationMethods": { "type": "unknown" }, 26 - "services": { "type": "unknown" } 29 + "verificationMethods": { 30 + "type": "unknown" 31 + }, 32 + "services": { 33 + "type": "unknown" 34 + } 27 35 } 28 36 } 29 37 },
+3 -1
lexdocs/bluesky/com/atproto/identity/submitPlcOperation.json packages/definitions/atproto/lexicons/com/atproto/identity/submitPlcOperation.json
··· 11 11 "type": "object", 12 12 "required": ["operation"], 13 13 "properties": { 14 - "operation": { "type": "unknown" } 14 + "operation": { 15 + "type": "unknown" 16 + } 15 17 } 16 18 } 17 19 }
lexdocs/bluesky/com/atproto/identity/updateHandle.json packages/definitions/atproto/lexicons/com/atproto/identity/updateHandle.json
+8 -2
lexdocs/bluesky/com/atproto/label/defs.json packages/definitions/atproto/lexicons/com/atproto/label/defs.json
··· 58 58 "properties": { 59 59 "values": { 60 60 "type": "array", 61 - "items": { "type": "ref", "ref": "#selfLabel" }, 61 + "items": { 62 + "type": "ref", 63 + "ref": "#selfLabel" 64 + }, 62 65 "maxLength": 10 63 66 } 64 67 } ··· 108 111 }, 109 112 "locales": { 110 113 "type": "array", 111 - "items": { "type": "ref", "ref": "#labelValueDefinitionStrings" } 114 + "items": { 115 + "type": "ref", 116 + "ref": "#labelValueDefinitionStrings" 117 + } 112 118 } 113 119 } 114 120 },
+17 -5
lexdocs/bluesky/com/atproto/label/queryLabels.json packages/definitions/atproto/lexicons/com/atproto/label/queryLabels.json
··· 11 11 "properties": { 12 12 "uriPatterns": { 13 13 "type": "array", 14 - "items": { "type": "string" }, 14 + "items": { 15 + "type": "string" 16 + }, 15 17 "description": "List of AT URI patterns to match (boolean 'OR'). Each may be a prefix (ending with '*'; will match inclusive of the string leading to '*'), or a full URI." 16 18 }, 17 19 "sources": { 18 20 "type": "array", 19 - "items": { "type": "string", "format": "did" }, 21 + "items": { 22 + "type": "string", 23 + "format": "did" 24 + }, 20 25 "description": "Optional list of label sources (DIDs) to filter on." 21 26 }, 22 27 "limit": { ··· 25 30 "maximum": 250, 26 31 "default": 50 27 32 }, 28 - "cursor": { "type": "string" } 33 + "cursor": { 34 + "type": "string" 35 + } 29 36 } 30 37 }, 31 38 "output": { ··· 34 41 "type": "object", 35 42 "required": ["labels"], 36 43 "properties": { 37 - "cursor": { "type": "string" }, 44 + "cursor": { 45 + "type": "string" 46 + }, 38 47 "labels": { 39 48 "type": "array", 40 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 49 + "items": { 50 + "type": "ref", 51 + "ref": "com.atproto.label.defs#label" 52 + } 41 53 } 42 54 } 43 55 }
+12 -3
lexdocs/bluesky/com/atproto/label/subscribeLabels.json packages/definitions/atproto/lexicons/com/atproto/label/subscribeLabels.json
··· 20 20 "refs": ["#labels", "#info"] 21 21 } 22 22 }, 23 - "errors": [{ "name": "FutureCursor" }] 23 + "errors": [ 24 + { 25 + "name": "FutureCursor" 26 + } 27 + ] 24 28 }, 25 29 "labels": { 26 30 "type": "object", 27 31 "required": ["seq", "labels"], 28 32 "properties": { 29 - "seq": { "type": "integer" }, 33 + "seq": { 34 + "type": "integer" 35 + }, 30 36 "labels": { 31 37 "type": "array", 32 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 38 + "items": { 39 + "type": "ref", 40 + "ref": "com.atproto.label.defs#label" 41 + } 33 42 } 34 43 } 35 44 },
lexdocs/bluesky/com/atproto/lexicon/resolveLexicon.json packages/definitions/atproto/lexicons/com/atproto/lexicon/resolveLexicon.json
lexdocs/bluesky/com/atproto/lexicon/schema.json packages/definitions/atproto/lexicons/com/atproto/lexicon/schema.json
+11 -3
lexdocs/bluesky/com/atproto/moderation/createReport.json packages/definitions/atproto/lexicons/com/atproto/moderation/createReport.json
··· 39 39 "type": "object", 40 40 "required": ["id", "reasonType", "subject", "reportedBy", "createdAt"], 41 41 "properties": { 42 - "id": { "type": "integer" }, 42 + "id": { 43 + "type": "integer" 44 + }, 43 45 "reasonType": { 44 46 "type": "ref", 45 47 "ref": "com.atproto.moderation.defs#reasonType" ··· 53 55 "type": "union", 54 56 "refs": ["com.atproto.admin.defs#repoRef", "com.atproto.repo.strongRef"] 55 57 }, 56 - "reportedBy": { "type": "string", "format": "did" }, 57 - "createdAt": { "type": "string", "format": "datetime" } 58 + "reportedBy": { 59 + "type": "string", 60 + "format": "did" 61 + }, 62 + "createdAt": { 63 + "type": "string", 64 + "format": "datetime" 65 + } 58 66 } 59 67 } 60 68 }
-8
lexdocs/bluesky/com/atproto/moderation/defs.json packages/definitions/atproto/lexicons/com/atproto/moderation/defs.json
··· 12 12 "com.atproto.moderation.defs#reasonRude", 13 13 "com.atproto.moderation.defs#reasonOther", 14 14 "com.atproto.moderation.defs#reasonAppeal", 15 - 16 15 "tools.ozone.report.defs#reasonAppeal", 17 16 "tools.ozone.report.defs#reasonOther", 18 - 19 17 "tools.ozone.report.defs#reasonViolenceAnimal", 20 18 "tools.ozone.report.defs#reasonViolenceThreats", 21 19 "tools.ozone.report.defs#reasonViolenceGraphicContent", ··· 23 21 "tools.ozone.report.defs#reasonViolenceExtremistContent", 24 22 "tools.ozone.report.defs#reasonViolenceTrafficking", 25 23 "tools.ozone.report.defs#reasonViolenceOther", 26 - 27 24 "tools.ozone.report.defs#reasonSexualAbuseContent", 28 25 "tools.ozone.report.defs#reasonSexualNCII", 29 26 "tools.ozone.report.defs#reasonSexualDeepfake", 30 27 "tools.ozone.report.defs#reasonSexualAnimal", 31 28 "tools.ozone.report.defs#reasonSexualUnlabeled", 32 29 "tools.ozone.report.defs#reasonSexualOther", 33 - 34 30 "tools.ozone.report.defs#reasonChildSafetyCSAM", 35 31 "tools.ozone.report.defs#reasonChildSafetyGroom", 36 32 "tools.ozone.report.defs#reasonChildSafetyPrivacy", 37 33 "tools.ozone.report.defs#reasonChildSafetyHarassment", 38 34 "tools.ozone.report.defs#reasonChildSafetyOther", 39 - 40 35 "tools.ozone.report.defs#reasonHarassmentTroll", 41 36 "tools.ozone.report.defs#reasonHarassmentTargeted", 42 37 "tools.ozone.report.defs#reasonHarassmentHateSpeech", 43 38 "tools.ozone.report.defs#reasonHarassmentDoxxing", 44 39 "tools.ozone.report.defs#reasonHarassmentOther", 45 - 46 40 "tools.ozone.report.defs#reasonMisleadingBot", 47 41 "tools.ozone.report.defs#reasonMisleadingImpersonation", 48 42 "tools.ozone.report.defs#reasonMisleadingSpam", 49 43 "tools.ozone.report.defs#reasonMisleadingScam", 50 44 "tools.ozone.report.defs#reasonMisleadingElections", 51 45 "tools.ozone.report.defs#reasonMisleadingOther", 52 - 53 46 "tools.ozone.report.defs#reasonRuleSiteSecurity", 54 47 "tools.ozone.report.defs#reasonRuleProhibitedSales", 55 48 "tools.ozone.report.defs#reasonRuleBanEvasion", 56 49 "tools.ozone.report.defs#reasonRuleOther", 57 - 58 50 "tools.ozone.report.defs#reasonSelfHarmContent", 59 51 "tools.ozone.report.defs#reasonSelfHarmED", 60 52 "tools.ozone.report.defs#reasonSelfHarmStunts",
+42 -11
lexdocs/bluesky/com/atproto/repo/applyWrites.json packages/definitions/atproto/lexicons/com/atproto/repo/applyWrites.json
··· 69 69 "description": "Operation which creates a new record.", 70 70 "required": ["collection", "value"], 71 71 "properties": { 72 - "collection": { "type": "string", "format": "nsid" }, 72 + "collection": { 73 + "type": "string", 74 + "format": "nsid" 75 + }, 73 76 "rkey": { 74 77 "type": "string", 75 78 "maxLength": 512, 76 79 "format": "record-key", 77 80 "description": "NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility." 78 81 }, 79 - "value": { "type": "unknown" } 82 + "value": { 83 + "type": "unknown" 84 + } 80 85 } 81 86 }, 82 87 "update": { ··· 84 89 "description": "Operation which updates an existing record.", 85 90 "required": ["collection", "rkey", "value"], 86 91 "properties": { 87 - "collection": { "type": "string", "format": "nsid" }, 88 - "rkey": { "type": "string", "format": "record-key" }, 89 - "value": { "type": "unknown" } 92 + "collection": { 93 + "type": "string", 94 + "format": "nsid" 95 + }, 96 + "rkey": { 97 + "type": "string", 98 + "format": "record-key" 99 + }, 100 + "value": { 101 + "type": "unknown" 102 + } 90 103 } 91 104 }, 92 105 "delete": { ··· 94 107 "description": "Operation which deletes an existing record.", 95 108 "required": ["collection", "rkey"], 96 109 "properties": { 97 - "collection": { "type": "string", "format": "nsid" }, 98 - "rkey": { "type": "string", "format": "record-key" } 110 + "collection": { 111 + "type": "string", 112 + "format": "nsid" 113 + }, 114 + "rkey": { 115 + "type": "string", 116 + "format": "record-key" 117 + } 99 118 } 100 119 }, 101 120 "createResult": { 102 121 "type": "object", 103 122 "required": ["uri", "cid"], 104 123 "properties": { 105 - "uri": { "type": "string", "format": "at-uri" }, 106 - "cid": { "type": "string", "format": "cid" }, 124 + "uri": { 125 + "type": "string", 126 + "format": "at-uri" 127 + }, 128 + "cid": { 129 + "type": "string", 130 + "format": "cid" 131 + }, 107 132 "validationStatus": { 108 133 "type": "string", 109 134 "knownValues": ["valid", "unknown"] ··· 114 139 "type": "object", 115 140 "required": ["uri", "cid"], 116 141 "properties": { 117 - "uri": { "type": "string", "format": "at-uri" }, 118 - "cid": { "type": "string", "format": "cid" }, 142 + "uri": { 143 + "type": "string", 144 + "format": "at-uri" 145 + }, 146 + "cid": { 147 + "type": "string", 148 + "format": "cid" 149 + }, 119 150 "validationStatus": { 120 151 "type": "string", 121 152 "knownValues": ["valid", "unknown"]
+8 -2
lexdocs/bluesky/com/atproto/repo/createRecord.json packages/definitions/atproto/lexicons/com/atproto/repo/createRecord.json
··· 49 49 "type": "object", 50 50 "required": ["uri", "cid"], 51 51 "properties": { 52 - "uri": { "type": "string", "format": "at-uri" }, 53 - "cid": { "type": "string", "format": "cid" }, 52 + "uri": { 53 + "type": "string", 54 + "format": "at-uri" 55 + }, 56 + "cid": { 57 + "type": "string", 58 + "format": "cid" 59 + }, 54 60 "commit": { 55 61 "type": "ref", 56 62 "ref": "com.atproto.repo.defs#commitMeta"
-14
lexdocs/bluesky/com/atproto/repo/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.repo.defs", 4 - "defs": { 5 - "commitMeta": { 6 - "type": "object", 7 - "required": ["cid", "rev"], 8 - "properties": { 9 - "cid": { "type": "string", "format": "cid" }, 10 - "rev": { "type": "string", "format": "tid" } 11 - } 12 - } 13 - } 14 - }
+5 -1
lexdocs/bluesky/com/atproto/repo/deleteRecord.json packages/definitions/atproto/lexicons/com/atproto/repo/deleteRecord.json
··· 51 51 } 52 52 } 53 53 }, 54 - "errors": [{ "name": "InvalidSwap" }] 54 + "errors": [ 55 + { 56 + "name": "InvalidSwap" 57 + } 58 + ] 55 59 } 56 60 } 57 61 }
+12 -3
lexdocs/bluesky/com/atproto/repo/describeRepo.json packages/definitions/atproto/lexicons/com/atproto/repo/describeRepo.json
··· 22 22 "type": "object", 23 23 "required": ["handle", "did", "didDoc", "collections", "handleIsCorrect"], 24 24 "properties": { 25 - "handle": { "type": "string", "format": "handle" }, 26 - "did": { "type": "string", "format": "did" }, 25 + "handle": { 26 + "type": "string", 27 + "format": "handle" 28 + }, 29 + "did": { 30 + "type": "string", 31 + "format": "did" 32 + }, 27 33 "didDoc": { 28 34 "type": "unknown", 29 35 "description": "The complete DID document for this account." ··· 31 37 "collections": { 32 38 "type": "array", 33 39 "description": "List of all the collections (NSIDs) for which this repo contains at least one record.", 34 - "items": { "type": "string", "format": "nsid" } 40 + "items": { 41 + "type": "string", 42 + "format": "nsid" 43 + } 35 44 }, 36 45 "handleIsCorrect": { 37 46 "type": "boolean",
+16 -4
lexdocs/bluesky/com/atproto/repo/getRecord.json packages/definitions/atproto/lexicons/com/atproto/repo/getRecord.json
··· 37 37 "type": "object", 38 38 "required": ["uri", "value"], 39 39 "properties": { 40 - "uri": { "type": "string", "format": "at-uri" }, 41 - "cid": { "type": "string", "format": "cid" }, 42 - "value": { "type": "unknown" } 40 + "uri": { 41 + "type": "string", 42 + "format": "at-uri" 43 + }, 44 + "cid": { 45 + "type": "string", 46 + "format": "cid" 47 + }, 48 + "value": { 49 + "type": "unknown" 50 + } 43 51 } 44 52 } 45 53 }, 46 - "errors": [{ "name": "RecordNotFound" }] 54 + "errors": [ 55 + { 56 + "name": "RecordNotFound" 57 + } 58 + ] 47 59 } 48 60 } 49 61 }
lexdocs/bluesky/com/atproto/repo/importRepo.json packages/definitions/atproto/lexicons/com/atproto/repo/importRepo.json
+18 -5
lexdocs/bluesky/com/atproto/repo/listMissingBlobs.json packages/definitions/atproto/lexicons/com/atproto/repo/listMissingBlobs.json
··· 14 14 "maximum": 1000, 15 15 "default": 500 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["blobs"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "blobs": { 28 32 "type": "array", 29 - "items": { "type": "ref", "ref": "#recordBlob" } 33 + "items": { 34 + "type": "ref", 35 + "ref": "#recordBlob" 36 + } 30 37 } 31 38 } 32 39 } ··· 36 43 "type": "object", 37 44 "required": ["cid", "recordUri"], 38 45 "properties": { 39 - "cid": { "type": "string", "format": "cid" }, 40 - "recordUri": { "type": "string", "format": "at-uri" } 46 + "cid": { 47 + "type": "string", 48 + "format": "cid" 49 + }, 50 + "recordUri": { 51 + "type": "string", 52 + "format": "at-uri" 53 + } 41 54 } 42 55 } 43 56 }
+21 -6
lexdocs/bluesky/com/atproto/repo/listRecords.json packages/definitions/atproto/lexicons/com/atproto/repo/listRecords.json
··· 26 26 "default": 50, 27 27 "description": "The number of records to return." 28 28 }, 29 - "cursor": { "type": "string" }, 29 + "cursor": { 30 + "type": "string" 31 + }, 30 32 "reverse": { 31 33 "type": "boolean", 32 34 "description": "Flag to reverse the order of the returned records." ··· 39 41 "type": "object", 40 42 "required": ["records"], 41 43 "properties": { 42 - "cursor": { "type": "string" }, 44 + "cursor": { 45 + "type": "string" 46 + }, 43 47 "records": { 44 48 "type": "array", 45 - "items": { "type": "ref", "ref": "#record" } 49 + "items": { 50 + "type": "ref", 51 + "ref": "#record" 52 + } 46 53 } 47 54 } 48 55 } ··· 52 59 "type": "object", 53 60 "required": ["uri", "cid", "value"], 54 61 "properties": { 55 - "uri": { "type": "string", "format": "at-uri" }, 56 - "cid": { "type": "string", "format": "cid" }, 57 - "value": { "type": "unknown" } 62 + "uri": { 63 + "type": "string", 64 + "format": "at-uri" 65 + }, 66 + "cid": { 67 + "type": "string", 68 + "format": "cid" 69 + }, 70 + "value": { 71 + "type": "unknown" 72 + } 58 73 } 59 74 } 60 75 }
+13 -3
lexdocs/bluesky/com/atproto/repo/putRecord.json packages/definitions/atproto/lexicons/com/atproto/repo/putRecord.json
··· 55 55 "type": "object", 56 56 "required": ["uri", "cid"], 57 57 "properties": { 58 - "uri": { "type": "string", "format": "at-uri" }, 59 - "cid": { "type": "string", "format": "cid" }, 58 + "uri": { 59 + "type": "string", 60 + "format": "at-uri" 61 + }, 62 + "cid": { 63 + "type": "string", 64 + "format": "cid" 65 + }, 60 66 "commit": { 61 67 "type": "ref", 62 68 "ref": "com.atproto.repo.defs#commitMeta" ··· 68 74 } 69 75 } 70 76 }, 71 - "errors": [{ "name": "InvalidSwap" }] 77 + "errors": [ 78 + { 79 + "name": "InvalidSwap" 80 + } 81 + ] 72 82 } 73 83 } 74 84 }
+8 -2
lexdocs/bluesky/com/atproto/repo/strongRef.json packages/definitions/atproto/lexicons/com/atproto/repo/strongRef.json
··· 7 7 "type": "object", 8 8 "required": ["uri", "cid"], 9 9 "properties": { 10 - "uri": { "type": "string", "format": "at-uri" }, 11 - "cid": { "type": "string", "format": "cid" } 10 + "uri": { 11 + "type": "string", 12 + "format": "at-uri" 13 + }, 14 + "cid": { 15 + "type": "string", 16 + "format": "cid" 17 + } 12 18 } 13 19 } 14 20 }
+3 -1
lexdocs/bluesky/com/atproto/repo/uploadBlob.json packages/definitions/atproto/lexicons/com/atproto/repo/uploadBlob.json
··· 14 14 "type": "object", 15 15 "required": ["blob"], 16 16 "properties": { 17 - "blob": { "type": "blob" } 17 + "blob": { 18 + "type": "blob" 19 + } 18 20 } 19 21 } 20 22 }
lexdocs/bluesky/com/atproto/server/activateAccount.json packages/definitions/atproto/lexicons/com/atproto/server/activateAccount.json
-38
lexdocs/bluesky/com/atproto/server/checkAccountStatus.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.server.checkAccountStatus", 4 - "defs": { 5 - "main": { 6 - "type": "query", 7 - "description": "Returns the status of an account, especially as pertaining to import or recovery. Can be called many times over the course of an account migration. Requires auth and can only be called pertaining to oneself.", 8 - "output": { 9 - "encoding": "application/json", 10 - "schema": { 11 - "type": "object", 12 - "required": [ 13 - "activated", 14 - "validDid", 15 - "repoCommit", 16 - "repoRev", 17 - "repoBlocks", 18 - "indexedRecords", 19 - "privateStateValues", 20 - "expectedBlobs", 21 - "importedBlobs" 22 - ], 23 - "properties": { 24 - "activated": { "type": "boolean" }, 25 - "validDid": { "type": "boolean" }, 26 - "repoCommit": { "type": "string", "format": "cid" }, 27 - "repoRev": { "type": "string" }, 28 - "repoBlocks": { "type": "integer" }, 29 - "indexedRecords": { "type": "integer" }, 30 - "privateStateValues": { "type": "integer" }, 31 - "expectedBlobs": { "type": "integer" }, 32 - "importedBlobs": { "type": "integer" } 33 - } 34 - } 35 - } 36 - } 37 - } 38 - }
+18 -6
lexdocs/bluesky/com/atproto/server/confirmEmail.json packages/definitions/atproto/lexicons/com/atproto/server/confirmEmail.json
··· 11 11 "type": "object", 12 12 "required": ["email", "token"], 13 13 "properties": { 14 - "email": { "type": "string" }, 15 - "token": { "type": "string" } 14 + "email": { 15 + "type": "string" 16 + }, 17 + "token": { 18 + "type": "string" 19 + } 16 20 } 17 21 } 18 22 }, 19 23 "errors": [ 20 - { "name": "AccountNotFound" }, 21 - { "name": "ExpiredToken" }, 22 - { "name": "InvalidToken" }, 23 - { "name": "InvalidEmail" } 24 + { 25 + "name": "AccountNotFound" 26 + }, 27 + { 28 + "name": "ExpiredToken" 29 + }, 30 + { 31 + "name": "InvalidToken" 32 + }, 33 + { 34 + "name": "InvalidEmail" 35 + } 24 36 ] 25 37 } 26 38 }
+43 -14
lexdocs/bluesky/com/atproto/server/createAccount.json packages/definitions/atproto/lexicons/com/atproto/server/createAccount.json
··· 11 11 "type": "object", 12 12 "required": ["handle"], 13 13 "properties": { 14 - "email": { "type": "string" }, 14 + "email": { 15 + "type": "string" 16 + }, 15 17 "handle": { 16 18 "type": "string", 17 19 "format": "handle", ··· 22 24 "format": "did", 23 25 "description": "Pre-existing atproto DID, being imported to a new account." 24 26 }, 25 - "inviteCode": { "type": "string" }, 26 - "verificationCode": { "type": "string" }, 27 - "verificationPhone": { "type": "string" }, 27 + "inviteCode": { 28 + "type": "string" 29 + }, 30 + "verificationCode": { 31 + "type": "string" 32 + }, 33 + "verificationPhone": { 34 + "type": "string" 35 + }, 28 36 "password": { 29 37 "type": "string", 30 38 "description": "Initial account password. May need to meet instance-specific password strength requirements." ··· 47 55 "description": "Account login session returned on successful account creation.", 48 56 "required": ["accessJwt", "refreshJwt", "handle", "did"], 49 57 "properties": { 50 - "accessJwt": { "type": "string" }, 51 - "refreshJwt": { "type": "string" }, 52 - "handle": { "type": "string", "format": "handle" }, 58 + "accessJwt": { 59 + "type": "string" 60 + }, 61 + "refreshJwt": { 62 + "type": "string" 63 + }, 64 + "handle": { 65 + "type": "string", 66 + "format": "handle" 67 + }, 53 68 "did": { 54 69 "type": "string", 55 70 "format": "did", ··· 63 78 } 64 79 }, 65 80 "errors": [ 66 - { "name": "InvalidHandle" }, 67 - { "name": "InvalidPassword" }, 68 - { "name": "InvalidInviteCode" }, 69 - { "name": "HandleNotAvailable" }, 70 - { "name": "UnsupportedDomain" }, 71 - { "name": "UnresolvableDid" }, 72 - { "name": "IncompatibleDidDoc" } 81 + { 82 + "name": "InvalidHandle" 83 + }, 84 + { 85 + "name": "InvalidPassword" 86 + }, 87 + { 88 + "name": "InvalidInviteCode" 89 + }, 90 + { 91 + "name": "HandleNotAvailable" 92 + }, 93 + { 94 + "name": "UnsupportedDomain" 95 + }, 96 + { 97 + "name": "UnresolvableDid" 98 + }, 99 + { 100 + "name": "IncompatibleDidDoc" 101 + } 73 102 ] 74 103 } 75 104 }
+18 -5
lexdocs/bluesky/com/atproto/server/createAppPassword.json packages/definitions/atproto/lexicons/com/atproto/server/createAppPassword.json
··· 29 29 "ref": "#appPassword" 30 30 } 31 31 }, 32 - "errors": [{ "name": "AccountTakedown" }] 32 + "errors": [ 33 + { 34 + "name": "AccountTakedown" 35 + } 36 + ] 33 37 }, 34 38 "appPassword": { 35 39 "type": "object", 36 40 "required": ["name", "password", "createdAt"], 37 41 "properties": { 38 - "name": { "type": "string" }, 39 - "password": { "type": "string" }, 40 - "createdAt": { "type": "string", "format": "datetime" }, 41 - "privileged": { "type": "boolean" } 42 + "name": { 43 + "type": "string" 44 + }, 45 + "password": { 46 + "type": "string" 47 + }, 48 + "createdAt": { 49 + "type": "string", 50 + "format": "datetime" 51 + }, 52 + "privileged": { 53 + "type": "boolean" 54 + } 42 55 } 43 56 } 44 57 }
+10 -3
lexdocs/bluesky/com/atproto/server/createInviteCode.json packages/definitions/atproto/lexicons/com/atproto/server/createInviteCode.json
··· 11 11 "type": "object", 12 12 "required": ["useCount"], 13 13 "properties": { 14 - "useCount": { "type": "integer" }, 15 - "forAccount": { "type": "string", "format": "did" } 14 + "useCount": { 15 + "type": "integer" 16 + }, 17 + "forAccount": { 18 + "type": "string", 19 + "format": "did" 20 + } 16 21 } 17 22 } 18 23 }, ··· 22 27 "type": "object", 23 28 "required": ["code"], 24 29 "properties": { 25 - "code": { "type": "string" } 30 + "code": { 31 + "type": "string" 32 + } 26 33 } 27 34 } 28 35 }
+21 -6
lexdocs/bluesky/com/atproto/server/createInviteCodes.json packages/definitions/atproto/lexicons/com/atproto/server/createInviteCodes.json
··· 11 11 "type": "object", 12 12 "required": ["codeCount", "useCount"], 13 13 "properties": { 14 - "codeCount": { "type": "integer", "default": 1 }, 15 - "useCount": { "type": "integer" }, 14 + "codeCount": { 15 + "type": "integer", 16 + "default": 1 17 + }, 18 + "useCount": { 19 + "type": "integer" 20 + }, 16 21 "forAccounts": { 17 22 "type": "array", 18 - "items": { "type": "string", "format": "did" } 23 + "items": { 24 + "type": "string", 25 + "format": "did" 26 + } 19 27 } 20 28 } 21 29 } ··· 28 36 "properties": { 29 37 "codes": { 30 38 "type": "array", 31 - "items": { "type": "ref", "ref": "#accountCodes" } 39 + "items": { 40 + "type": "ref", 41 + "ref": "#accountCodes" 42 + } 32 43 } 33 44 } 34 45 } ··· 38 49 "type": "object", 39 50 "required": ["account", "codes"], 40 51 "properties": { 41 - "account": { "type": "string" }, 52 + "account": { 53 + "type": "string" 54 + }, 42 55 "codes": { 43 56 "type": "array", 44 - "items": { "type": "string" } 57 + "items": { 58 + "type": "string" 59 + } 45 60 } 46 61 } 47 62 }
+43 -12
lexdocs/bluesky/com/atproto/server/createSession.json packages/definitions/atproto/lexicons/com/atproto/server/createSession.json
··· 15 15 "type": "string", 16 16 "description": "Handle or other identifier supported by the server for the authenticating user." 17 17 }, 18 - "password": { "type": "string" }, 19 - "authFactorToken": { "type": "string" }, 18 + "password": { 19 + "type": "string" 20 + }, 21 + "authFactorToken": { 22 + "type": "string" 23 + }, 20 24 "allowTakendown": { 21 25 "type": "boolean", 22 26 "description": "When true, instead of throwing error for takendown accounts, a valid response with a narrow scoped token will be returned" ··· 30 34 "type": "object", 31 35 "required": ["accessJwt", "refreshJwt", "handle", "did"], 32 36 "properties": { 33 - "accessJwt": { "type": "string" }, 34 - "refreshJwt": { "type": "string" }, 35 - "handle": { "type": "string", "format": "handle" }, 36 - "did": { "type": "string", "format": "did" }, 37 - "didDoc": { "type": "unknown" }, 38 - "email": { "type": "string" }, 39 - "emailConfirmed": { "type": "boolean" }, 40 - "emailAuthFactor": { "type": "boolean" }, 41 - "active": { "type": "boolean" }, 37 + "accessJwt": { 38 + "type": "string" 39 + }, 40 + "refreshJwt": { 41 + "type": "string" 42 + }, 43 + "handle": { 44 + "type": "string", 45 + "format": "handle" 46 + }, 47 + "did": { 48 + "type": "string", 49 + "format": "did" 50 + }, 51 + "didDoc": { 52 + "type": "unknown" 53 + }, 54 + "email": { 55 + "type": "string" 56 + }, 57 + "emailConfirmed": { 58 + "type": "boolean" 59 + }, 60 + "emailAuthFactor": { 61 + "type": "boolean" 62 + }, 63 + "active": { 64 + "type": "boolean" 65 + }, 42 66 "status": { 43 67 "type": "string", 44 68 "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.", ··· 47 71 } 48 72 } 49 73 }, 50 - "errors": [{ "name": "AccountTakedown" }, { "name": "AuthFactorTokenRequired" }] 74 + "errors": [ 75 + { 76 + "name": "AccountTakedown" 77 + }, 78 + { 79 + "name": "AuthFactorTokenRequired" 80 + } 81 + ] 51 82 } 52 83 } 53 84 }
lexdocs/bluesky/com/atproto/server/deactivateAccount.json packages/definitions/atproto/lexicons/com/atproto/server/deactivateAccount.json
-30
lexdocs/bluesky/com/atproto/server/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.server.defs", 4 - "defs": { 5 - "inviteCode": { 6 - "type": "object", 7 - "required": ["code", "available", "disabled", "forAccount", "createdBy", "createdAt", "uses"], 8 - "properties": { 9 - "code": { "type": "string" }, 10 - "available": { "type": "integer" }, 11 - "disabled": { "type": "boolean" }, 12 - "forAccount": { "type": "string" }, 13 - "createdBy": { "type": "string" }, 14 - "createdAt": { "type": "string", "format": "datetime" }, 15 - "uses": { 16 - "type": "array", 17 - "items": { "type": "ref", "ref": "#inviteCodeUse" } 18 - } 19 - } 20 - }, 21 - "inviteCodeUse": { 22 - "type": "object", 23 - "required": ["usedBy", "usedAt"], 24 - "properties": { 25 - "usedBy": { "type": "string", "format": "did" }, 26 - "usedAt": { "type": "string", "format": "datetime" } 27 - } 28 - } 29 - } 30 - }
+18 -4
lexdocs/bluesky/com/atproto/server/deleteAccount.json packages/definitions/atproto/lexicons/com/atproto/server/deleteAccount.json
··· 11 11 "type": "object", 12 12 "required": ["did", "password", "token"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" }, 15 - "password": { "type": "string" }, 16 - "token": { "type": "string" } 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + }, 18 + "password": { 19 + "type": "string" 20 + }, 21 + "token": { 22 + "type": "string" 23 + } 17 24 } 18 25 } 19 26 }, 20 - "errors": [{ "name": "ExpiredToken" }, { "name": "InvalidToken" }] 27 + "errors": [ 28 + { 29 + "name": "ExpiredToken" 30 + }, 31 + { 32 + "name": "InvalidToken" 33 + } 34 + ] 21 35 } 22 36 } 23 37 }
lexdocs/bluesky/com/atproto/server/deleteSession.json packages/definitions/atproto/lexicons/com/atproto/server/deleteSession.json
+14 -4
lexdocs/bluesky/com/atproto/server/describeServer.json packages/definitions/atproto/lexicons/com/atproto/server/describeServer.json
··· 22 22 "availableUserDomains": { 23 23 "type": "array", 24 24 "description": "List of domain suffixes that can be used in account handles.", 25 - "items": { "type": "string" } 25 + "items": { 26 + "type": "string" 27 + } 26 28 }, 27 29 "links": { 28 30 "type": "ref", ··· 45 47 "links": { 46 48 "type": "object", 47 49 "properties": { 48 - "privacyPolicy": { "type": "string", "format": "uri" }, 49 - "termsOfService": { "type": "string", "format": "uri" } 50 + "privacyPolicy": { 51 + "type": "string", 52 + "format": "uri" 53 + }, 54 + "termsOfService": { 55 + "type": "string", 56 + "format": "uri" 57 + } 50 58 } 51 59 }, 52 60 "contact": { 53 61 "type": "object", 54 62 "properties": { 55 - "email": { "type": "string" } 63 + "email": { 64 + "type": "string" 65 + } 56 66 } 57 67 } 58 68 }
+9 -2
lexdocs/bluesky/com/atproto/server/getAccountInviteCodes.json packages/definitions/atproto/lexicons/com/atproto/server/getAccountInviteCodes.json
··· 8 8 "parameters": { 9 9 "type": "params", 10 10 "properties": { 11 - "includeUsed": { "type": "boolean", "default": true }, 11 + "includeUsed": { 12 + "type": "boolean", 13 + "default": true 14 + }, 12 15 "createAvailable": { 13 16 "type": "boolean", 14 17 "default": true, ··· 32 35 } 33 36 } 34 37 }, 35 - "errors": [{ "name": "DuplicateCreate" }] 38 + "errors": [ 39 + { 40 + "name": "DuplicateCreate" 41 + } 42 + ] 36 43 } 37 44 } 38 45 }
lexdocs/bluesky/com/atproto/server/getServiceAuth.json packages/definitions/atproto/lexicons/com/atproto/server/getServiceAuth.json
+23 -7
lexdocs/bluesky/com/atproto/server/getSession.json packages/definitions/atproto/lexicons/com/atproto/server/getSession.json
··· 11 11 "type": "object", 12 12 "required": ["handle", "did"], 13 13 "properties": { 14 - "handle": { "type": "string", "format": "handle" }, 15 - "did": { "type": "string", "format": "did" }, 16 - "email": { "type": "string" }, 17 - "emailConfirmed": { "type": "boolean" }, 18 - "emailAuthFactor": { "type": "boolean" }, 19 - "didDoc": { "type": "unknown" }, 20 - "active": { "type": "boolean" }, 14 + "handle": { 15 + "type": "string", 16 + "format": "handle" 17 + }, 18 + "did": { 19 + "type": "string", 20 + "format": "did" 21 + }, 22 + "email": { 23 + "type": "string" 24 + }, 25 + "emailConfirmed": { 26 + "type": "boolean" 27 + }, 28 + "emailAuthFactor": { 29 + "type": "boolean" 30 + }, 31 + "didDoc": { 32 + "type": "unknown" 33 + }, 34 + "active": { 35 + "type": "boolean" 36 + }, 21 37 "status": { 22 38 "type": "string", 23 39 "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.",
+19 -5
lexdocs/bluesky/com/atproto/server/listAppPasswords.json packages/definitions/atproto/lexicons/com/atproto/server/listAppPasswords.json
··· 13 13 "properties": { 14 14 "passwords": { 15 15 "type": "array", 16 - "items": { "type": "ref", "ref": "#appPassword" } 16 + "items": { 17 + "type": "ref", 18 + "ref": "#appPassword" 19 + } 17 20 } 18 21 } 19 22 } 20 23 }, 21 - "errors": [{ "name": "AccountTakedown" }] 24 + "errors": [ 25 + { 26 + "name": "AccountTakedown" 27 + } 28 + ] 22 29 }, 23 30 "appPassword": { 24 31 "type": "object", 25 32 "required": ["name", "createdAt"], 26 33 "properties": { 27 - "name": { "type": "string" }, 28 - "createdAt": { "type": "string", "format": "datetime" }, 29 - "privileged": { "type": "boolean" } 34 + "name": { 35 + "type": "string" 36 + }, 37 + "createdAt": { 38 + "type": "string", 39 + "format": "datetime" 40 + }, 41 + "privileged": { 42 + "type": "boolean" 43 + } 30 44 } 31 45 } 32 46 }
-31
lexdocs/bluesky/com/atproto/server/refreshSession.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.server.refreshSession", 4 - "defs": { 5 - "main": { 6 - "type": "procedure", 7 - "description": "Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').", 8 - "output": { 9 - "encoding": "application/json", 10 - "schema": { 11 - "type": "object", 12 - "required": ["accessJwt", "refreshJwt", "handle", "did"], 13 - "properties": { 14 - "accessJwt": { "type": "string" }, 15 - "refreshJwt": { "type": "string" }, 16 - "handle": { "type": "string", "format": "handle" }, 17 - "did": { "type": "string", "format": "did" }, 18 - "didDoc": { "type": "unknown" }, 19 - "active": { "type": "boolean" }, 20 - "status": { 21 - "type": "string", 22 - "description": "Hosting status of the account. If not specified, then assume 'active'.", 23 - "knownValues": ["takendown", "suspended", "deactivated"] 24 - } 25 - } 26 - } 27 - }, 28 - "errors": [{ "name": "AccountTakedown" }] 29 - } 30 - } 31 - }
lexdocs/bluesky/com/atproto/server/requestAccountDelete.json packages/definitions/atproto/lexicons/com/atproto/server/requestAccountDelete.json
lexdocs/bluesky/com/atproto/server/requestEmailConfirmation.json packages/definitions/atproto/lexicons/com/atproto/server/requestEmailConfirmation.json
+3 -1
lexdocs/bluesky/com/atproto/server/requestEmailUpdate.json packages/definitions/atproto/lexicons/com/atproto/server/requestEmailUpdate.json
··· 11 11 "type": "object", 12 12 "required": ["tokenRequired"], 13 13 "properties": { 14 - "tokenRequired": { "type": "boolean" } 14 + "tokenRequired": { 15 + "type": "boolean" 16 + } 15 17 } 16 18 } 17 19 }
+3 -1
lexdocs/bluesky/com/atproto/server/requestPasswordReset.json packages/definitions/atproto/lexicons/com/atproto/server/requestPasswordReset.json
··· 11 11 "type": "object", 12 12 "required": ["email"], 13 13 "properties": { 14 - "email": { "type": "string" } 14 + "email": { 15 + "type": "string" 16 + } 15 17 } 16 18 } 17 19 }
lexdocs/bluesky/com/atproto/server/reserveSigningKey.json packages/definitions/atproto/lexicons/com/atproto/server/reserveSigningKey.json
+14 -3
lexdocs/bluesky/com/atproto/server/resetPassword.json packages/definitions/atproto/lexicons/com/atproto/server/resetPassword.json
··· 11 11 "type": "object", 12 12 "required": ["token", "password"], 13 13 "properties": { 14 - "token": { "type": "string" }, 15 - "password": { "type": "string" } 14 + "token": { 15 + "type": "string" 16 + }, 17 + "password": { 18 + "type": "string" 19 + } 16 20 } 17 21 } 18 22 }, 19 - "errors": [{ "name": "ExpiredToken" }, { "name": "InvalidToken" }] 23 + "errors": [ 24 + { 25 + "name": "ExpiredToken" 26 + }, 27 + { 28 + "name": "InvalidToken" 29 + } 30 + ] 20 31 } 21 32 } 22 33 }
+3 -1
lexdocs/bluesky/com/atproto/server/revokeAppPassword.json packages/definitions/atproto/lexicons/com/atproto/server/revokeAppPassword.json
··· 11 11 "type": "object", 12 12 "required": ["name"], 13 13 "properties": { 14 - "name": { "type": "string" } 14 + "name": { 15 + "type": "string" 16 + } 15 17 } 16 18 } 17 19 }
+17 -3
lexdocs/bluesky/com/atproto/server/updateEmail.json packages/definitions/atproto/lexicons/com/atproto/server/updateEmail.json
··· 11 11 "type": "object", 12 12 "required": ["email"], 13 13 "properties": { 14 - "email": { "type": "string" }, 15 - "emailAuthFactor": { "type": "boolean" }, 14 + "email": { 15 + "type": "string" 16 + }, 17 + "emailAuthFactor": { 18 + "type": "boolean" 19 + }, 16 20 "token": { 17 21 "type": "string", 18 22 "description": "Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed." ··· 20 24 } 21 25 } 22 26 }, 23 - "errors": [{ "name": "ExpiredToken" }, { "name": "InvalidToken" }, { "name": "TokenRequired" }] 27 + "errors": [ 28 + { 29 + "name": "ExpiredToken" 30 + }, 31 + { 32 + "name": "InvalidToken" 33 + }, 34 + { 35 + "name": "TokenRequired" 36 + } 37 + ] 24 38 } 25 39 } 26 40 }
lexdocs/bluesky/com/atproto/sync/defs.json packages/definitions/atproto/lexicons/com/atproto/sync/defs.json
+15 -5
lexdocs/bluesky/com/atproto/sync/getBlob.json packages/definitions/atproto/lexicons/com/atproto/sync/getBlob.json
··· 25 25 "encoding": "*/*" 26 26 }, 27 27 "errors": [ 28 - { "name": "BlobNotFound" }, 29 - { "name": "RepoNotFound" }, 30 - { "name": "RepoTakendown" }, 31 - { "name": "RepoSuspended" }, 32 - { "name": "RepoDeactivated" } 28 + { 29 + "name": "BlobNotFound" 30 + }, 31 + { 32 + "name": "RepoNotFound" 33 + }, 34 + { 35 + "name": "RepoTakendown" 36 + }, 37 + { 38 + "name": "RepoSuspended" 39 + }, 40 + { 41 + "name": "RepoDeactivated" 42 + } 33 43 ] 34 44 } 35 45 }
+19 -6
lexdocs/bluesky/com/atproto/sync/getBlocks.json packages/definitions/atproto/lexicons/com/atproto/sync/getBlocks.json
··· 16 16 }, 17 17 "cids": { 18 18 "type": "array", 19 - "items": { "type": "string", "format": "cid" } 19 + "items": { 20 + "type": "string", 21 + "format": "cid" 22 + } 20 23 } 21 24 } 22 25 }, ··· 24 27 "encoding": "application/vnd.ipld.car" 25 28 }, 26 29 "errors": [ 27 - { "name": "BlockNotFound" }, 28 - { "name": "RepoNotFound" }, 29 - { "name": "RepoTakendown" }, 30 - { "name": "RepoSuspended" }, 31 - { "name": "RepoDeactivated" } 30 + { 31 + "name": "BlockNotFound" 32 + }, 33 + { 34 + "name": "RepoNotFound" 35 + }, 36 + { 37 + "name": "RepoTakendown" 38 + }, 39 + { 40 + "name": "RepoSuspended" 41 + }, 42 + { 43 + "name": "RepoDeactivated" 44 + } 32 45 ] 33 46 } 34 47 }
lexdocs/bluesky/com/atproto/sync/getCheckout.json packages/definitions/atproto/lexicons/com/atproto/sync/getCheckout.json
+9 -2
lexdocs/bluesky/com/atproto/sync/getHead.json packages/definitions/atproto/lexicons/com/atproto/sync/getHead.json
··· 22 22 "type": "object", 23 23 "required": ["root"], 24 24 "properties": { 25 - "root": { "type": "string", "format": "cid" } 25 + "root": { 26 + "type": "string", 27 + "format": "cid" 28 + } 26 29 } 27 30 } 28 31 }, 29 - "errors": [{ "name": "HeadNotFound" }] 32 + "errors": [ 33 + { 34 + "name": "HeadNotFound" 35 + } 36 + ] 30 37 } 31 38 } 32 39 }
+8 -2
lexdocs/bluesky/com/atproto/sync/getHostStatus.json packages/definitions/atproto/lexicons/com/atproto/sync/getHostStatus.json
··· 21 21 "type": "object", 22 22 "required": ["hostname"], 23 23 "properties": { 24 - "hostname": { "type": "string" }, 24 + "hostname": { 25 + "type": "string" 26 + }, 25 27 "seq": { 26 28 "type": "integer", 27 29 "description": "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor)." ··· 37 39 } 38 40 } 39 41 }, 40 - "errors": [{ "name": "HostNotFound" }] 42 + "errors": [ 43 + { 44 + "name": "HostNotFound" 45 + } 46 + ] 41 47 } 42 48 } 43 49 }
+20 -6
lexdocs/bluesky/com/atproto/sync/getLatestCommit.json packages/definitions/atproto/lexicons/com/atproto/sync/getLatestCommit.json
··· 22 22 "type": "object", 23 23 "required": ["cid", "rev"], 24 24 "properties": { 25 - "cid": { "type": "string", "format": "cid" }, 26 - "rev": { "type": "string", "format": "tid" } 25 + "cid": { 26 + "type": "string", 27 + "format": "cid" 28 + }, 29 + "rev": { 30 + "type": "string", 31 + "format": "tid" 32 + } 27 33 } 28 34 } 29 35 }, 30 36 "errors": [ 31 - { "name": "RepoNotFound" }, 32 - { "name": "RepoTakendown" }, 33 - { "name": "RepoSuspended" }, 34 - { "name": "RepoDeactivated" } 37 + { 38 + "name": "RepoNotFound" 39 + }, 40 + { 41 + "name": "RepoTakendown" 42 + }, 43 + { 44 + "name": "RepoSuspended" 45 + }, 46 + { 47 + "name": "RepoDeactivated" 48 + } 35 49 ] 36 50 } 37 51 }
+19 -6
lexdocs/bluesky/com/atproto/sync/getRecord.json packages/definitions/atproto/lexicons/com/atproto/sync/getRecord.json
··· 14 14 "format": "did", 15 15 "description": "The DID of the repo." 16 16 }, 17 - "collection": { "type": "string", "format": "nsid" }, 17 + "collection": { 18 + "type": "string", 19 + "format": "nsid" 20 + }, 18 21 "rkey": { 19 22 "type": "string", 20 23 "description": "Record Key", ··· 26 29 "encoding": "application/vnd.ipld.car" 27 30 }, 28 31 "errors": [ 29 - { "name": "RecordNotFound" }, 30 - { "name": "RepoNotFound" }, 31 - { "name": "RepoTakendown" }, 32 - { "name": "RepoSuspended" }, 33 - { "name": "RepoDeactivated" } 32 + { 33 + "name": "RecordNotFound" 34 + }, 35 + { 36 + "name": "RepoNotFound" 37 + }, 38 + { 39 + "name": "RepoTakendown" 40 + }, 41 + { 42 + "name": "RepoSuspended" 43 + }, 44 + { 45 + "name": "RepoDeactivated" 46 + } 34 47 ] 35 48 } 36 49 }
+12 -4
lexdocs/bluesky/com/atproto/sync/getRepo.json packages/definitions/atproto/lexicons/com/atproto/sync/getRepo.json
··· 25 25 "encoding": "application/vnd.ipld.car" 26 26 }, 27 27 "errors": [ 28 - { "name": "RepoNotFound" }, 29 - { "name": "RepoTakendown" }, 30 - { "name": "RepoSuspended" }, 31 - { "name": "RepoDeactivated" } 28 + { 29 + "name": "RepoNotFound" 30 + }, 31 + { 32 + "name": "RepoTakendown" 33 + }, 34 + { 35 + "name": "RepoSuspended" 36 + }, 37 + { 38 + "name": "RepoDeactivated" 39 + } 32 40 ] 33 41 } 34 42 }
+12 -3
lexdocs/bluesky/com/atproto/sync/getRepoStatus.json packages/definitions/atproto/lexicons/com/atproto/sync/getRepoStatus.json
··· 22 22 "type": "object", 23 23 "required": ["did", "active"], 24 24 "properties": { 25 - "did": { "type": "string", "format": "did" }, 26 - "active": { "type": "boolean" }, 25 + "did": { 26 + "type": "string", 27 + "format": "did" 28 + }, 29 + "active": { 30 + "type": "boolean" 31 + }, 27 32 "status": { 28 33 "type": "string", 29 34 "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.", ··· 44 49 } 45 50 } 46 51 }, 47 - "errors": [{ "name": "RepoNotFound" }] 52 + "errors": [ 53 + { 54 + "name": "RepoNotFound" 55 + } 56 + ] 48 57 } 49 58 } 50 59 }
+22 -7
lexdocs/bluesky/com/atproto/sync/listBlobs.json packages/definitions/atproto/lexicons/com/atproto/sync/listBlobs.json
··· 25 25 "maximum": 1000, 26 26 "default": 500 27 27 }, 28 - "cursor": { "type": "string" } 28 + "cursor": { 29 + "type": "string" 30 + } 29 31 } 30 32 }, 31 33 "output": { ··· 34 36 "type": "object", 35 37 "required": ["cids"], 36 38 "properties": { 37 - "cursor": { "type": "string" }, 39 + "cursor": { 40 + "type": "string" 41 + }, 38 42 "cids": { 39 43 "type": "array", 40 - "items": { "type": "string", "format": "cid" } 44 + "items": { 45 + "type": "string", 46 + "format": "cid" 47 + } 41 48 } 42 49 } 43 50 } 44 51 }, 45 52 "errors": [ 46 - { "name": "RepoNotFound" }, 47 - { "name": "RepoTakendown" }, 48 - { "name": "RepoSuspended" }, 49 - { "name": "RepoDeactivated" } 53 + { 54 + "name": "RepoNotFound" 55 + }, 56 + { 57 + "name": "RepoTakendown" 58 + }, 59 + { 60 + "name": "RepoSuspended" 61 + }, 62 + { 63 + "name": "RepoDeactivated" 64 + } 50 65 ] 51 66 } 52 67 }
+13 -4
lexdocs/bluesky/com/atproto/sync/listHosts.json packages/definitions/atproto/lexicons/com/atproto/sync/listHosts.json
··· 14 14 "maximum": 1000, 15 15 "default": 200 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["hosts"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "hosts": { 28 32 "type": "array", 29 - "items": { "type": "ref", "ref": "#host" }, 33 + "items": { 34 + "type": "ref", 35 + "ref": "#host" 36 + }, 30 37 "description": "Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first." 31 38 } 32 39 } ··· 45 52 "type": "integer", 46 53 "description": "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor)." 47 54 }, 48 - "accountCount": { "type": "integer" }, 55 + "accountCount": { 56 + "type": "integer" 57 + }, 49 58 "status": { 50 59 "type": "ref", 51 60 "ref": "com.atproto.sync.defs#hostStatus"
+21 -6
lexdocs/bluesky/com/atproto/sync/listRepos.json packages/definitions/atproto/lexicons/com/atproto/sync/listRepos.json
··· 14 14 "maximum": 1000, 15 15 "default": 500 16 16 }, 17 - "cursor": { "type": "string" } 17 + "cursor": { 18 + "type": "string" 19 + } 18 20 } 19 21 }, 20 22 "output": { ··· 23 25 "type": "object", 24 26 "required": ["repos"], 25 27 "properties": { 26 - "cursor": { "type": "string" }, 28 + "cursor": { 29 + "type": "string" 30 + }, 27 31 "repos": { 28 32 "type": "array", 29 - "items": { "type": "ref", "ref": "#repo" } 33 + "items": { 34 + "type": "ref", 35 + "ref": "#repo" 36 + } 30 37 } 31 38 } 32 39 } ··· 36 43 "type": "object", 37 44 "required": ["did", "head", "rev"], 38 45 "properties": { 39 - "did": { "type": "string", "format": "did" }, 46 + "did": { 47 + "type": "string", 48 + "format": "did" 49 + }, 40 50 "head": { 41 51 "type": "string", 42 52 "format": "cid", 43 53 "description": "Current repo commit CID" 44 54 }, 45 - "rev": { "type": "string", "format": "tid" }, 46 - "active": { "type": "boolean" }, 55 + "rev": { 56 + "type": "string", 57 + "format": "tid" 58 + }, 59 + "active": { 60 + "type": "boolean" 61 + }, 47 62 "status": { 48 63 "type": "string", 49 64 "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.",
+18 -5
lexdocs/bluesky/com/atproto/sync/listReposByCollection.json packages/definitions/atproto/lexicons/com/atproto/sync/listReposByCollection.json
··· 9 9 "type": "params", 10 10 "required": ["collection"], 11 11 "properties": { 12 - "collection": { "type": "string", "format": "nsid" }, 12 + "collection": { 13 + "type": "string", 14 + "format": "nsid" 15 + }, 13 16 "limit": { 14 17 "type": "integer", 15 18 "description": "Maximum size of response set. Recommend setting a large maximum (1000+) when enumerating large DID lists.", ··· 17 20 "maximum": 2000, 18 21 "default": 500 19 22 }, 20 - "cursor": { "type": "string" } 23 + "cursor": { 24 + "type": "string" 25 + } 21 26 } 22 27 }, 23 28 "output": { ··· 26 31 "type": "object", 27 32 "required": ["repos"], 28 33 "properties": { 29 - "cursor": { "type": "string" }, 34 + "cursor": { 35 + "type": "string" 36 + }, 30 37 "repos": { 31 38 "type": "array", 32 - "items": { "type": "ref", "ref": "#repo" } 39 + "items": { 40 + "type": "ref", 41 + "ref": "#repo" 42 + } 33 43 } 34 44 } 35 45 } ··· 39 49 "type": "object", 40 50 "required": ["did"], 41 51 "properties": { 42 - "did": { "type": "string", "format": "did" } 52 + "did": { 53 + "type": "string", 54 + "format": "did" 55 + } 43 56 } 44 57 } 45 58 }
lexdocs/bluesky/com/atproto/sync/notifyOfUpdate.json packages/definitions/atproto/lexicons/com/atproto/sync/notifyOfUpdate.json
+5 -1
lexdocs/bluesky/com/atproto/sync/requestCrawl.json packages/definitions/atproto/lexicons/com/atproto/sync/requestCrawl.json
··· 18 18 } 19 19 } 20 20 }, 21 - "errors": [{ "name": "HostBanned" }] 21 + "errors": [ 22 + { 23 + "name": "HostBanned" 24 + } 25 + ] 22 26 } 23 27 } 24 28 }
+32 -9
lexdocs/bluesky/com/atproto/sync/subscribeRepos.json packages/definitions/atproto/lexicons/com/atproto/sync/subscribeRepos.json
··· 21 21 } 22 22 }, 23 23 "errors": [ 24 - { "name": "FutureCursor" }, 24 + { 25 + "name": "FutureCursor" 26 + }, 25 27 { 26 28 "name": "ConsumerTooSlow", 27 29 "description": "If the consumer of the stream can not keep up with events, and a backlog gets too large, the server will drop the connection." ··· 50 52 "type": "integer", 51 53 "description": "The stream sequence number of this message." 52 54 }, 53 - "rebase": { "type": "boolean", "description": "DEPRECATED -- unused" }, 55 + "rebase": { 56 + "type": "boolean", 57 + "description": "DEPRECATED -- unused" 58 + }, 54 59 "tooBig": { 55 60 "type": "boolean", 56 61 "description": "DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data." ··· 141 146 "description": "Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache.", 142 147 "required": ["seq", "did", "time"], 143 148 "properties": { 144 - "seq": { "type": "integer" }, 145 - "did": { "type": "string", "format": "did" }, 146 - "time": { "type": "string", "format": "datetime" }, 149 + "seq": { 150 + "type": "integer" 151 + }, 152 + "did": { 153 + "type": "string", 154 + "format": "did" 155 + }, 156 + "time": { 157 + "type": "string", 158 + "format": "datetime" 159 + }, 147 160 "handle": { 148 161 "type": "string", 149 162 "format": "handle", ··· 156 169 "description": "Represents a change to an account's status on a host (eg, PDS or Relay). The semantics of this event are that the status is at the host which emitted the event, not necessarily that at the currently active PDS. Eg, a Relay takedown would emit a takedown with active=false, even if the PDS is still active.", 157 170 "required": ["seq", "did", "time", "active"], 158 171 "properties": { 159 - "seq": { "type": "integer" }, 160 - "did": { "type": "string", "format": "did" }, 161 - "time": { "type": "string", "format": "datetime" }, 172 + "seq": { 173 + "type": "integer" 174 + }, 175 + "did": { 176 + "type": "string", 177 + "format": "did" 178 + }, 179 + "time": { 180 + "type": "string", 181 + "format": "datetime" 182 + }, 162 183 "active": { 163 184 "type": "boolean", 164 185 "description": "Indicates that the account has a repository which can be fetched from the host that emitted this event." ··· 193 214 "type": "string", 194 215 "knownValues": ["create", "update", "delete"] 195 216 }, 196 - "path": { "type": "string" }, 217 + "path": { 218 + "type": "string" 219 + }, 197 220 "cid": { 198 221 "type": "cid-link", 199 222 "description": "For creates and updates, the new record CID. For deletions, null."
+3 -1
lexdocs/bluesky/com/atproto/temp/addReservedHandle.json packages/definitions/atproto/lexicons/com/atproto/temp/addReservedHandle.json
··· 11 11 "type": "object", 12 12 "required": ["handle"], 13 13 "properties": { 14 - "handle": { "type": "string" } 14 + "handle": { 15 + "type": "string" 16 + } 15 17 } 16 18 } 17 19 },
lexdocs/bluesky/com/atproto/temp/checkHandleAvailability.json packages/definitions/atproto/lexicons/com/atproto/temp/checkHandleAvailability.json
+9 -3
lexdocs/bluesky/com/atproto/temp/checkSignupQueue.json packages/definitions/atproto/lexicons/com/atproto/temp/checkSignupQueue.json
··· 11 11 "type": "object", 12 12 "required": ["activated"], 13 13 "properties": { 14 - "activated": { "type": "boolean" }, 15 - "placeInQueue": { "type": "integer" }, 16 - "estimatedTimeMs": { "type": "integer" } 14 + "activated": { 15 + "type": "boolean" 16 + }, 17 + "placeInQueue": { 18 + "type": "integer" 19 + }, 20 + "estimatedTimeMs": { 21 + "type": "integer" 22 + } 17 23 } 18 24 } 19 25 }
lexdocs/bluesky/com/atproto/temp/dereferenceScope.json packages/definitions/atproto/lexicons/com/atproto/temp/dereferenceScope.json
+7 -2
lexdocs/bluesky/com/atproto/temp/fetchLabels.json packages/definitions/atproto/lexicons/com/atproto/temp/fetchLabels.json
··· 8 8 "parameters": { 9 9 "type": "params", 10 10 "properties": { 11 - "since": { "type": "integer" }, 11 + "since": { 12 + "type": "integer" 13 + }, 12 14 "limit": { 13 15 "type": "integer", 14 16 "minimum": 1, ··· 25 27 "properties": { 26 28 "labels": { 27 29 "type": "array", 28 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 30 + "items": { 31 + "type": "ref", 32 + "ref": "com.atproto.label.defs#label" 33 + } 29 34 } 30 35 } 31 36 }
+3 -1
lexdocs/bluesky/com/atproto/temp/requestPhoneVerification.json packages/definitions/atproto/lexicons/com/atproto/temp/requestPhoneVerification.json
··· 11 11 "type": "object", 12 12 "required": ["phoneNumber"], 13 13 "properties": { 14 - "phoneNumber": { "type": "string" } 14 + "phoneNumber": { 15 + "type": "string" 16 + } 15 17 } 16 18 } 17 19 }
lexdocs/bluesky/com/atproto/temp/revokeAccountCredentials.json packages/definitions/atproto/lexicons/com/atproto/temp/revokeAccountCredentials.json
+5 -1
lexdocs/bluesky/tools/ozone/communication/createTemplate.json packages/definitions/ozone/lexicons/tools/ozone/communication/createTemplate.json
··· 43 43 "ref": "tools.ozone.communication.defs#templateView" 44 44 } 45 45 }, 46 - "errors": [{ "name": "DuplicateTemplateName" }] 46 + "errors": [ 47 + { 48 + "name": "DuplicateTemplateName" 49 + } 50 + ] 47 51 } 48 52 } 49 53 }
+18 -5
lexdocs/bluesky/tools/ozone/communication/defs.json packages/definitions/ozone/lexicons/tools/ozone/communication/defs.json
··· 6 6 "type": "object", 7 7 "required": ["id", "name", "contentMarkdown", "disabled", "lastUpdatedBy", "createdAt", "updatedAt"], 8 8 "properties": { 9 - "id": { "type": "string" }, 10 - "name": { "type": "string", "description": "Name of the template." }, 9 + "id": { 10 + "type": "string" 11 + }, 12 + "name": { 13 + "type": "string", 14 + "description": "Name of the template." 15 + }, 11 16 "subject": { 12 17 "type": "string", 13 18 "description": "Content of the template, can contain markdown and variable placeholders." ··· 16 21 "type": "string", 17 22 "description": "Subject of the message, used in emails." 18 23 }, 19 - "disabled": { "type": "boolean" }, 24 + "disabled": { 25 + "type": "boolean" 26 + }, 20 27 "lang": { 21 28 "type": "string", 22 29 "format": "language", ··· 27 34 "format": "did", 28 35 "description": "DID of the user who last updated the template." 29 36 }, 30 - "createdAt": { "type": "string", "format": "datetime" }, 31 - "updatedAt": { "type": "string", "format": "datetime" } 37 + "createdAt": { 38 + "type": "string", 39 + "format": "datetime" 40 + }, 41 + "updatedAt": { 42 + "type": "string", 43 + "format": "datetime" 44 + } 32 45 } 33 46 } 34 47 }
+3 -1
lexdocs/bluesky/tools/ozone/communication/deleteTemplate.json packages/definitions/ozone/lexicons/tools/ozone/communication/deleteTemplate.json
··· 11 11 "type": "object", 12 12 "required": ["id"], 13 13 "properties": { 14 - "id": { "type": "string" } 14 + "id": { 15 + "type": "string" 16 + } 15 17 } 16 18 } 17 19 }
lexdocs/bluesky/tools/ozone/communication/listTemplates.json packages/definitions/ozone/lexicons/tools/ozone/communication/listTemplates.json
+5 -1
lexdocs/bluesky/tools/ozone/communication/updateTemplate.json packages/definitions/ozone/lexicons/tools/ozone/communication/updateTemplate.json
··· 50 50 "ref": "tools.ozone.communication.defs#templateView" 51 51 } 52 52 }, 53 - "errors": [{ "name": "DuplicateTemplateName" }] 53 + "errors": [ 54 + { 55 + "name": "DuplicateTemplateName" 56 + } 57 + ] 54 58 } 55 59 } 56 60 }
+34 -10
lexdocs/bluesky/tools/ozone/hosting/getAccountHistory.json packages/definitions/ozone/lexicons/tools/ozone/hosting/getAccountHistory.json
··· 9 9 "type": "params", 10 10 "required": ["did"], 11 11 "properties": { 12 - "did": { "type": "string", "format": "did" }, 12 + "did": { 13 + "type": "string", 14 + "format": "did" 15 + }, 13 16 "events": { 14 17 "type": "array", 15 18 "items": { ··· 23 26 ] 24 27 } 25 28 }, 26 - "cursor": { "type": "string" }, 29 + "cursor": { 30 + "type": "string" 31 + }, 27 32 "limit": { 28 33 "type": "integer", 29 34 "minimum": 1, ··· 38 43 "type": "object", 39 44 "required": ["events"], 40 45 "properties": { 41 - "cursor": { "type": "string" }, 46 + "cursor": { 47 + "type": "string" 48 + }, 42 49 "events": { 43 50 "type": "array", 44 51 "items": { ··· 64 71 "#handleUpdated" 65 72 ] 66 73 }, 67 - "createdBy": { "type": "string" }, 68 - "createdAt": { "type": "string", "format": "datetime" } 74 + "createdBy": { 75 + "type": "string" 76 + }, 77 + "createdAt": { 78 + "type": "string", 79 + "format": "datetime" 80 + } 69 81 } 70 82 }, 71 83 "accountCreated": { 72 84 "type": "object", 73 85 "required": [], 74 86 "properties": { 75 - "email": { "type": "string" }, 76 - "handle": { "type": "string", "format": "handle" } 87 + "email": { 88 + "type": "string" 89 + }, 90 + "handle": { 91 + "type": "string", 92 + "format": "handle" 93 + } 77 94 } 78 95 }, 79 96 "emailUpdated": { 80 97 "type": "object", 81 98 "required": ["email"], 82 99 "properties": { 83 - "email": { "type": "string" } 100 + "email": { 101 + "type": "string" 102 + } 84 103 } 85 104 }, 86 105 "emailConfirmed": { 87 106 "type": "object", 88 107 "required": ["email"], 89 108 "properties": { 90 - "email": { "type": "string" } 109 + "email": { 110 + "type": "string" 111 + } 91 112 } 92 113 }, 93 114 "passwordUpdated": { ··· 99 120 "type": "object", 100 121 "required": ["handle"], 101 122 "properties": { 102 - "handle": { "type": "string", "format": "handle" } 123 + "handle": { 124 + "type": "string", 125 + "format": "handle" 126 + } 103 127 } 104 128 } 105 129 }
+18 -5
lexdocs/bluesky/tools/ozone/moderation/cancelScheduledActions.json packages/definitions/ozone/lexicons/tools/ozone/moderation/cancelScheduledActions.json
··· 41 41 "properties": { 42 42 "succeeded": { 43 43 "type": "array", 44 - "items": { "type": "string", "format": "did" }, 44 + "items": { 45 + "type": "string", 46 + "format": "did" 47 + }, 45 48 "description": "DIDs for which all pending scheduled actions were successfully cancelled" 46 49 }, 47 50 "failed": { 48 51 "type": "array", 49 - "items": { "type": "ref", "ref": "#failedCancellation" }, 52 + "items": { 53 + "type": "ref", 54 + "ref": "#failedCancellation" 55 + }, 50 56 "description": "DIDs for which cancellation failed with error details" 51 57 } 52 58 } ··· 55 61 "type": "object", 56 62 "required": ["did", "error"], 57 63 "properties": { 58 - "did": { "type": "string", "format": "did" }, 59 - "error": { "type": "string" }, 60 - "errorCode": { "type": "string" } 64 + "did": { 65 + "type": "string", 66 + "format": "did" 67 + }, 68 + "error": { 69 + "type": "string" 70 + }, 71 + "errorCode": { 72 + "type": "string" 73 + } 61 74 } 62 75 } 63 76 }
+334 -89
lexdocs/bluesky/tools/ozone/moderation/defs.json packages/definitions/ozone/lexicons/tools/ozone/moderation/defs.json
··· 6 6 "type": "object", 7 7 "required": ["id", "event", "subject", "subjectBlobCids", "createdBy", "createdAt"], 8 8 "properties": { 9 - "id": { "type": "integer" }, 9 + "id": { 10 + "type": "integer" 11 + }, 10 12 "event": { 11 13 "type": "union", 12 14 "refs": [ ··· 44 46 "chat.bsky.convo.defs#messageRef" 45 47 ] 46 48 }, 47 - "subjectBlobCids": { "type": "array", "items": { "type": "string" } }, 48 - "createdBy": { "type": "string", "format": "did" }, 49 - "createdAt": { "type": "string", "format": "datetime" }, 50 - "creatorHandle": { "type": "string" }, 51 - "subjectHandle": { "type": "string" }, 52 - "modTool": { "type": "ref", "ref": "#modTool" } 49 + "subjectBlobCids": { 50 + "type": "array", 51 + "items": { 52 + "type": "string" 53 + } 54 + }, 55 + "createdBy": { 56 + "type": "string", 57 + "format": "did" 58 + }, 59 + "createdAt": { 60 + "type": "string", 61 + "format": "datetime" 62 + }, 63 + "creatorHandle": { 64 + "type": "string" 65 + }, 66 + "subjectHandle": { 67 + "type": "string" 68 + }, 69 + "modTool": { 70 + "type": "ref", 71 + "ref": "#modTool" 72 + } 53 73 } 54 74 }, 55 75 "modEventViewDetail": { 56 76 "type": "object", 57 77 "required": ["id", "event", "subject", "subjectBlobs", "createdBy", "createdAt"], 58 78 "properties": { 59 - "id": { "type": "integer" }, 79 + "id": { 80 + "type": "integer" 81 + }, 60 82 "event": { 61 83 "type": "union", 62 84 "refs": [ ··· 92 114 }, 93 115 "subjectBlobs": { 94 116 "type": "array", 95 - "items": { "type": "ref", "ref": "#blobView" } 117 + "items": { 118 + "type": "ref", 119 + "ref": "#blobView" 120 + } 121 + }, 122 + "createdBy": { 123 + "type": "string", 124 + "format": "did" 96 125 }, 97 - "createdBy": { "type": "string", "format": "did" }, 98 - "createdAt": { "type": "string", "format": "datetime" }, 99 - "modTool": { "type": "ref", "ref": "#modTool" } 126 + "createdAt": { 127 + "type": "string", 128 + "format": "datetime" 129 + }, 130 + "modTool": { 131 + "type": "ref", 132 + "ref": "#modTool" 133 + } 100 134 } 101 135 }, 102 136 "subjectStatusView": { 103 137 "type": "object", 104 138 "required": ["id", "subject", "createdAt", "updatedAt", "reviewState"], 105 139 "properties": { 106 - "id": { "type": "integer" }, 140 + "id": { 141 + "type": "integer" 142 + }, 107 143 "subject": { 108 144 "type": "union", 109 145 "refs": [ ··· 118 154 }, 119 155 "subjectBlobCids": { 120 156 "type": "array", 121 - "items": { "type": "string", "format": "cid" } 157 + "items": { 158 + "type": "string", 159 + "format": "cid" 160 + } 161 + }, 162 + "subjectRepoHandle": { 163 + "type": "string" 122 164 }, 123 - "subjectRepoHandle": { "type": "string" }, 124 165 "updatedAt": { 125 166 "type": "string", 126 167 "format": "datetime", ··· 183 224 }, 184 225 "tags": { 185 226 "type": "array", 186 - "items": { "type": "string" } 227 + "items": { 228 + "type": "string" 229 + } 187 230 }, 188 231 "accountStats": { 189 232 "description": "Statistics related to the account subject", ··· 368 411 "policies": { 369 412 "type": "array", 370 413 "maxLength": 5, 371 - "items": { "type": "string" }, 414 + "items": { 415 + "type": "string" 416 + }, 372 417 "description": "Names/Keywords of the policies that drove the decision." 373 418 }, 374 419 "severityLevel": { 375 420 "type": "string", 376 421 "description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.)." 377 422 }, 423 + "targetServices": { 424 + "type": "array", 425 + "items": { 426 + "type": "string", 427 + "knownValues": ["appview", "pds"] 428 + }, 429 + "description": "List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services." 430 + }, 378 431 "strikeCount": { 379 432 "type": "integer", 380 433 "description": "Number of strikes to assign to the user for this violation." ··· 397 450 "policies": { 398 451 "type": "array", 399 452 "maxLength": 5, 400 - "items": { "type": "string" }, 453 + "items": { 454 + "type": "string" 455 + }, 401 456 "description": "Names/Keywords of the policy infraction for which takedown is being reversed." 402 457 }, 403 458 "severityLevel": { ··· 461 516 }, 462 517 "createLabelVals": { 463 518 "type": "array", 464 - "items": { "type": "string" } 519 + "items": { 520 + "type": "string" 521 + } 465 522 }, 466 523 "negateLabelVals": { 467 524 "type": "array", 468 - "items": { "type": "string" } 525 + "items": { 526 + "type": "string" 527 + } 469 528 }, 470 529 "durationInHours": { 471 530 "type": "integer", ··· 555 614 "modEventAcknowledge": { 556 615 "type": "object", 557 616 "properties": { 558 - "comment": { "type": "string" }, 617 + "comment": { 618 + "type": "string" 619 + }, 559 620 "acknowledgeAccountSubjects": { 560 621 "type": "boolean", 561 622 "description": "If true, all other reports on content authored by this account will be resolved (acknowledged)." ··· 565 626 "modEventEscalate": { 566 627 "type": "object", 567 628 "properties": { 568 - "comment": { "type": "string" } 629 + "comment": { 630 + "type": "string" 631 + } 569 632 } 570 633 }, 571 634 "modEventMute": { ··· 573 636 "description": "Mute incoming reports on a subject", 574 637 "required": ["durationInHours"], 575 638 "properties": { 576 - "comment": { "type": "string" }, 639 + "comment": { 640 + "type": "string" 641 + }, 577 642 "durationInHours": { 578 643 "type": "integer", 579 644 "description": "Indicates how long the subject should remain muted." ··· 594 659 "type": "object", 595 660 "description": "Mute incoming reports from an account", 596 661 "properties": { 597 - "comment": { "type": "string" }, 662 + "comment": { 663 + "type": "string" 664 + }, 598 665 "durationInHours": { 599 666 "type": "integer", 600 667 "description": "Indicates how long the account should remain muted. Falsy value here means a permanent mute." ··· 631 698 "policies": { 632 699 "type": "array", 633 700 "maxLength": 5, 634 - "items": { "type": "string" }, 701 + "items": { 702 + "type": "string" 703 + }, 635 704 "description": "Names/Keywords of the policies that necessitated the email." 636 705 }, 637 706 "severityLevel": { ··· 646 715 "type": "string", 647 716 "format": "datetime", 648 717 "description": "When the strike should expire. If not provided, the strike never expires." 718 + }, 719 + "isDelivered": { 720 + "type": "boolean", 721 + "description": "Indicates whether the email was successfully delivered to the user's inbox." 649 722 } 650 723 } 651 724 }, ··· 653 726 "type": "object", 654 727 "description": "Divert a record's blobs to a 3rd party service for further scanning/tagging", 655 728 "properties": { 656 - "comment": { "type": "string" } 729 + "comment": { 730 + "type": "string" 731 + } 657 732 } 658 733 }, 659 734 "modEventTag": { ··· 663 738 "properties": { 664 739 "add": { 665 740 "type": "array", 666 - "items": { "type": "string" }, 741 + "items": { 742 + "type": "string" 743 + }, 667 744 "description": "Tags to be added to the subject. If already exists, won't be duplicated." 668 745 }, 669 746 "remove": { 670 747 "type": "array", 671 - "items": { "type": "string" }, 748 + "items": { 749 + "type": "string" 750 + }, 672 751 "description": "Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated." 673 752 }, 674 753 "comment": { ··· 682 761 "description": "Logs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.", 683 762 "required": ["timestamp", "active"], 684 763 "properties": { 685 - "comment": { "type": "string" }, 764 + "comment": { 765 + "type": "string" 766 + }, 686 767 "active": { 687 768 "type": "boolean", 688 769 "description": "Indicates that the account has a repository which can be fetched from the host that emitted this event." ··· 702 783 "description": "Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.", 703 784 "required": ["timestamp"], 704 785 "properties": { 705 - "comment": { "type": "string" }, 706 - "handle": { "type": "string", "format": "handle" }, 707 - "pdsHost": { "type": "string", "format": "uri" }, 708 - "tombstone": { "type": "boolean" }, 786 + "comment": { 787 + "type": "string" 788 + }, 789 + "handle": { 790 + "type": "string", 791 + "format": "handle" 792 + }, 793 + "pdsHost": { 794 + "type": "string", 795 + "format": "uri" 796 + }, 797 + "tombstone": { 798 + "type": "boolean" 799 + }, 709 800 "timestamp": { 710 801 "type": "string", 711 802 "format": "datetime" ··· 717 808 "description": "Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.", 718 809 "required": ["timestamp", "op"], 719 810 "properties": { 720 - "comment": { "type": "string" }, 811 + "comment": { 812 + "type": "string" 813 + }, 721 814 "op": { 722 815 "type": "string", 723 816 "knownValues": ["create", "update", "delete"] 724 817 }, 725 - "cid": { "type": "string", "format": "cid" }, 726 - "timestamp": { "type": "string", "format": "datetime" } 818 + "cid": { 819 + "type": "string", 820 + "format": "cid" 821 + }, 822 + "timestamp": { 823 + "type": "string", 824 + "format": "datetime" 825 + } 727 826 } 728 827 }, 729 828 "scheduleTakedownEvent": { 730 829 "type": "object", 731 830 "description": "Logs a scheduled takedown action for an account.", 732 831 "properties": { 733 - "comment": { "type": "string" }, 734 - "executeAt": { "type": "string", "format": "datetime" }, 735 - "executeAfter": { "type": "string", "format": "datetime" }, 736 - "executeUntil": { "type": "string", "format": "datetime" } 832 + "comment": { 833 + "type": "string" 834 + }, 835 + "executeAt": { 836 + "type": "string", 837 + "format": "datetime" 838 + }, 839 + "executeAfter": { 840 + "type": "string", 841 + "format": "datetime" 842 + }, 843 + "executeUntil": { 844 + "type": "string", 845 + "format": "datetime" 846 + } 737 847 } 738 848 }, 739 849 "cancelScheduledTakedownEvent": { 740 850 "type": "object", 741 851 "description": "Logs cancellation of a scheduled takedown action for an account.", 742 852 "properties": { 743 - "comment": { "type": "string" } 853 + "comment": { 854 + "type": "string" 855 + } 744 856 } 745 857 }, 746 858 "repoView": { 747 859 "type": "object", 748 860 "required": ["did", "handle", "relatedRecords", "indexedAt", "moderation"], 749 861 "properties": { 750 - "did": { "type": "string", "format": "did" }, 751 - "handle": { "type": "string", "format": "handle" }, 752 - "email": { "type": "string" }, 753 - "relatedRecords": { "type": "array", "items": { "type": "unknown" } }, 754 - "indexedAt": { "type": "string", "format": "datetime" }, 755 - "moderation": { "type": "ref", "ref": "#moderation" }, 862 + "did": { 863 + "type": "string", 864 + "format": "did" 865 + }, 866 + "handle": { 867 + "type": "string", 868 + "format": "handle" 869 + }, 870 + "email": { 871 + "type": "string" 872 + }, 873 + "relatedRecords": { 874 + "type": "array", 875 + "items": { 876 + "type": "unknown" 877 + } 878 + }, 879 + "indexedAt": { 880 + "type": "string", 881 + "format": "datetime" 882 + }, 883 + "moderation": { 884 + "type": "ref", 885 + "ref": "#moderation" 886 + }, 756 887 "invitedBy": { 757 888 "type": "ref", 758 889 "ref": "com.atproto.server.defs#inviteCode" 759 890 }, 760 - "invitesDisabled": { "type": "boolean" }, 761 - "inviteNote": { "type": "string" }, 762 - "deactivatedAt": { "type": "string", "format": "datetime" }, 891 + "invitesDisabled": { 892 + "type": "boolean" 893 + }, 894 + "inviteNote": { 895 + "type": "string" 896 + }, 897 + "deactivatedAt": { 898 + "type": "string", 899 + "format": "datetime" 900 + }, 763 901 "threatSignatures": { 764 902 "type": "array", 765 903 "items": { ··· 773 911 "type": "object", 774 912 "required": ["did", "handle", "relatedRecords", "indexedAt", "moderation"], 775 913 "properties": { 776 - "did": { "type": "string", "format": "did" }, 777 - "handle": { "type": "string", "format": "handle" }, 778 - "email": { "type": "string" }, 779 - "relatedRecords": { "type": "array", "items": { "type": "unknown" } }, 780 - "indexedAt": { "type": "string", "format": "datetime" }, 781 - "moderation": { "type": "ref", "ref": "#moderationDetail" }, 914 + "did": { 915 + "type": "string", 916 + "format": "did" 917 + }, 918 + "handle": { 919 + "type": "string", 920 + "format": "handle" 921 + }, 922 + "email": { 923 + "type": "string" 924 + }, 925 + "relatedRecords": { 926 + "type": "array", 927 + "items": { 928 + "type": "unknown" 929 + } 930 + }, 931 + "indexedAt": { 932 + "type": "string", 933 + "format": "datetime" 934 + }, 935 + "moderation": { 936 + "type": "ref", 937 + "ref": "#moderationDetail" 938 + }, 782 939 "labels": { 783 940 "type": "array", 784 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 941 + "items": { 942 + "type": "ref", 943 + "ref": "com.atproto.label.defs#label" 944 + } 785 945 }, 786 946 "invitedBy": { 787 947 "type": "ref", ··· 794 954 "ref": "com.atproto.server.defs#inviteCode" 795 955 } 796 956 }, 797 - "invitesDisabled": { "type": "boolean" }, 798 - "inviteNote": { "type": "string" }, 799 - "emailConfirmedAt": { "type": "string", "format": "datetime" }, 800 - "deactivatedAt": { "type": "string", "format": "datetime" }, 957 + "invitesDisabled": { 958 + "type": "boolean" 959 + }, 960 + "inviteNote": { 961 + "type": "string" 962 + }, 963 + "emailConfirmedAt": { 964 + "type": "string", 965 + "format": "datetime" 966 + }, 967 + "deactivatedAt": { 968 + "type": "string", 969 + "format": "datetime" 970 + }, 801 971 "threatSignatures": { 802 972 "type": "array", 803 973 "items": { ··· 811 981 "type": "object", 812 982 "required": ["did"], 813 983 "properties": { 814 - "did": { "type": "string", "format": "did" } 984 + "did": { 985 + "type": "string", 986 + "format": "did" 987 + } 815 988 } 816 989 }, 817 990 "recordView": { 818 991 "type": "object", 819 992 "required": ["uri", "cid", "value", "blobCids", "indexedAt", "moderation", "repo"], 820 993 "properties": { 821 - "uri": { "type": "string", "format": "at-uri" }, 822 - "cid": { "type": "string", "format": "cid" }, 823 - "value": { "type": "unknown" }, 994 + "uri": { 995 + "type": "string", 996 + "format": "at-uri" 997 + }, 998 + "cid": { 999 + "type": "string", 1000 + "format": "cid" 1001 + }, 1002 + "value": { 1003 + "type": "unknown" 1004 + }, 824 1005 "blobCids": { 825 1006 "type": "array", 826 - "items": { "type": "string", "format": "cid" } 1007 + "items": { 1008 + "type": "string", 1009 + "format": "cid" 1010 + } 1011 + }, 1012 + "indexedAt": { 1013 + "type": "string", 1014 + "format": "datetime" 827 1015 }, 828 - "indexedAt": { "type": "string", "format": "datetime" }, 829 - "moderation": { "type": "ref", "ref": "#moderation" }, 830 - "repo": { "type": "ref", "ref": "#repoView" } 1016 + "moderation": { 1017 + "type": "ref", 1018 + "ref": "#moderation" 1019 + }, 1020 + "repo": { 1021 + "type": "ref", 1022 + "ref": "#repoView" 1023 + } 831 1024 } 832 1025 }, 833 1026 "recordViewDetail": { 834 1027 "type": "object", 835 1028 "required": ["uri", "cid", "value", "blobs", "indexedAt", "moderation", "repo"], 836 1029 "properties": { 837 - "uri": { "type": "string", "format": "at-uri" }, 838 - "cid": { "type": "string", "format": "cid" }, 839 - "value": { "type": "unknown" }, 1030 + "uri": { 1031 + "type": "string", 1032 + "format": "at-uri" 1033 + }, 1034 + "cid": { 1035 + "type": "string", 1036 + "format": "cid" 1037 + }, 1038 + "value": { 1039 + "type": "unknown" 1040 + }, 840 1041 "blobs": { 841 1042 "type": "array", 842 - "items": { "type": "ref", "ref": "#blobView" } 1043 + "items": { 1044 + "type": "ref", 1045 + "ref": "#blobView" 1046 + } 843 1047 }, 844 1048 "labels": { 845 1049 "type": "array", 846 - "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 1050 + "items": { 1051 + "type": "ref", 1052 + "ref": "com.atproto.label.defs#label" 1053 + } 847 1054 }, 848 - "indexedAt": { "type": "string", "format": "datetime" }, 849 - "moderation": { "type": "ref", "ref": "#moderationDetail" }, 850 - "repo": { "type": "ref", "ref": "#repoView" } 1055 + "indexedAt": { 1056 + "type": "string", 1057 + "format": "datetime" 1058 + }, 1059 + "moderation": { 1060 + "type": "ref", 1061 + "ref": "#moderationDetail" 1062 + }, 1063 + "repo": { 1064 + "type": "ref", 1065 + "ref": "#repoView" 1066 + } 851 1067 } 852 1068 }, 853 1069 "recordViewNotFound": { 854 1070 "type": "object", 855 1071 "required": ["uri"], 856 1072 "properties": { 857 - "uri": { "type": "string", "format": "at-uri" } 1073 + "uri": { 1074 + "type": "string", 1075 + "format": "at-uri" 1076 + } 858 1077 } 859 1078 }, 860 1079 "moderation": { 861 1080 "type": "object", 862 1081 "properties": { 863 - "subjectStatus": { "type": "ref", "ref": "#subjectStatusView" } 1082 + "subjectStatus": { 1083 + "type": "ref", 1084 + "ref": "#subjectStatusView" 1085 + } 864 1086 } 865 1087 }, 866 1088 "moderationDetail": { ··· 876 1098 "type": "object", 877 1099 "required": ["cid", "mimeType", "size", "createdAt"], 878 1100 "properties": { 879 - "cid": { "type": "string", "format": "cid" }, 880 - "mimeType": { "type": "string" }, 881 - "size": { "type": "integer" }, 882 - "createdAt": { "type": "string", "format": "datetime" }, 1101 + "cid": { 1102 + "type": "string", 1103 + "format": "cid" 1104 + }, 1105 + "mimeType": { 1106 + "type": "string" 1107 + }, 1108 + "size": { 1109 + "type": "integer" 1110 + }, 1111 + "createdAt": { 1112 + "type": "string", 1113 + "format": "datetime" 1114 + }, 883 1115 "details": { 884 1116 "type": "union", 885 1117 "refs": ["#imageDetails", "#videoDetails"] 886 1118 }, 887 - "moderation": { "type": "ref", "ref": "#moderation" } 1119 + "moderation": { 1120 + "type": "ref", 1121 + "ref": "#moderation" 1122 + } 888 1123 } 889 1124 }, 890 1125 "imageDetails": { 891 1126 "type": "object", 892 1127 "required": ["width", "height"], 893 1128 "properties": { 894 - "width": { "type": "integer" }, 895 - "height": { "type": "integer" } 1129 + "width": { 1130 + "type": "integer" 1131 + }, 1132 + "height": { 1133 + "type": "integer" 1134 + } 896 1135 } 897 1136 }, 898 1137 "videoDetails": { 899 1138 "type": "object", 900 1139 "required": ["width", "height", "length"], 901 1140 "properties": { 902 - "width": { "type": "integer" }, 903 - "height": { "type": "integer" }, 904 - "length": { "type": "integer" } 1141 + "width": { 1142 + "type": "integer" 1143 + }, 1144 + "height": { 1145 + "type": "integer" 1146 + }, 1147 + "length": { 1148 + "type": "integer" 1149 + } 905 1150 } 906 1151 }, 907 1152 "accountHosting": {
lexdocs/bluesky/tools/ozone/moderation/emitEvent.json packages/definitions/ozone/lexicons/tools/ozone/moderation/emitEvent.json
lexdocs/bluesky/tools/ozone/moderation/getAccountTimeline.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getAccountTimeline.json
+3 -1
lexdocs/bluesky/tools/ozone/moderation/getEvent.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getEvent.json
··· 9 9 "type": "params", 10 10 "required": ["id"], 11 11 "properties": { 12 - "id": { "type": "integer" } 12 + "id": { 13 + "type": "integer" 14 + } 13 15 } 14 16 }, 15 17 "output": {
+13 -3
lexdocs/bluesky/tools/ozone/moderation/getRecord.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getRecord.json
··· 9 9 "type": "params", 10 10 "required": ["uri"], 11 11 "properties": { 12 - "uri": { "type": "string", "format": "at-uri" }, 13 - "cid": { "type": "string", "format": "cid" } 12 + "uri": { 13 + "type": "string", 14 + "format": "at-uri" 15 + }, 16 + "cid": { 17 + "type": "string", 18 + "format": "cid" 19 + } 14 20 } 15 21 }, 16 22 "output": { ··· 20 26 "ref": "tools.ozone.moderation.defs#recordViewDetail" 21 27 } 22 28 }, 23 - "errors": [{ "name": "RecordNotFound" }] 29 + "errors": [ 30 + { 31 + "name": "RecordNotFound" 32 + } 33 + ] 24 34 } 25 35 } 26 36 }
lexdocs/bluesky/tools/ozone/moderation/getRecords.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getRecords.json
+9 -2
lexdocs/bluesky/tools/ozone/moderation/getRepo.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getRepo.json
··· 9 9 "type": "params", 10 10 "required": ["did"], 11 11 "properties": { 12 - "did": { "type": "string", "format": "did" } 12 + "did": { 13 + "type": "string", 14 + "format": "did" 15 + } 13 16 } 14 17 }, 15 18 "output": { ··· 19 22 "ref": "tools.ozone.moderation.defs#repoViewDetail" 20 23 } 21 24 }, 22 - "errors": [{ "name": "RepoNotFound" }] 25 + "errors": [ 26 + { 27 + "name": "RepoNotFound" 28 + } 29 + ] 23 30 } 24 31 } 25 32 }
lexdocs/bluesky/tools/ozone/moderation/getReporterStats.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getReporterStats.json
lexdocs/bluesky/tools/ozone/moderation/getRepos.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getRepos.json
lexdocs/bluesky/tools/ozone/moderation/getSubjects.json packages/definitions/ozone/lexicons/tools/ozone/moderation/getSubjects.json
lexdocs/bluesky/tools/ozone/moderation/listScheduledActions.json packages/definitions/ozone/lexicons/tools/ozone/moderation/listScheduledActions.json
lexdocs/bluesky/tools/ozone/moderation/queryEvents.json packages/definitions/ozone/lexicons/tools/ozone/moderation/queryEvents.json
+7 -1
lexdocs/bluesky/tools/ozone/moderation/queryStatuses.json packages/definitions/ozone/lexicons/tools/ozone/moderation/queryStatuses.json
··· 90 90 }, 91 91 "reviewState": { 92 92 "type": "string", 93 - "description": "Specify when fetching subjects in a certain state" 93 + "description": "Specify when fetching subjects in a certain state", 94 + "knownValues": [ 95 + "tools.ozone.moderation.defs#reviewOpen", 96 + "tools.ozone.moderation.defs#reviewClosed", 97 + "tools.ozone.moderation.defs#reviewEscalated", 98 + "tools.ozone.moderation.defs#reviewNone" 99 + ] 94 100 }, 95 101 "ignoreSubjects": { 96 102 "type": "array",
+21
lexdocs/bluesky/tools/ozone/moderation/scheduleAction.json packages/definitions/ozone/lexicons/tools/ozone/moderation/scheduleAction.json
··· 70 70 "type": "string" 71 71 }, 72 72 "description": "Names/Keywords of the policies that drove the decision." 73 + }, 74 + "severityLevel": { 75 + "type": "string", 76 + "description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.)." 77 + }, 78 + "strikeCount": { 79 + "type": "integer", 80 + "description": "Number of strikes to assign to the user when takedown is applied." 81 + }, 82 + "strikeExpiresAt": { 83 + "type": "string", 84 + "format": "datetime", 85 + "description": "When the strike should expire. If not provided, the strike never expires." 86 + }, 87 + "emailContent": { 88 + "type": "string", 89 + "description": "Email content to be sent to the user upon takedown." 90 + }, 91 + "emailSubject": { 92 + "type": "string", 93 + "description": "Subject of the email to be sent to the user upon takedown." 73 94 } 74 95 } 75 96 },
+9 -3
lexdocs/bluesky/tools/ozone/moderation/searchRepos.json packages/definitions/ozone/lexicons/tools/ozone/moderation/searchRepos.json
··· 12 12 "type": "string", 13 13 "description": "DEPRECATED: use 'q' instead" 14 14 }, 15 - "q": { "type": "string" }, 15 + "q": { 16 + "type": "string" 17 + }, 16 18 "limit": { 17 19 "type": "integer", 18 20 "minimum": 1, 19 21 "maximum": 100, 20 22 "default": 50 21 23 }, 22 - "cursor": { "type": "string" } 24 + "cursor": { 25 + "type": "string" 26 + } 23 27 } 24 28 }, 25 29 "output": { ··· 28 32 "type": "object", 29 33 "required": ["repos"], 30 34 "properties": { 31 - "cursor": { "type": "string" }, 35 + "cursor": { 36 + "type": "string" 37 + }, 32 38 "repos": { 33 39 "type": "array", 34 40 "items": {
-12
lexdocs/bluesky/tools/ozone/report/defs.json packages/definitions/ozone/lexicons/tools/ozone/report/defs.json
··· 7 7 "knownValues": [ 8 8 "tools.ozone.report.defs#reasonAppeal", 9 9 "tools.ozone.report.defs#reasonOther", 10 - 11 10 "tools.ozone.report.defs#reasonViolenceAnimal", 12 11 "tools.ozone.report.defs#reasonViolenceThreats", 13 12 "tools.ozone.report.defs#reasonViolenceGraphicContent", ··· 15 14 "tools.ozone.report.defs#reasonViolenceExtremistContent", 16 15 "tools.ozone.report.defs#reasonViolenceTrafficking", 17 16 "tools.ozone.report.defs#reasonViolenceOther", 18 - 19 17 "tools.ozone.report.defs#reasonSexualAbuseContent", 20 18 "tools.ozone.report.defs#reasonSexualNCII", 21 19 "tools.ozone.report.defs#reasonSexualDeepfake", 22 20 "tools.ozone.report.defs#reasonSexualAnimal", 23 21 "tools.ozone.report.defs#reasonSexualUnlabeled", 24 22 "tools.ozone.report.defs#reasonSexualOther", 25 - 26 23 "tools.ozone.report.defs#reasonChildSafetyCSAM", 27 24 "tools.ozone.report.defs#reasonChildSafetyGroom", 28 25 "tools.ozone.report.defs#reasonChildSafetyPrivacy", 29 26 "tools.ozone.report.defs#reasonChildSafetyHarassment", 30 27 "tools.ozone.report.defs#reasonChildSafetyOther", 31 - 32 28 "tools.ozone.report.defs#reasonHarassmentTroll", 33 29 "tools.ozone.report.defs#reasonHarassmentTargeted", 34 30 "tools.ozone.report.defs#reasonHarassmentHateSpeech", 35 31 "tools.ozone.report.defs#reasonHarassmentDoxxing", 36 32 "tools.ozone.report.defs#reasonHarassmentOther", 37 - 38 33 "tools.ozone.report.defs#reasonMisleadingBot", 39 34 "tools.ozone.report.defs#reasonMisleadingImpersonation", 40 35 "tools.ozone.report.defs#reasonMisleadingSpam", 41 36 "tools.ozone.report.defs#reasonMisleadingScam", 42 37 "tools.ozone.report.defs#reasonMisleadingElections", 43 38 "tools.ozone.report.defs#reasonMisleadingOther", 44 - 45 39 "tools.ozone.report.defs#reasonRuleSiteSecurity", 46 40 "tools.ozone.report.defs#reasonRuleProhibitedSales", 47 41 "tools.ozone.report.defs#reasonRuleBanEvasion", 48 42 "tools.ozone.report.defs#reasonRuleOther", 49 - 50 43 "tools.ozone.report.defs#reasonSelfHarmContent", 51 44 "tools.ozone.report.defs#reasonSelfHarmED", 52 45 "tools.ozone.report.defs#reasonSelfHarmStunts", ··· 90 83 "type": "token", 91 84 "description": "Other violent content" 92 85 }, 93 - 94 86 "reasonSexualAbuseContent": { 95 87 "type": "token", 96 88 "description": "Adult sexual abuse content" ··· 115 107 "type": "token", 116 108 "description": "Other sexual violence content" 117 109 }, 118 - 119 110 "reasonChildSafetyCSAM": { 120 111 "type": "token", 121 112 "description": "Child sexual abuse material (CSAM). These reports will be sent only be sent to the application's Moderation Authority." ··· 136 127 "type": "token", 137 128 "description": "Other child safety. These reports will be sent only be sent to the application's Moderation Authority." 138 129 }, 139 - 140 130 "reasonHarassmentTroll": { 141 131 "type": "token", 142 132 "description": "Trolling" ··· 157 147 "type": "token", 158 148 "description": "Other harassing or hateful content" 159 149 }, 160 - 161 150 "reasonMisleadingBot": { 162 151 "type": "token", 163 152 "description": "Fake account or bot" ··· 182 171 "type": "token", 183 172 "description": "Other misleading content" 184 173 }, 185 - 186 174 "reasonRuleSiteSecurity": { 187 175 "type": "token", 188 176 "description": "Hacking or system attacks"
lexdocs/bluesky/tools/ozone/safelink/addRule.json packages/definitions/ozone/lexicons/tools/ozone/safelink/addRule.json
lexdocs/bluesky/tools/ozone/safelink/defs.json packages/definitions/ozone/lexicons/tools/ozone/safelink/defs.json
lexdocs/bluesky/tools/ozone/safelink/queryEvents.json packages/definitions/ozone/lexicons/tools/ozone/safelink/queryEvents.json
lexdocs/bluesky/tools/ozone/safelink/queryRules.json packages/definitions/ozone/lexicons/tools/ozone/safelink/queryRules.json
lexdocs/bluesky/tools/ozone/safelink/removeRule.json packages/definitions/ozone/lexicons/tools/ozone/safelink/removeRule.json
lexdocs/bluesky/tools/ozone/safelink/updateRule.json packages/definitions/ozone/lexicons/tools/ozone/safelink/updateRule.json
lexdocs/bluesky/tools/ozone/server/getConfig.json packages/definitions/ozone/lexicons/tools/ozone/server/getConfig.json
lexdocs/bluesky/tools/ozone/set/addValues.json packages/definitions/ozone/lexicons/tools/ozone/set/addValues.json
lexdocs/bluesky/tools/ozone/set/defs.json packages/definitions/ozone/lexicons/tools/ozone/set/defs.json
lexdocs/bluesky/tools/ozone/set/deleteSet.json packages/definitions/ozone/lexicons/tools/ozone/set/deleteSet.json
lexdocs/bluesky/tools/ozone/set/deleteValues.json packages/definitions/ozone/lexicons/tools/ozone/set/deleteValues.json
lexdocs/bluesky/tools/ozone/set/getValues.json packages/definitions/ozone/lexicons/tools/ozone/set/getValues.json
lexdocs/bluesky/tools/ozone/set/querySets.json packages/definitions/ozone/lexicons/tools/ozone/set/querySets.json
lexdocs/bluesky/tools/ozone/set/upsertSet.json packages/definitions/ozone/lexicons/tools/ozone/set/upsertSet.json
lexdocs/bluesky/tools/ozone/setting/defs.json packages/definitions/ozone/lexicons/tools/ozone/setting/defs.json
lexdocs/bluesky/tools/ozone/setting/listOptions.json packages/definitions/ozone/lexicons/tools/ozone/setting/listOptions.json
lexdocs/bluesky/tools/ozone/setting/removeOptions.json packages/definitions/ozone/lexicons/tools/ozone/setting/removeOptions.json
lexdocs/bluesky/tools/ozone/setting/upsertOption.json packages/definitions/ozone/lexicons/tools/ozone/setting/upsertOption.json
+6 -2
lexdocs/bluesky/tools/ozone/signature/defs.json packages/definitions/ozone/lexicons/tools/ozone/signature/defs.json
··· 6 6 "type": "object", 7 7 "required": ["property", "value"], 8 8 "properties": { 9 - "property": { "type": "string" }, 10 - "value": { "type": "string" } 9 + "property": { 10 + "type": "string" 11 + }, 12 + "value": { 13 + "type": "string" 14 + } 11 15 } 12 16 } 13 17 }
lexdocs/bluesky/tools/ozone/signature/findCorrelation.json packages/definitions/ozone/lexicons/tools/ozone/signature/findCorrelation.json
+6 -2
lexdocs/bluesky/tools/ozone/signature/findRelatedAccounts.json packages/definitions/ozone/lexicons/tools/ozone/signature/findRelatedAccounts.json
··· 13 13 "type": "string", 14 14 "format": "did" 15 15 }, 16 - "cursor": { "type": "string" }, 16 + "cursor": { 17 + "type": "string" 18 + }, 17 19 "limit": { 18 20 "type": "integer", 19 21 "minimum": 1, ··· 28 30 "type": "object", 29 31 "required": ["accounts"], 30 32 "properties": { 31 - "cursor": { "type": "string" }, 33 + "cursor": { 34 + "type": "string" 35 + }, 32 36 "accounts": { 33 37 "type": "array", 34 38 "items": {
+6 -2
lexdocs/bluesky/tools/ozone/signature/searchAccounts.json packages/definitions/ozone/lexicons/tools/ozone/signature/searchAccounts.json
··· 15 15 "type": "string" 16 16 } 17 17 }, 18 - "cursor": { "type": "string" }, 18 + "cursor": { 19 + "type": "string" 20 + }, 19 21 "limit": { 20 22 "type": "integer", 21 23 "minimum": 1, ··· 30 32 "type": "object", 31 33 "required": ["accounts"], 32 34 "properties": { 33 - "cursor": { "type": "string" }, 35 + "cursor": { 36 + "type": "string" 37 + }, 34 38 "accounts": { 35 39 "type": "array", 36 40 "items": {
+4 -1
lexdocs/bluesky/tools/ozone/team/addMember.json packages/definitions/ozone/lexicons/tools/ozone/team/addMember.json
··· 11 11 "type": "object", 12 12 "required": ["did", "role"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" }, 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + }, 15 18 "role": { 16 19 "type": "string", 17 20 "knownValues": [
+18 -5
lexdocs/bluesky/tools/ozone/team/defs.json packages/definitions/ozone/lexicons/tools/ozone/team/defs.json
··· 6 6 "type": "object", 7 7 "required": ["did", "role"], 8 8 "properties": { 9 - "did": { "type": "string", "format": "did" }, 10 - "disabled": { "type": "boolean" }, 9 + "did": { 10 + "type": "string", 11 + "format": "did" 12 + }, 13 + "disabled": { 14 + "type": "boolean" 15 + }, 11 16 "profile": { 12 17 "type": "ref", 13 18 "ref": "app.bsky.actor.defs#profileViewDetailed" 14 19 }, 15 - "createdAt": { "type": "string", "format": "datetime" }, 16 - "updatedAt": { "type": "string", "format": "datetime" }, 17 - "lastUpdatedBy": { "type": "string" }, 20 + "createdAt": { 21 + "type": "string", 22 + "format": "datetime" 23 + }, 24 + "updatedAt": { 25 + "type": "string", 26 + "format": "datetime" 27 + }, 28 + "lastUpdatedBy": { 29 + "type": "string" 30 + }, 18 31 "role": { 19 32 "type": "string", 20 33 "knownValues": ["#roleAdmin", "#roleModerator", "#roleTriage", "#roleVerifier"]
+4 -1
lexdocs/bluesky/tools/ozone/team/deleteMember.json packages/definitions/ozone/lexicons/tools/ozone/team/deleteMember.json
··· 11 11 "type": "object", 12 12 "required": ["did"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" } 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + } 15 18 } 16 19 } 17 20 },
lexdocs/bluesky/tools/ozone/team/listMembers.json packages/definitions/ozone/lexicons/tools/ozone/team/listMembers.json
+7 -2
lexdocs/bluesky/tools/ozone/team/updateMember.json packages/definitions/ozone/lexicons/tools/ozone/team/updateMember.json
··· 11 11 "type": "object", 12 12 "required": ["did"], 13 13 "properties": { 14 - "did": { "type": "string", "format": "did" }, 15 - "disabled": { "type": "boolean" }, 14 + "did": { 15 + "type": "string", 16 + "format": "did" 17 + }, 18 + "disabled": { 19 + "type": "boolean" 20 + }, 16 21 "role": { 17 22 "type": "string", 18 23 "knownValues": [
lexdocs/bluesky/tools/ozone/verification/defs.json packages/definitions/ozone/lexicons/tools/ozone/verification/defs.json
lexdocs/bluesky/tools/ozone/verification/grantVerifications.json packages/definitions/ozone/lexicons/tools/ozone/verification/grantVerifications.json
lexdocs/bluesky/tools/ozone/verification/listVerifications.json packages/definitions/ozone/lexicons/tools/ozone/verification/listVerifications.json
lexdocs/bluesky/tools/ozone/verification/revokeVerifications.json packages/definitions/ozone/lexicons/tools/ozone/verification/revokeVerifications.json
-1
lexdocs/frontpage/README.md
··· 1 - https://github.com/likeandscribe/frontpage/tree/ad5d8e1a76ed8353afb3ccc0ef83a64ecd67c676/lexicons/fyi/unravel/frontpage/
+8 -2
lexdocs/frontpage/comment.json packages/definitions/frontpage/lexicons/fyi/unravel/frontpage/comment.json
··· 21 21 "format": "datetime", 22 22 "description": "Client-declared timestamp when this comment was originally created." 23 23 }, 24 - "parent": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 25 - "post": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 24 + "parent": { 25 + "type": "ref", 26 + "ref": "com.atproto.repo.strongRef" 27 + }, 28 + "post": { 29 + "type": "ref", 30 + "ref": "com.atproto.repo.strongRef" 31 + } 26 32 } 27 33 } 28 34 }
lexdocs/frontpage/post.json packages/definitions/frontpage/lexicons/fyi/unravel/frontpage/post.json
+4 -1
lexdocs/frontpage/vote.json packages/definitions/frontpage/lexicons/fyi/unravel/frontpage/vote.json
··· 10 10 "type": "object", 11 11 "required": ["subject", "createdAt"], 12 12 "properties": { 13 - "subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 13 + "subject": { 14 + "type": "ref", 15 + "ref": "com.atproto.repo.strongRef" 16 + }, 14 17 "createdAt": { 15 18 "type": "string", 16 19 "format": "datetime",
-1
lexdocs/leaflet/README.md
··· 1 - https://github.com/hyperlink-academy/leaflet/tree/fb3fe27c3b8f8c0146899add899cc49a76673029/lexicons/pub/leaflet/
lexdocs/leaflet/blocks/blockquote.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/blockquote.json
lexdocs/leaflet/blocks/bskyPost.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/bskyPost.json
lexdocs/leaflet/blocks/button.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/button.json
lexdocs/leaflet/blocks/code.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/code.json
lexdocs/leaflet/blocks/header.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/header.json
lexdocs/leaflet/blocks/horizontalRule.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/horizontalRule.json
lexdocs/leaflet/blocks/iframe.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/iframe.json
lexdocs/leaflet/blocks/image.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/image.json
lexdocs/leaflet/blocks/math.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/math.json
lexdocs/leaflet/blocks/page.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/page.json
lexdocs/leaflet/blocks/poll.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/poll.json
lexdocs/leaflet/blocks/text.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/text.json
lexdocs/leaflet/blocks/unorderedList.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/unorderedList.json
lexdocs/leaflet/blocks/website.json packages/definitions/leaflet/lexicons/pub/leaflet/blocks/website.json
lexdocs/leaflet/comment.json packages/definitions/leaflet/lexicons/pub/leaflet/comment.json
lexdocs/leaflet/document.json packages/definitions/leaflet/lexicons/pub/leaflet/document.json
lexdocs/leaflet/graph/subscription.json packages/definitions/leaflet/lexicons/pub/leaflet/graph/subscription.json
lexdocs/leaflet/pages/canvas.json packages/definitions/leaflet/lexicons/pub/leaflet/pages/canvas.json
lexdocs/leaflet/pages/linearDocument.json packages/definitions/leaflet/lexicons/pub/leaflet/pages/linearDocument.json
lexdocs/leaflet/poll/definition.json packages/definitions/leaflet/lexicons/pub/leaflet/poll/definition.json
lexdocs/leaflet/poll/vote.json packages/definitions/leaflet/lexicons/pub/leaflet/poll/vote.json
lexdocs/leaflet/publication.json packages/definitions/leaflet/lexicons/pub/leaflet/publication.json
lexdocs/leaflet/richtext/facet.json packages/definitions/leaflet/lexicons/pub/leaflet/richtext/facet.json
lexdocs/leaflet/theme/backgroundImage.json packages/definitions/leaflet/lexicons/pub/leaflet/theme/backgroundImage.json
lexdocs/leaflet/theme/color.json packages/definitions/leaflet/lexicons/pub/leaflet/theme/color.json
-1
lexdocs/lexcom/README.md
··· 1 - https://github.com/lexicon-community/lexicon/tree/2bf2cbbfd3058d710f8c468307ef7e003bc22383/community/lexicon/
lexdocs/lexcom/bookmarks/bookmark.json packages/definitions/lexicon-community/lexicons/community/lexicon/bookmarks/bookmark.json
lexdocs/lexcom/bookmarks/getActorBookmarks.json packages/definitions/lexicon-community/lexicons/community/lexicon/bookmarks/getActorBookmarks.json
lexdocs/lexcom/calendar/event.json packages/definitions/lexicon-community/lexicons/community/lexicon/calendar/event.json
lexdocs/lexcom/calendar/rsvp.json packages/definitions/lexicon-community/lexicons/community/lexicon/calendar/rsvp.json
lexdocs/lexcom/interaction/like.json packages/definitions/lexicon-community/lexicons/community/lexicon/interaction/like.json
lexdocs/lexcom/location/address.json packages/definitions/lexicon-community/lexicons/community/lexicon/location/address.json
lexdocs/lexcom/location/fsq.json packages/definitions/lexicon-community/lexicons/community/lexicon/location/fsq.json
lexdocs/lexcom/location/geo.json packages/definitions/lexicon-community/lexicons/community/lexicon/location/geo.json
lexdocs/lexcom/location/hthree.json packages/definitions/lexicon-community/lexicons/community/lexicon/location/hthree.json
lexdocs/lexcom/payments/webMonetization.json packages/definitions/lexicon-community/lexicons/community/lexicon/payments/webMonetization.json
lexdocs/microcosm/blue.microcosm/links/getBacklinks.json packages/definitions/microcosm/lexicons/blue/microcosm/links/getBacklinks.json
lexdocs/microcosm/blue.microcosm/links/getManyToManyCounts.json packages/definitions/microcosm/lexicons/blue/microcosm/links/getManyToManyCounts.json
lexdocs/microcosm/com.bad-example/identity/resolveMiniDoc.json packages/definitions/microcosm/lexicons/com/bad-example/identity/resolveMiniDoc.json
lexdocs/microcosm/com.bad-example/repo/getUriRecord.json packages/definitions/microcosm/lexicons/com/bad-example/repo/getUriRecord.json
-1
lexdocs/tangled/README.md
··· 1 - https://github.com/mary-ext/tangled.sh-mirror/tree/7ed8a10067d69edc97679e0f42eeb51e646dd893/lexicons/
lexdocs/tangled/actor/profile.json packages/definitions/tangled/lexicons/sh/tangled/actor/profile.json
lexdocs/tangled/feed/reaction.json packages/definitions/tangled/lexicons/sh/tangled/feed/reaction.json
lexdocs/tangled/feed/star.json packages/definitions/tangled/lexicons/sh/tangled/feed/star.json
lexdocs/tangled/git/refUpdate.json packages/definitions/tangled/lexicons/sh/tangled/git/refUpdate.json
lexdocs/tangled/graph/follow.json packages/definitions/tangled/lexicons/sh/tangled/graph/follow.json
lexdocs/tangled/issue/closed.json packages/definitions/tangled/lexicons/sh/tangled/repo/issue/state/closed.json
lexdocs/tangled/issue/comment.json packages/definitions/tangled/lexicons/sh/tangled/repo/issue/comment.json
lexdocs/tangled/issue/issue.json packages/definitions/tangled/lexicons/sh/tangled/repo/issue.json
lexdocs/tangled/issue/open.json packages/definitions/tangled/lexicons/sh/tangled/repo/issue/state/open.json
lexdocs/tangled/issue/state.json packages/definitions/tangled/lexicons/sh/tangled/repo/issue/state.json
lexdocs/tangled/knot/knot.json packages/definitions/tangled/lexicons/sh/tangled/knot.json
lexdocs/tangled/knot/listKeys.json packages/definitions/tangled/lexicons/sh/tangled/knot/listKeys.json
lexdocs/tangled/knot/member.json packages/definitions/tangled/lexicons/sh/tangled/knot/member.json
lexdocs/tangled/knot/version.json packages/definitions/tangled/lexicons/sh/tangled/knot/version.json
lexdocs/tangled/label/definition.json packages/definitions/tangled/lexicons/sh/tangled/label/definition.json
lexdocs/tangled/label/op.json packages/definitions/tangled/lexicons/sh/tangled/label/op.json
lexdocs/tangled/owner.json packages/definitions/tangled/lexicons/sh/tangled/owner.json
lexdocs/tangled/pipeline/pipeline.json packages/definitions/tangled/lexicons/sh/tangled/pipeline.json
lexdocs/tangled/pipeline/status.json packages/definitions/tangled/lexicons/sh/tangled/pipeline/status.json
lexdocs/tangled/publicKey.json packages/definitions/tangled/lexicons/sh/tangled/publicKey.json
lexdocs/tangled/pulls/closed.json packages/definitions/tangled/lexicons/sh/tangled/repo/pull/status/closed.json
lexdocs/tangled/pulls/comment.json packages/definitions/tangled/lexicons/sh/tangled/repo/pull/comment.json
lexdocs/tangled/pulls/merged.json packages/definitions/tangled/lexicons/sh/tangled/repo/pull/status/merged.json
lexdocs/tangled/pulls/open.json packages/definitions/tangled/lexicons/sh/tangled/repo/pull/status/open.json
lexdocs/tangled/pulls/pull.json packages/definitions/tangled/lexicons/sh/tangled/repo/pull.json
lexdocs/tangled/pulls/state.json packages/definitions/tangled/lexicons/sh/tangled/repo/pull/status.json
lexdocs/tangled/repo/addSecret.json packages/definitions/tangled/lexicons/sh/tangled/repo/addSecret.json
lexdocs/tangled/repo/archive.json packages/definitions/tangled/lexicons/sh/tangled/repo/archive.json
lexdocs/tangled/repo/artifact.json packages/definitions/tangled/lexicons/sh/tangled/repo/artifact.json
lexdocs/tangled/repo/blob.json packages/definitions/tangled/lexicons/sh/tangled/repo/blob.json
lexdocs/tangled/repo/branch.json packages/definitions/tangled/lexicons/sh/tangled/repo/branch.json
lexdocs/tangled/repo/branches.json packages/definitions/tangled/lexicons/sh/tangled/repo/branches.json
lexdocs/tangled/repo/collaborator.json packages/definitions/tangled/lexicons/sh/tangled/repo/collaborator.json
lexdocs/tangled/repo/compare.json packages/definitions/tangled/lexicons/sh/tangled/repo/compare.json
lexdocs/tangled/repo/create.json packages/definitions/tangled/lexicons/sh/tangled/repo/create.json
lexdocs/tangled/repo/defaultBranch.json packages/definitions/tangled/lexicons/sh/tangled/repo/setDefaultBranch.json
lexdocs/tangled/repo/delete.json packages/definitions/tangled/lexicons/sh/tangled/repo/delete.json
lexdocs/tangled/repo/deleteBranch.json packages/definitions/tangled/lexicons/sh/tangled/repo/deleteBranch.json
lexdocs/tangled/repo/diff.json packages/definitions/tangled/lexicons/sh/tangled/repo/diff.json
lexdocs/tangled/repo/forkStatus.json packages/definitions/tangled/lexicons/sh/tangled/repo/forkStatus.json
lexdocs/tangled/repo/forkSync.json packages/definitions/tangled/lexicons/sh/tangled/repo/forkSync.json
lexdocs/tangled/repo/getDefaultBranch.json packages/definitions/tangled/lexicons/sh/tangled/repo/getDefaultBranch.json
lexdocs/tangled/repo/hiddenRef.json packages/definitions/tangled/lexicons/sh/tangled/repo/hiddenRef.json
lexdocs/tangled/repo/languages.json packages/definitions/tangled/lexicons/sh/tangled/repo/languages.json
lexdocs/tangled/repo/listSecrets.json packages/definitions/tangled/lexicons/sh/tangled/repo/listSecrets.json
lexdocs/tangled/repo/log.json packages/definitions/tangled/lexicons/sh/tangled/repo/log.json
lexdocs/tangled/repo/merge.json packages/definitions/tangled/lexicons/sh/tangled/repo/merge.json
lexdocs/tangled/repo/mergeCheck.json packages/definitions/tangled/lexicons/sh/tangled/repo/mergeCheck.json
lexdocs/tangled/repo/removeSecret.json packages/definitions/tangled/lexicons/sh/tangled/repo/removeSecret.json
lexdocs/tangled/repo/repo.json packages/definitions/tangled/lexicons/sh/tangled/repo.json
lexdocs/tangled/repo/tags.json packages/definitions/tangled/lexicons/sh/tangled/repo/tags.json
lexdocs/tangled/repo/tree.json packages/definitions/tangled/lexicons/sh/tangled/repo/tree.json
lexdocs/tangled/spindle/member.json packages/definitions/tangled/lexicons/sh/tangled/spindle/member.json
lexdocs/tangled/spindle/spindle.json packages/definitions/tangled/lexicons/sh/tangled/spindle.json
lexdocs/tangled/string/string.json packages/definitions/tangled/lexicons/sh/tangled/string.json
-1
lexdocs/whtwnd/README.md
··· 1 - https://github.com/whtwnd/whitewind-blog/tree/dc4b802154250b982191a52af1d1c9913c3b62e7/lexicons/com/whtwnd/
lexdocs/whtwnd/blog/defs.json packages/definitions/whitewind/lexicons/com/whtwnd/blog/defs.json
lexdocs/whtwnd/blog/entry.json packages/definitions/whitewind/lexicons/com/whtwnd/blog/entry.json
lexdocs/whtwnd/blog/getAuthorPosts.json packages/definitions/whitewind/lexicons/com/whtwnd/blog/getAuthorPosts.json
lexdocs/whtwnd/blog/getEntryMetadataByName.json packages/definitions/whitewind/lexicons/com/whtwnd/blog/getEntryMetadataByName.json
lexdocs/whtwnd/blog/getMentionsByEntry.json packages/definitions/whitewind/lexicons/com/whtwnd/blog/getMentionsByEntry.json
lexdocs/whtwnd/blog/notifyOfNewEntry.json packages/definitions/whitewind/lexicons/com/whtwnd/blog/notifyOfNewEntry.json
-7
package.json
··· 2 2 "private": true, 3 3 "type": "module", 4 4 "scripts": { 5 - "pull": "node ./scripts/pull-lexicons.js", 6 - "pull:bluemoji": "node ./scripts/pull-bluemoji-lexicons.js", 7 - "pull:frontpage": "node ./scripts/pull-frontpage-lexicons.js", 8 - "pull:leaflet": "node ./scripts/pull-leaflet-lexicons.js", 9 - "pull:lexcom": "node ./scripts/pull-lexcom-lexicons.js", 10 - "pull:tangled": "node ./scripts/pull-tangled-lexicons.js", 11 - "pull:whtwnd": "node ./scripts/pull-whtwnd-lexicons.js", 12 5 "fmt": "PRETTIER_EXPERIMENTAL_CLI=1 prettier --cache --write ." 13 6 }, 14 7 "devDependencies": {
+13 -1
packages/definitions/atproto/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/bluesky/com/atproto/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 + 7 + pull: { 8 + outdir: 'lexicons/', 9 + clean: true, 10 + sources: [ 11 + { 12 + type: 'git', 13 + remote: 'https://github.com/bluesky-social/atproto.git', 14 + pattern: ['lexicons/com/atproto/**/*.json'], 15 + }, 16 + ], 17 + }, 6 18 });
+6
packages/definitions/atproto/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/bluesky-social/atproto.git 6 + - commit: 0748d919d127d68ee8c8aeb130b477e3dd5a9be6
+117
packages/definitions/atproto/lexicons/com/atproto/admin/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.admin.defs", 4 + "defs": { 5 + "statusAttr": { 6 + "type": "object", 7 + "required": ["applied"], 8 + "properties": { 9 + "applied": { 10 + "type": "boolean" 11 + }, 12 + "ref": { 13 + "type": "string" 14 + } 15 + } 16 + }, 17 + "accountView": { 18 + "type": "object", 19 + "required": ["did", "handle", "indexedAt"], 20 + "properties": { 21 + "did": { 22 + "type": "string", 23 + "format": "did" 24 + }, 25 + "handle": { 26 + "type": "string", 27 + "format": "handle" 28 + }, 29 + "email": { 30 + "type": "string" 31 + }, 32 + "relatedRecords": { 33 + "type": "array", 34 + "items": { 35 + "type": "unknown" 36 + } 37 + }, 38 + "indexedAt": { 39 + "type": "string", 40 + "format": "datetime" 41 + }, 42 + "invitedBy": { 43 + "type": "ref", 44 + "ref": "com.atproto.server.defs#inviteCode" 45 + }, 46 + "invites": { 47 + "type": "array", 48 + "items": { 49 + "type": "ref", 50 + "ref": "com.atproto.server.defs#inviteCode" 51 + } 52 + }, 53 + "invitesDisabled": { 54 + "type": "boolean" 55 + }, 56 + "emailConfirmedAt": { 57 + "type": "string", 58 + "format": "datetime" 59 + }, 60 + "inviteNote": { 61 + "type": "string" 62 + }, 63 + "deactivatedAt": { 64 + "type": "string", 65 + "format": "datetime" 66 + }, 67 + "threatSignatures": { 68 + "type": "array", 69 + "items": { 70 + "type": "ref", 71 + "ref": "#threatSignature" 72 + } 73 + } 74 + } 75 + }, 76 + "repoRef": { 77 + "type": "object", 78 + "required": ["did"], 79 + "properties": { 80 + "did": { 81 + "type": "string", 82 + "format": "did" 83 + } 84 + } 85 + }, 86 + "repoBlobRef": { 87 + "type": "object", 88 + "required": ["did", "cid"], 89 + "properties": { 90 + "did": { 91 + "type": "string", 92 + "format": "did" 93 + }, 94 + "cid": { 95 + "type": "string", 96 + "format": "cid" 97 + }, 98 + "recordUri": { 99 + "type": "string", 100 + "format": "at-uri" 101 + } 102 + } 103 + }, 104 + "threatSignature": { 105 + "type": "object", 106 + "required": ["property", "value"], 107 + "properties": { 108 + "property": { 109 + "type": "string" 110 + }, 111 + "value": { 112 + "type": "string" 113 + } 114 + } 115 + } 116 + } 117 + }
+20
packages/definitions/atproto/lexicons/com/atproto/repo/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.repo.defs", 4 + "defs": { 5 + "commitMeta": { 6 + "type": "object", 7 + "required": ["cid", "rev"], 8 + "properties": { 9 + "cid": { 10 + "type": "string", 11 + "format": "cid" 12 + }, 13 + "rev": { 14 + "type": "string", 15 + "format": "tid" 16 + } 17 + } 18 + } 19 + } 20 + }
+57
packages/definitions/atproto/lexicons/com/atproto/server/checkAccountStatus.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.server.checkAccountStatus", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Returns the status of an account, especially as pertaining to import or recovery. Can be called many times over the course of an account migration. Requires auth and can only be called pertaining to oneself.", 8 + "output": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": [ 13 + "activated", 14 + "validDid", 15 + "repoCommit", 16 + "repoRev", 17 + "repoBlocks", 18 + "indexedRecords", 19 + "privateStateValues", 20 + "expectedBlobs", 21 + "importedBlobs" 22 + ], 23 + "properties": { 24 + "activated": { 25 + "type": "boolean" 26 + }, 27 + "validDid": { 28 + "type": "boolean" 29 + }, 30 + "repoCommit": { 31 + "type": "string", 32 + "format": "cid" 33 + }, 34 + "repoRev": { 35 + "type": "string" 36 + }, 37 + "repoBlocks": { 38 + "type": "integer" 39 + }, 40 + "indexedRecords": { 41 + "type": "integer" 42 + }, 43 + "privateStateValues": { 44 + "type": "integer" 45 + }, 46 + "expectedBlobs": { 47 + "type": "integer" 48 + }, 49 + "importedBlobs": { 50 + "type": "integer" 51 + } 52 + } 53 + } 54 + } 55 + } 56 + } 57 + }
+52
packages/definitions/atproto/lexicons/com/atproto/server/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.server.defs", 4 + "defs": { 5 + "inviteCode": { 6 + "type": "object", 7 + "required": ["code", "available", "disabled", "forAccount", "createdBy", "createdAt", "uses"], 8 + "properties": { 9 + "code": { 10 + "type": "string" 11 + }, 12 + "available": { 13 + "type": "integer" 14 + }, 15 + "disabled": { 16 + "type": "boolean" 17 + }, 18 + "forAccount": { 19 + "type": "string" 20 + }, 21 + "createdBy": { 22 + "type": "string" 23 + }, 24 + "createdAt": { 25 + "type": "string", 26 + "format": "datetime" 27 + }, 28 + "uses": { 29 + "type": "array", 30 + "items": { 31 + "type": "ref", 32 + "ref": "#inviteCodeUse" 33 + } 34 + } 35 + } 36 + }, 37 + "inviteCodeUse": { 38 + "type": "object", 39 + "required": ["usedBy", "usedAt"], 40 + "properties": { 41 + "usedBy": { 42 + "type": "string", 43 + "format": "did" 44 + }, 45 + "usedAt": { 46 + "type": "string", 47 + "format": "datetime" 48 + } 49 + } 50 + } 51 + } 52 + }
+49
packages/definitions/atproto/lexicons/com/atproto/server/refreshSession.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "com.atproto.server.refreshSession", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').", 8 + "output": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["accessJwt", "refreshJwt", "handle", "did"], 13 + "properties": { 14 + "accessJwt": { 15 + "type": "string" 16 + }, 17 + "refreshJwt": { 18 + "type": "string" 19 + }, 20 + "handle": { 21 + "type": "string", 22 + "format": "handle" 23 + }, 24 + "did": { 25 + "type": "string", 26 + "format": "did" 27 + }, 28 + "didDoc": { 29 + "type": "unknown" 30 + }, 31 + "active": { 32 + "type": "boolean" 33 + }, 34 + "status": { 35 + "type": "string", 36 + "description": "Hosting status of the account. If not specified, then assume 'active'.", 37 + "knownValues": ["takendown", "suspended", "deactivated"] 38 + } 39 + } 40 + } 41 + }, 42 + "errors": [ 43 + { 44 + "name": "AccountTakedown" 45 + } 46 + ] 47 + } 48 + } 49 + }
+1
packages/definitions/atproto/package.json
··· 24 24 }, 25 25 "scripts": { 26 26 "build": "tsc", 27 + "pull": "lex-cli pull -c ./lex.config.js", 27 28 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 28 29 "prepublish": "rm -rf dist; pnpm run build" 29 30 },
+13 -1
packages/definitions/bluemoji/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/bluemoji/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 imports: ['@atcute/atproto', '@atcute/bluesky'], 7 + 8 + // pull: { 9 + // outdir: 'lexicons/', 10 + // clean: true, 11 + // sources: [ 12 + // { 13 + // type: 'git', 14 + // remote: 'https://github.com/aendra-rininsland/bluemoji.git', 15 + // pattern: ['schema/**/*.json'], 16 + // }, 17 + // ], 18 + // }, 7 19 });
+13 -1
packages/definitions/bluesky/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/bluesky/app/bsky/**/*.json', '../../../lexdocs/bluesky/chat/bsky/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 imports: ['@atcute/atproto'], 7 + 8 + pull: { 9 + outdir: 'lexicons/', 10 + clean: true, 11 + sources: [ 12 + { 13 + type: 'git', 14 + remote: 'https://github.com/bluesky-social/atproto.git', 15 + pattern: ['lexicons/app/bsky/**/*.json', 'lexicons/chat/bsky/**/*.json'], 16 + }, 17 + ], 18 + }, 7 19 });
+6
packages/definitions/bluesky/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/bluesky-social/atproto.git 6 + - commit: 0748d919d127d68ee8c8aeb130b477e3dd5a9be6
+29
packages/definitions/bluesky/lexicons/app/bsky/feed/like.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.like", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "Record declaring a 'like' of a piece of subject content.", 8 + "key": "tid", 9 + "record": { 10 + "type": "object", 11 + "required": ["subject", "createdAt"], 12 + "properties": { 13 + "subject": { 14 + "type": "ref", 15 + "ref": "com.atproto.repo.strongRef" 16 + }, 17 + "createdAt": { 18 + "type": "string", 19 + "format": "datetime" 20 + }, 21 + "via": { 22 + "type": "ref", 23 + "ref": "com.atproto.repo.strongRef" 24 + } 25 + } 26 + } 27 + } 28 + } 29 + }
+29
packages/definitions/bluesky/lexicons/app/bsky/feed/repost.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.feed.repost", 4 + "defs": { 5 + "main": { 6 + "description": "Record representing a 'repost' of an existing Bluesky post.", 7 + "type": "record", 8 + "key": "tid", 9 + "record": { 10 + "type": "object", 11 + "required": ["subject", "createdAt"], 12 + "properties": { 13 + "subject": { 14 + "type": "ref", 15 + "ref": "com.atproto.repo.strongRef" 16 + }, 17 + "createdAt": { 18 + "type": "string", 19 + "format": "datetime" 20 + }, 21 + "via": { 22 + "type": "ref", 23 + "ref": "com.atproto.repo.strongRef" 24 + } 25 + } 26 + } 27 + } 28 + } 29 + }
+300
packages/definitions/bluesky/lexicons/app/bsky/graph/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.graph.defs", 4 + "defs": { 5 + "listViewBasic": { 6 + "type": "object", 7 + "required": ["uri", "cid", "name", "purpose"], 8 + "properties": { 9 + "uri": { 10 + "type": "string", 11 + "format": "at-uri" 12 + }, 13 + "cid": { 14 + "type": "string", 15 + "format": "cid" 16 + }, 17 + "name": { 18 + "type": "string", 19 + "maxLength": 64, 20 + "minLength": 1 21 + }, 22 + "purpose": { 23 + "type": "ref", 24 + "ref": "#listPurpose" 25 + }, 26 + "avatar": { 27 + "type": "string", 28 + "format": "uri" 29 + }, 30 + "listItemCount": { 31 + "type": "integer", 32 + "minimum": 0 33 + }, 34 + "labels": { 35 + "type": "array", 36 + "items": { 37 + "type": "ref", 38 + "ref": "com.atproto.label.defs#label" 39 + } 40 + }, 41 + "viewer": { 42 + "type": "ref", 43 + "ref": "#listViewerState" 44 + }, 45 + "indexedAt": { 46 + "type": "string", 47 + "format": "datetime" 48 + } 49 + } 50 + }, 51 + "listView": { 52 + "type": "object", 53 + "required": ["uri", "cid", "creator", "name", "purpose", "indexedAt"], 54 + "properties": { 55 + "uri": { 56 + "type": "string", 57 + "format": "at-uri" 58 + }, 59 + "cid": { 60 + "type": "string", 61 + "format": "cid" 62 + }, 63 + "creator": { 64 + "type": "ref", 65 + "ref": "app.bsky.actor.defs#profileView" 66 + }, 67 + "name": { 68 + "type": "string", 69 + "maxLength": 64, 70 + "minLength": 1 71 + }, 72 + "purpose": { 73 + "type": "ref", 74 + "ref": "#listPurpose" 75 + }, 76 + "description": { 77 + "type": "string", 78 + "maxGraphemes": 300, 79 + "maxLength": 3000 80 + }, 81 + "descriptionFacets": { 82 + "type": "array", 83 + "items": { 84 + "type": "ref", 85 + "ref": "app.bsky.richtext.facet" 86 + } 87 + }, 88 + "avatar": { 89 + "type": "string", 90 + "format": "uri" 91 + }, 92 + "listItemCount": { 93 + "type": "integer", 94 + "minimum": 0 95 + }, 96 + "labels": { 97 + "type": "array", 98 + "items": { 99 + "type": "ref", 100 + "ref": "com.atproto.label.defs#label" 101 + } 102 + }, 103 + "viewer": { 104 + "type": "ref", 105 + "ref": "#listViewerState" 106 + }, 107 + "indexedAt": { 108 + "type": "string", 109 + "format": "datetime" 110 + } 111 + } 112 + }, 113 + "listItemView": { 114 + "type": "object", 115 + "required": ["uri", "subject"], 116 + "properties": { 117 + "uri": { 118 + "type": "string", 119 + "format": "at-uri" 120 + }, 121 + "subject": { 122 + "type": "ref", 123 + "ref": "app.bsky.actor.defs#profileView" 124 + } 125 + } 126 + }, 127 + "starterPackView": { 128 + "type": "object", 129 + "required": ["uri", "cid", "record", "creator", "indexedAt"], 130 + "properties": { 131 + "uri": { 132 + "type": "string", 133 + "format": "at-uri" 134 + }, 135 + "cid": { 136 + "type": "string", 137 + "format": "cid" 138 + }, 139 + "record": { 140 + "type": "unknown" 141 + }, 142 + "creator": { 143 + "type": "ref", 144 + "ref": "app.bsky.actor.defs#profileViewBasic" 145 + }, 146 + "list": { 147 + "type": "ref", 148 + "ref": "#listViewBasic" 149 + }, 150 + "listItemsSample": { 151 + "type": "array", 152 + "maxLength": 12, 153 + "items": { 154 + "type": "ref", 155 + "ref": "#listItemView" 156 + } 157 + }, 158 + "feeds": { 159 + "type": "array", 160 + "maxLength": 3, 161 + "items": { 162 + "type": "ref", 163 + "ref": "app.bsky.feed.defs#generatorView" 164 + } 165 + }, 166 + "joinedWeekCount": { 167 + "type": "integer", 168 + "minimum": 0 169 + }, 170 + "joinedAllTimeCount": { 171 + "type": "integer", 172 + "minimum": 0 173 + }, 174 + "labels": { 175 + "type": "array", 176 + "items": { 177 + "type": "ref", 178 + "ref": "com.atproto.label.defs#label" 179 + } 180 + }, 181 + "indexedAt": { 182 + "type": "string", 183 + "format": "datetime" 184 + } 185 + } 186 + }, 187 + "starterPackViewBasic": { 188 + "type": "object", 189 + "required": ["uri", "cid", "record", "creator", "indexedAt"], 190 + "properties": { 191 + "uri": { 192 + "type": "string", 193 + "format": "at-uri" 194 + }, 195 + "cid": { 196 + "type": "string", 197 + "format": "cid" 198 + }, 199 + "record": { 200 + "type": "unknown" 201 + }, 202 + "creator": { 203 + "type": "ref", 204 + "ref": "app.bsky.actor.defs#profileViewBasic" 205 + }, 206 + "listItemCount": { 207 + "type": "integer", 208 + "minimum": 0 209 + }, 210 + "joinedWeekCount": { 211 + "type": "integer", 212 + "minimum": 0 213 + }, 214 + "joinedAllTimeCount": { 215 + "type": "integer", 216 + "minimum": 0 217 + }, 218 + "labels": { 219 + "type": "array", 220 + "items": { 221 + "type": "ref", 222 + "ref": "com.atproto.label.defs#label" 223 + } 224 + }, 225 + "indexedAt": { 226 + "type": "string", 227 + "format": "datetime" 228 + } 229 + } 230 + }, 231 + "listPurpose": { 232 + "type": "string", 233 + "knownValues": [ 234 + "app.bsky.graph.defs#modlist", 235 + "app.bsky.graph.defs#curatelist", 236 + "app.bsky.graph.defs#referencelist" 237 + ] 238 + }, 239 + "modlist": { 240 + "type": "token", 241 + "description": "A list of actors to apply an aggregate moderation action (mute/block) on." 242 + }, 243 + "curatelist": { 244 + "type": "token", 245 + "description": "A list of actors used for curation purposes such as list feeds or interaction gating." 246 + }, 247 + "referencelist": { 248 + "type": "token", 249 + "description": "A list of actors used for only for reference purposes such as within a starter pack." 250 + }, 251 + "listViewerState": { 252 + "type": "object", 253 + "properties": { 254 + "muted": { 255 + "type": "boolean" 256 + }, 257 + "blocked": { 258 + "type": "string", 259 + "format": "at-uri" 260 + } 261 + } 262 + }, 263 + "notFoundActor": { 264 + "type": "object", 265 + "description": "indicates that a handle or DID could not be resolved", 266 + "required": ["actor", "notFound"], 267 + "properties": { 268 + "actor": { 269 + "type": "string", 270 + "format": "at-identifier" 271 + }, 272 + "notFound": { 273 + "type": "boolean", 274 + "const": true 275 + } 276 + } 277 + }, 278 + "relationship": { 279 + "type": "object", 280 + "description": "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)", 281 + "required": ["did"], 282 + "properties": { 283 + "did": { 284 + "type": "string", 285 + "format": "did" 286 + }, 287 + "following": { 288 + "type": "string", 289 + "format": "at-uri", 290 + "description": "if the actor follows this DID, this is the AT-URI of the follow record" 291 + }, 292 + "followedBy": { 293 + "type": "string", 294 + "format": "at-uri", 295 + "description": "if the actor is followed by this DID, contains the AT-URI of the follow record" 296 + } 297 + } 298 + } 299 + } 300 + }
+150
packages/definitions/bluesky/lexicons/app/bsky/notification/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.notification.defs", 4 + "defs": { 5 + "recordDeleted": { 6 + "type": "object", 7 + "properties": {} 8 + }, 9 + "chatPreference": { 10 + "type": "object", 11 + "required": ["include", "push"], 12 + "properties": { 13 + "include": { 14 + "type": "string", 15 + "knownValues": ["all", "accepted"] 16 + }, 17 + "push": { 18 + "type": "boolean" 19 + } 20 + } 21 + }, 22 + "filterablePreference": { 23 + "type": "object", 24 + "required": ["include", "list", "push"], 25 + "properties": { 26 + "include": { 27 + "type": "string", 28 + "knownValues": ["all", "follows"] 29 + }, 30 + "list": { 31 + "type": "boolean" 32 + }, 33 + "push": { 34 + "type": "boolean" 35 + } 36 + } 37 + }, 38 + "preference": { 39 + "type": "object", 40 + "required": ["list", "push"], 41 + "properties": { 42 + "list": { 43 + "type": "boolean" 44 + }, 45 + "push": { 46 + "type": "boolean" 47 + } 48 + } 49 + }, 50 + "preferences": { 51 + "type": "object", 52 + "required": [ 53 + "chat", 54 + "follow", 55 + "like", 56 + "likeViaRepost", 57 + "mention", 58 + "quote", 59 + "reply", 60 + "repost", 61 + "repostViaRepost", 62 + "starterpackJoined", 63 + "subscribedPost", 64 + "unverified", 65 + "verified" 66 + ], 67 + "properties": { 68 + "chat": { 69 + "type": "ref", 70 + "ref": "#chatPreference" 71 + }, 72 + "follow": { 73 + "type": "ref", 74 + "ref": "#filterablePreference" 75 + }, 76 + "like": { 77 + "type": "ref", 78 + "ref": "#filterablePreference" 79 + }, 80 + "likeViaRepost": { 81 + "type": "ref", 82 + "ref": "#filterablePreference" 83 + }, 84 + "mention": { 85 + "type": "ref", 86 + "ref": "#filterablePreference" 87 + }, 88 + "quote": { 89 + "type": "ref", 90 + "ref": "#filterablePreference" 91 + }, 92 + "reply": { 93 + "type": "ref", 94 + "ref": "#filterablePreference" 95 + }, 96 + "repost": { 97 + "type": "ref", 98 + "ref": "#filterablePreference" 99 + }, 100 + "repostViaRepost": { 101 + "type": "ref", 102 + "ref": "#filterablePreference" 103 + }, 104 + "starterpackJoined": { 105 + "type": "ref", 106 + "ref": "#preference" 107 + }, 108 + "subscribedPost": { 109 + "type": "ref", 110 + "ref": "#preference" 111 + }, 112 + "unverified": { 113 + "type": "ref", 114 + "ref": "#preference" 115 + }, 116 + "verified": { 117 + "type": "ref", 118 + "ref": "#preference" 119 + } 120 + } 121 + }, 122 + "activitySubscription": { 123 + "type": "object", 124 + "required": ["post", "reply"], 125 + "properties": { 126 + "post": { 127 + "type": "boolean" 128 + }, 129 + "reply": { 130 + "type": "boolean" 131 + } 132 + } 133 + }, 134 + "subjectActivitySubscription": { 135 + "description": "Object used to store activity subscription data in stash.", 136 + "type": "object", 137 + "required": ["subject", "activitySubscription"], 138 + "properties": { 139 + "subject": { 140 + "type": "string", 141 + "format": "did" 142 + }, 143 + "activitySubscription": { 144 + "type": "ref", 145 + "ref": "#activitySubscription" 146 + } 147 + } 148 + } 149 + } 150 + }
+34
packages/definitions/bluesky/lexicons/app/bsky/video/getUploadLimits.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.video.getUploadLimits", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get video upload limits for the authenticated user.", 8 + "output": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["canUpload"], 13 + "properties": { 14 + "canUpload": { 15 + "type": "boolean" 16 + }, 17 + "remainingDailyVideos": { 18 + "type": "integer" 19 + }, 20 + "remainingDailyBytes": { 21 + "type": "integer" 22 + }, 23 + "message": { 24 + "type": "string" 25 + }, 26 + "error": { 27 + "type": "string" 28 + } 29 + } 30 + } 31 + } 32 + } 33 + } 34 + }
+58
packages/definitions/bluesky/lexicons/chat/bsky/moderation/getActorMetadata.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "chat.bsky.moderation.getActorMetadata", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "parameters": { 8 + "type": "params", 9 + "required": ["actor"], 10 + "properties": { 11 + "actor": { 12 + "type": "string", 13 + "format": "did" 14 + } 15 + } 16 + }, 17 + "output": { 18 + "encoding": "application/json", 19 + "schema": { 20 + "type": "object", 21 + "required": ["day", "month", "all"], 22 + "properties": { 23 + "day": { 24 + "type": "ref", 25 + "ref": "#metadata" 26 + }, 27 + "month": { 28 + "type": "ref", 29 + "ref": "#metadata" 30 + }, 31 + "all": { 32 + "type": "ref", 33 + "ref": "#metadata" 34 + } 35 + } 36 + } 37 + } 38 + }, 39 + "metadata": { 40 + "type": "object", 41 + "required": ["messagesSent", "messagesReceived", "convos", "convosStarted"], 42 + "properties": { 43 + "messagesSent": { 44 + "type": "integer" 45 + }, 46 + "messagesReceived": { 47 + "type": "integer" 48 + }, 49 + "convos": { 50 + "type": "integer" 51 + }, 52 + "convosStarted": { 53 + "type": "integer" 54 + } 55 + } 56 + } 57 + } 58 + }
+1
packages/definitions/bluesky/package.json
··· 26 26 }, 27 27 "scripts": { 28 28 "build": "tsc --project tsconfig.build.json", 29 + "pull": "lex-cli pull -c ./lex.config.js", 29 30 "test": "vitest", 30 31 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 31 32 "prepublish": "rm -rf dist; pnpm run build"
+13 -1
packages/definitions/frontpage/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/frontpage/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 imports: ['@atcute/atproto'], 7 + 8 + pull: { 9 + outdir: 'lexicons/', 10 + clean: true, 11 + sources: [ 12 + { 13 + type: 'git', 14 + remote: 'https://github.com/frontpagefyi/frontpage.git', 15 + pattern: ['lexicons/**/*.json', '!lexicons/com/atproto/**'], 16 + }, 17 + ], 18 + }, 7 19 });
+6
packages/definitions/frontpage/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/frontpagefyi/frontpage.git 6 + - commit: b8c3431c11f009d381a89f89c254c34f9e0e342c
+39
packages/definitions/frontpage/lexicons/fyi/frontpage/feed/comment.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fyi.frontpage.feed.comment", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "Record containing a Frontpage comment.", 8 + "key": "tid", 9 + "record": { 10 + "type": "object", 11 + "required": ["createdAt", "post", "blocks"], 12 + "properties": { 13 + "blocks": { 14 + "type": "array", 15 + "maxLength": 200, 16 + "description": "The content of the comment. Note, there are additional constraints placed on the total size of the content within the Frontpage AppView that are not possible to express in lexicon. Generally a comment can have a maximum length of 10,000 graphemes, the Frontpage AppView will enforce this limit.", 17 + "items": { 18 + "type": "ref", 19 + "ref": "fyi.frontpage.richtext.block" 20 + } 21 + }, 22 + "createdAt": { 23 + "type": "string", 24 + "format": "datetime", 25 + "description": "Client-declared timestamp when this comment was originally created." 26 + }, 27 + "parent": { 28 + "type": "ref", 29 + "ref": "com.atproto.repo.strongRef" 30 + }, 31 + "post": { 32 + "type": "ref", 33 + "ref": "com.atproto.repo.strongRef" 34 + } 35 + } 36 + } 37 + } 38 + } 39 + }
+43
packages/definitions/frontpage/lexicons/fyi/frontpage/feed/post.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fyi.frontpage.feed.post", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "Record containing a Frontpage post.", 8 + "key": "tid", 9 + "record": { 10 + "type": "object", 11 + "required": ["title", "createdAt", "subject"], 12 + "properties": { 13 + "title": { 14 + "type": "string", 15 + "maxLength": 3000, 16 + "maxGraphemes": 300, 17 + "description": "The title of the post." 18 + }, 19 + "subject": { 20 + "type": "union", 21 + "description": "The piece of content that this Frontpage post is about.", 22 + "refs": ["#urlSubject"] 23 + }, 24 + "createdAt": { 25 + "type": "string", 26 + "format": "datetime", 27 + "description": "Client-declared timestamp when this post was originally created." 28 + } 29 + } 30 + } 31 + }, 32 + "urlSubject": { 33 + "type": "object", 34 + "required": ["url"], 35 + "properties": { 36 + "url": { 37 + "type": "string", 38 + "format": "uri" 39 + } 40 + } 41 + } 42 + } 43 + }
+27
packages/definitions/frontpage/lexicons/fyi/frontpage/feed/vote.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fyi.frontpage.feed.vote", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "Record containing a Frontpage vote.", 8 + "key": "tid", 9 + "record": { 10 + "type": "object", 11 + "required": ["subject", "createdAt"], 12 + "properties": { 13 + "subject": { 14 + "type": "ref", 15 + "description": "The post or comment that this Frontpage vote is for.", 16 + "ref": "com.atproto.repo.strongRef" 17 + }, 18 + "createdAt": { 19 + "type": "string", 20 + "format": "datetime", 21 + "description": "Client-declared timestamp when this vote was originally created." 22 + } 23 + } 24 + } 25 + } 26 + } 27 + }
+27
packages/definitions/frontpage/lexicons/fyi/frontpage/richtext/block.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fyi.frontpage.richtext.block", 4 + "defs": { 5 + "main": { 6 + "type": "object", 7 + "required": ["content"], 8 + "properties": { 9 + "content": { 10 + "type": "union", 11 + "refs": ["#plaintextParagraph"] 12 + } 13 + } 14 + }, 15 + "plaintextParagraph": { 16 + "type": "object", 17 + "required": ["text"], 18 + "properties": { 19 + "text": { 20 + "type": "string", 21 + "maxLength": 100000, 22 + "maxGraphemes": 10000 23 + } 24 + } 25 + } 26 + } 27 + }
+4
packages/definitions/frontpage/lib/lexicons/index.ts
··· 1 + export * as FyiFrontpageFeedComment from './types/fyi/frontpage/feed/comment.js'; 2 + export * as FyiFrontpageFeedPost from './types/fyi/frontpage/feed/post.js'; 3 + export * as FyiFrontpageFeedVote from './types/fyi/frontpage/feed/vote.js'; 4 + export * as FyiFrontpageRichtextBlock from './types/fyi/frontpage/richtext/block.js'; 1 5 export * as FyiUnravelFrontpageComment from './types/fyi/unravel/frontpage/comment.js'; 2 6 export * as FyiUnravelFrontpagePost from './types/fyi/unravel/frontpage/post.js'; 3 7 export * as FyiUnravelFrontpageVote from './types/fyi/unravel/frontpage/vote.js';
+45
packages/definitions/frontpage/lib/lexicons/types/fyi/frontpage/feed/comment.ts
··· 1 + import type {} from '@atcute/lexicons'; 2 + import * as v from '@atcute/lexicons/validations'; 3 + import type {} from '@atcute/lexicons/ambient'; 4 + import * as ComAtprotoRepoStrongRef from '@atcute/atproto/types/repo/strongRef'; 5 + import * as FyiFrontpageRichtextBlock from '../richtext/block.js'; 6 + 7 + const _mainSchema = /*#__PURE__*/ v.record( 8 + /*#__PURE__*/ v.tidString(), 9 + /*#__PURE__*/ v.object({ 10 + $type: /*#__PURE__*/ v.literal('fyi.frontpage.feed.comment'), 11 + /** 12 + * The content of the comment. Note, there are additional constraints placed on the total size of the content within the Frontpage AppView that are not possible to express in lexicon. Generally a comment can have a maximum length of 10,000 graphemes, the Frontpage AppView will enforce this limit. 13 + * @maxLength 200 14 + */ 15 + get blocks() { 16 + return /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.array(FyiFrontpageRichtextBlock.mainSchema), [ 17 + /*#__PURE__*/ v.arrayLength(0, 200), 18 + ]); 19 + }, 20 + /** 21 + * Client-declared timestamp when this comment was originally created. 22 + */ 23 + createdAt: /*#__PURE__*/ v.datetimeString(), 24 + get parent() { 25 + return /*#__PURE__*/ v.optional(ComAtprotoRepoStrongRef.mainSchema); 26 + }, 27 + get post() { 28 + return ComAtprotoRepoStrongRef.mainSchema; 29 + }, 30 + }), 31 + ); 32 + 33 + type main$schematype = typeof _mainSchema; 34 + 35 + export interface mainSchema extends main$schematype {} 36 + 37 + export const mainSchema = _mainSchema as mainSchema; 38 + 39 + export interface Main extends v.InferInput<typeof mainSchema> {} 40 + 41 + declare module '@atcute/lexicons/ambient' { 42 + interface Records { 43 + 'fyi.frontpage.feed.comment': mainSchema; 44 + } 45 + }
+51
packages/definitions/frontpage/lib/lexicons/types/fyi/frontpage/feed/post.ts
··· 1 + import type {} from '@atcute/lexicons'; 2 + import * as v from '@atcute/lexicons/validations'; 3 + import type {} from '@atcute/lexicons/ambient'; 4 + 5 + const _mainSchema = /*#__PURE__*/ v.record( 6 + /*#__PURE__*/ v.tidString(), 7 + /*#__PURE__*/ v.object({ 8 + $type: /*#__PURE__*/ v.literal('fyi.frontpage.feed.post'), 9 + /** 10 + * Client-declared timestamp when this post was originally created. 11 + */ 12 + createdAt: /*#__PURE__*/ v.datetimeString(), 13 + /** 14 + * The piece of content that this Frontpage post is about. 15 + */ 16 + get subject() { 17 + return /*#__PURE__*/ v.variant([urlSubjectSchema]); 18 + }, 19 + /** 20 + * The title of the post. 21 + * @maxLength 3000 22 + * @maxGraphemes 300 23 + */ 24 + title: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 25 + /*#__PURE__*/ v.stringLength(0, 3000), 26 + /*#__PURE__*/ v.stringGraphemes(0, 300), 27 + ]), 28 + }), 29 + ); 30 + const _urlSubjectSchema = /*#__PURE__*/ v.object({ 31 + $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('fyi.frontpage.feed.post#urlSubject')), 32 + url: /*#__PURE__*/ v.genericUriString(), 33 + }); 34 + 35 + type main$schematype = typeof _mainSchema; 36 + type urlSubject$schematype = typeof _urlSubjectSchema; 37 + 38 + export interface mainSchema extends main$schematype {} 39 + export interface urlSubjectSchema extends urlSubject$schematype {} 40 + 41 + export const mainSchema = _mainSchema as mainSchema; 42 + export const urlSubjectSchema = _urlSubjectSchema as urlSubjectSchema; 43 + 44 + export interface Main extends v.InferInput<typeof mainSchema> {} 45 + export interface UrlSubject extends v.InferInput<typeof urlSubjectSchema> {} 46 + 47 + declare module '@atcute/lexicons/ambient' { 48 + interface Records { 49 + 'fyi.frontpage.feed.post': mainSchema; 50 + } 51 + }
+35
packages/definitions/frontpage/lib/lexicons/types/fyi/frontpage/feed/vote.ts
··· 1 + import type {} from '@atcute/lexicons'; 2 + import * as v from '@atcute/lexicons/validations'; 3 + import type {} from '@atcute/lexicons/ambient'; 4 + import * as ComAtprotoRepoStrongRef from '@atcute/atproto/types/repo/strongRef'; 5 + 6 + const _mainSchema = /*#__PURE__*/ v.record( 7 + /*#__PURE__*/ v.tidString(), 8 + /*#__PURE__*/ v.object({ 9 + $type: /*#__PURE__*/ v.literal('fyi.frontpage.feed.vote'), 10 + /** 11 + * Client-declared timestamp when this vote was originally created. 12 + */ 13 + createdAt: /*#__PURE__*/ v.datetimeString(), 14 + /** 15 + * The post or comment that this Frontpage vote is for. 16 + */ 17 + get subject() { 18 + return ComAtprotoRepoStrongRef.mainSchema; 19 + }, 20 + }), 21 + ); 22 + 23 + type main$schematype = typeof _mainSchema; 24 + 25 + export interface mainSchema extends main$schematype {} 26 + 27 + export const mainSchema = _mainSchema as mainSchema; 28 + 29 + export interface Main extends v.InferInput<typeof mainSchema> {} 30 + 31 + declare module '@atcute/lexicons/ambient' { 32 + interface Records { 33 + 'fyi.frontpage.feed.vote': mainSchema; 34 + } 35 + }
+32
packages/definitions/frontpage/lib/lexicons/types/fyi/frontpage/richtext/block.ts
··· 1 + import type {} from '@atcute/lexicons'; 2 + import * as v from '@atcute/lexicons/validations'; 3 + 4 + const _mainSchema = /*#__PURE__*/ v.object({ 5 + $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('fyi.frontpage.richtext.block')), 6 + get content() { 7 + return /*#__PURE__*/ v.variant([plaintextParagraphSchema]); 8 + }, 9 + }); 10 + const _plaintextParagraphSchema = /*#__PURE__*/ v.object({ 11 + $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('fyi.frontpage.richtext.block#plaintextParagraph')), 12 + /** 13 + * @maxLength 100000 14 + * @maxGraphemes 10000 15 + */ 16 + text: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 17 + /*#__PURE__*/ v.stringLength(0, 100000), 18 + /*#__PURE__*/ v.stringGraphemes(0, 10000), 19 + ]), 20 + }); 21 + 22 + type main$schematype = typeof _mainSchema; 23 + type plaintextParagraph$schematype = typeof _plaintextParagraphSchema; 24 + 25 + export interface mainSchema extends main$schematype {} 26 + export interface plaintextParagraphSchema extends plaintextParagraph$schematype {} 27 + 28 + export const mainSchema = _mainSchema as mainSchema; 29 + export const plaintextParagraphSchema = _plaintextParagraphSchema as plaintextParagraphSchema; 30 + 31 + export interface Main extends v.InferInput<typeof mainSchema> {} 32 + export interface PlaintextParagraph extends v.InferInput<typeof plaintextParagraphSchema> {}
+7 -2
packages/definitions/frontpage/package.json
··· 21 21 ], 22 22 "exports": { 23 23 ".": "./dist/index.js", 24 - "./types/*": "./dist/lexicons/types/fyi/unravel/frontpage/*.js" 24 + "./types/*": "./dist/lexicons/types/*.js" 25 25 }, 26 26 "scripts": { 27 27 "build": "tsc", 28 + "pull": "lex-cli pull -c ./lex.config.js", 28 29 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 29 30 "prepublish": "rm -rf dist; pnpm run build" 30 31 }, ··· 40 41 "mappings": { 41 42 "fyi.unravel.frontpage.*": { 42 43 "type": "namespace", 43 - "path": "./types/{{nsid_remainder}}" 44 + "path": "./types/{{nsid}}" 45 + }, 46 + "fyi.frontpage.*": { 47 + "type": "namespace", 48 + "path": "./types/{{nsid}}" 44 49 } 45 50 } 46 51 }
+13 -1
packages/definitions/leaflet/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/leaflet/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 imports: ['@atcute/atproto'], 7 + 8 + pull: { 9 + outdir: 'lexicons/', 10 + clean: true, 11 + sources: [ 12 + { 13 + type: 'git', 14 + remote: 'https://github.com/hyperlink-academy/leaflet.git', 15 + pattern: ['lexicons/pub/leaflet/**/*.json'], 16 + }, 17 + ], 18 + }, 7 19 });
+6
packages/definitions/leaflet/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/hyperlink-academy/leaflet.git 6 + - commit: 695201ca99bf5cae29a770d22aaf627d2165d2b8
+1
packages/definitions/leaflet/package.json
··· 25 25 }, 26 26 "scripts": { 27 27 "build": "tsc", 28 + "pull": "lex-cli pull -c ./lex.config.js", 28 29 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 29 30 "prepublish": "rm -rf dist; pnpm run build" 30 31 },
+13 -1
packages/definitions/lexicon-community/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/lexcom/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 imports: ['@atcute/atproto'], 7 + 8 + pull: { 9 + outdir: 'lexicons/', 10 + clean: true, 11 + sources: [ 12 + { 13 + type: 'git', 14 + remote: 'https://github.com/lexicon-community/lexicon.git', 15 + pattern: ['**/*.json'], 16 + }, 17 + ], 18 + }, 7 19 });
+6
packages/definitions/lexicon-community/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/lexicon-community/lexicon.git 6 + - commit: 2bf2cbbfd3058d710f8c468307ef7e003bc22383
+1
packages/definitions/lexicon-community/package.json
··· 20 20 }, 21 21 "scripts": { 22 22 "build": "tsc", 23 + "pull": "lex-cli pull -c ./lex.config.js", 23 24 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 24 25 "prepublish": "rm -rf dist; pnpm run build" 25 26 },
+1 -1
packages/definitions/microcosm/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/microcosm/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 });
+13 -1
packages/definitions/ozone/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/bluesky/tools/ozone/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 imports: ['@atcute/atproto', '@atcute/bluesky'], 7 + 8 + pull: { 9 + outdir: 'lexicons/', 10 + clean: true, 11 + sources: [ 12 + { 13 + type: 'git', 14 + remote: 'https://github.com/bluesky-social/atproto.git', 15 + pattern: ['lexicons/tools/ozone/**/*.json'], 16 + }, 17 + ], 18 + }, 7 19 });
+6
packages/definitions/ozone/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/bluesky-social/atproto.git 6 + - commit: 0748d919d127d68ee8c8aeb130b477e3dd5a9be6
+10
packages/definitions/ozone/lib/lexicons/types/tools/ozone/moderation/defs.ts
··· 181 181 */ 182 182 content: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 183 183 /** 184 + * Indicates whether the email was successfully delivered to the user's inbox. 185 + */ 186 + isDelivered: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.boolean()), 187 + /** 184 188 * Names/Keywords of the policies that necessitated the email. 185 189 * @maxLength 5 186 190 */ ··· 342 346 * When the strike should expire. If not provided, the strike never expires. 343 347 */ 344 348 strikeExpiresAt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.datetimeString()), 349 + /** 350 + * List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services. 351 + */ 352 + targetServices: /*#__PURE__*/ v.optional( 353 + /*#__PURE__*/ v.array(/*#__PURE__*/ v.string<'appview' | 'pds' | (string & {})>()), 354 + ), 345 355 }); 346 356 const _modEventUnmuteSchema = /*#__PURE__*/ v.object({ 347 357 $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('tools.ozone.moderation.defs#modEventUnmute')),
+9 -1
packages/definitions/ozone/lib/lexicons/types/tools/ozone/moderation/queryStatuses.ts
··· 126 126 /** 127 127 * Specify when fetching subjects in a certain state 128 128 */ 129 - reviewState: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 129 + reviewState: /*#__PURE__*/ v.optional( 130 + /*#__PURE__*/ v.string< 131 + | 'tools.ozone.moderation.defs#reviewClosed' 132 + | 'tools.ozone.moderation.defs#reviewEscalated' 133 + | 'tools.ozone.moderation.defs#reviewNone' 134 + | 'tools.ozone.moderation.defs#reviewOpen' 135 + | (string & {}) 136 + >(), 137 + ), 130 138 /** 131 139 * Search subjects reviewed after a given timestamp 132 140 */
+20
packages/definitions/ozone/lib/lexicons/types/tools/ozone/moderation/scheduleAction.ts
··· 83 83 */ 84 84 durationInHours: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()), 85 85 /** 86 + * Email content to be sent to the user upon takedown. 87 + */ 88 + emailContent: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 89 + /** 90 + * Subject of the email to be sent to the user upon takedown. 91 + */ 92 + emailSubject: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 93 + /** 86 94 * Names/Keywords of the policies that drove the decision. 87 95 * @maxLength 5 88 96 */ ··· 91 99 /*#__PURE__*/ v.arrayLength(0, 5), 92 100 ]), 93 101 ), 102 + /** 103 + * Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.). 104 + */ 105 + severityLevel: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 106 + /** 107 + * Number of strikes to assign to the user when takedown is applied. 108 + */ 109 + strikeCount: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()), 110 + /** 111 + * When the strike should expire. If not provided, the strike never expires. 112 + */ 113 + strikeExpiresAt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.datetimeString()), 94 114 }); 95 115 96 116 type failedScheduling$schematype = typeof _failedSchedulingSchema;
+1
packages/definitions/ozone/package.json
··· 26 26 }, 27 27 "scripts": { 28 28 "build": "tsc", 29 + "pull": "lex-cli pull -c ./lex.config.js", 29 30 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 30 31 "prepublish": "rm -rf dist; pnpm run build" 31 32 },
+13 -1
packages/definitions/tangled/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/tangled/**/*.json'], 4 + files: ['lexicons/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 6 imports: ['@atcute/atproto'], 7 + 8 + pull: { 9 + outdir: 'lexicons/', 10 + clean: true, 11 + sources: [ 12 + { 13 + type: 'git', 14 + remote: 'https://github.com/mary-ext/tangled.sh-mirror.git', 15 + pattern: ['lexicons/**/*.json'], 16 + }, 17 + ], 18 + }, 7 19 });
+6
packages/definitions/tangled/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/mary-ext/tangled.sh-mirror.git 6 + - commit: affc138f70d4ff01a7ede27c35b3022a0a8c811c
+1
packages/definitions/tangled/package.json
··· 25 25 }, 26 26 "scripts": { 27 27 "build": "tsc", 28 + "pull": "lex-cli pull -c ./lex.config.js", 28 29 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 29 30 "prepublish": "rm -rf dist; pnpm run build" 30 31 },
+13 -1
packages/definitions/whitewind/lex.config.js
··· 1 1 import { defineLexiconConfig } from '@atcute/lex-cli'; 2 2 3 3 export default defineLexiconConfig({ 4 - files: ['../../../lexdocs/whtwnd/**/*.json'], 4 + files: ['lexicons/com/whtwnd/**/*.json'], 5 5 outdir: 'lib/lexicons/', 6 + 7 + pull: { 8 + outdir: 'lexicons/', 9 + clean: true, 10 + sources: [ 11 + { 12 + type: 'git', 13 + remote: 'https://github.com/whtwnd/whitewind-blog.git', 14 + pattern: ['lexicons/com/whtwnd/**/*.json'], 15 + }, 16 + ], 17 + }, 6 18 });
+6
packages/definitions/whitewind/lexicons/README.md
··· 1 + # lexicon sources 2 + 3 + this directory contains lexicon documents pulled from the following sources: 4 + 5 + - https://github.com/whtwnd/whitewind-blog.git 6 + - commit: 047c8d44b5a13e5b8518823982c486e9e3df50c0
+1
packages/definitions/whitewind/package.json
··· 25 25 }, 26 26 "scripts": { 27 27 "build": "tsc", 28 + "pull": "lex-cli pull -c ./lex.config.js", 28 29 "generate": "rm -r ./lib/lexicons/; lex-cli generate -c ./lex.config.js", 29 30 "prepublish": "rm -rf dist; pnpm run build" 30 31 },
+34
packages/lexicons/lex-cli/README.md
··· 23 23 npm exec lex-cli generate -c ./lex.config.js 24 24 ``` 25 25 26 + ## pulling lexicons 27 + 28 + configure sources to be pulled locally before code generation. pulled files are written using their 29 + nsids (e.g., `app.bsky.feed.post` becomes `app/bsky/feed/post.json`). 30 + 31 + ```ts 32 + // file: lex.config.js 33 + import { defineLexiconConfig } from '@atcute/lex-cli'; 34 + 35 + export default defineLexiconConfig({ 36 + pull: { 37 + outdir: 'lexicons/', 38 + clean: true, 39 + sources: [ 40 + { 41 + type: 'git', 42 + remote: 'https://github.com/bluesky-social/atproto.git', 43 + ref: 'main', 44 + pattern: ['lexicons/**/*.json'], 45 + }, 46 + ], 47 + }, 48 + files: ['lexicons/**/*.json'], 49 + outdir: 'src/lexicons/', 50 + }); 51 + ``` 52 + 53 + pull the lexicons to disk, then generate types from them: 54 + 55 + ``` 56 + npm exec lex-cli pull -c ./lex.config.js 57 + npm exec lex-cli generate -c ./lex.config.js 58 + ``` 59 + 26 60 ## publishing your schemas 27 61 28 62 if you're packaging your generated schemas as a publishable library, add the `atcute:lexicons`
+20 -6
packages/lexicons/lex-cli/src/cli.ts
··· 5 5 6 6 import { object } from '@optique/core/constructs'; 7 7 import { command, constant, option } from '@optique/core/primitives'; 8 + import { or } from '@optique/core/constructs'; 8 9 import { run } from '@optique/run'; 9 10 import { path as pathParser } from '@optique/run/valueparser'; 10 11 import pc from 'picocolors'; ··· 12 13 import { generateLexiconApi, type ImportMapping } from './codegen.js'; 13 14 import { loadConfig } from './config.js'; 14 15 import { packageJsonSchema } from './lexicon-metadata.js'; 16 + import { runPull } from './pull.js'; 15 17 16 18 /** 17 19 * Resolves package imports to ImportMapping[] ··· 116 118 return mappings; 117 119 }; 118 120 119 - const parser = command( 120 - 'generate', 121 - object({ 122 - type: constant('generate'), 123 - config: option('-c', '--config', pathParser({ metavar: 'CONFIG' })), 124 - }), 121 + const parser = or( 122 + command( 123 + 'generate', 124 + object({ 125 + type: constant('generate'), 126 + config: option('-c', '--config', pathParser({ metavar: 'CONFIG' })), 127 + }), 128 + ), 129 + command( 130 + 'pull', 131 + object({ 132 + type: constant('pull'), 133 + config: option('-c', '--config', pathParser({ metavar: 'CONFIG' })), 134 + }), 135 + ), 125 136 ); 126 137 127 138 const result = run(parser, { programName: 'lex-cli' }); ··· 202 213 await fs.mkdir(dirname, { recursive: true }); 203 214 await fs.writeFile(filename, file.code); 204 215 } 216 + } else if (result.type === 'pull') { 217 + const config = await loadConfig(result.config); 218 + await runPull(config); 205 219 }
+36 -27
packages/lexicons/lex-cli/src/config.ts
··· 8 8 9 9 import type { ImportMapping } from './codegen.js'; 10 10 11 + const gitSourceConfigSchema = v.object({ 12 + type: v.literal('git'), 13 + remote: v.string().assert((value) => value.length > 0, `must not be empty`), 14 + ref: v 15 + .string() 16 + .assert((value) => value.length > 0, `must not be empty`) 17 + .optional(), 18 + pattern: v 19 + .array(v.string().assert((value) => value.length > 0, `must not be empty`)) 20 + .assert((value) => value.length > 0, `must include at least one glob pattern`), 21 + }); 22 + 23 + const sourceConfigSchema = v.union(gitSourceConfigSchema); 24 + 25 + const pullConfigSchema = v.object({ 26 + outdir: v.string().assert((value) => value.length > 0, `must not be empty`), 27 + clean: v.boolean().optional(), 28 + sources: v 29 + .array(sourceConfigSchema) 30 + .assert((value) => value.length > 0, `must include at least one source`), 31 + }); 32 + 33 + export type GitSourceConfig = v.Infer<typeof gitSourceConfigSchema>; 34 + export type SourceConfig = v.Infer<typeof sourceConfigSchema>; 35 + export type PullConfig = v.Infer<typeof pullConfigSchema>; 36 + 11 37 const isValidLexiconPattern = (pattern: string): boolean => { 12 38 if (pattern.endsWith('.*')) { 13 39 return isNsid(`${pattern.slice(0, -2)}.x`); ··· 19 45 const mappingImports: v.Type<ImportMapping['imports']> = v.unknown().chain((value) => { 20 46 if (typeof value === 'string') { 21 47 if (value.length === 0) { 22 - return v.err({ message: 'imports must not be empty' }); 48 + return v.err('imports must not be empty'); 23 49 } 24 50 25 51 return v.ok(value); ··· 29 55 return v.ok(value as ImportMapping['imports']); 30 56 } 31 57 32 - return v.err({ message: 'imports must be a string or function' }); 58 + return v.err('imports must be a string or function'); 33 59 }); 34 60 35 61 const importMappingSchema: v.Type<ImportMapping> = v.object({ ··· 37 63 .array( 38 64 v.string().chain((value) => { 39 65 if (!isValidLexiconPattern(value)) { 40 - return v.err({ 41 - message: 'invalid NSID pattern (must be valid NSID or end with .*)', 42 - }); 66 + return v.err(`invalid NSID pattern (must be valid NSID or end with .*)`); 43 67 } 44 68 45 69 return v.ok(value); 46 70 }), 47 71 ) 48 - .assert((patterns) => patterns.length > 0, { 49 - message: 'nsid requires at least one pattern', 50 - }), 72 + .assert((patterns) => patterns.length > 0, `nsid requires at least one pattern`), 51 73 imports: mappingImports, 52 74 }); 53 75 54 76 export const lexiconConfigSchema = v.object({ 55 - outdir: v.string().assert((value) => value.length > 0, { 56 - message: 'outdir must not be empty', 57 - }), 77 + outdir: v.string().assert((value) => value.length > 0, `must not be empty`), 58 78 files: v 59 - .array( 60 - v.string().assert((value) => value.length > 0, { 61 - message: 'files entries must not be empty', 62 - }), 63 - ) 64 - .assert((value) => value.length > 0, { 65 - message: 'files must include at least one pattern', 66 - }), 67 - imports: v 68 - .array( 69 - v.string().assert((value) => value.length > 0, { 70 - message: 'imports entries must not be empty', 71 - }), 72 - ) 73 - .optional(), 79 + .array(v.string().assert((value) => value.length > 0, `must not be empty`)) 80 + .assert((value) => value.length > 0, `must include at least one glob pattern`), 81 + imports: v.array(v.string().assert((value) => value.length > 0, `must not be empty`)).optional(), 74 82 mappings: v.array(importMappingSchema).optional(), 75 83 modules: v 76 84 .object({ 77 85 importSuffix: v 78 86 .string() 79 - .assert((value) => value.length > 0, { message: 'importSuffix must not be empty' }) 87 + .assert((value) => value.length > 0, `must not be empty`) 80 88 .optional(), 81 89 }) 82 90 .partial() 83 91 .optional(), 92 + pull: pullConfigSchema.optional(), 84 93 }); 85 94 86 95 export type LexiconConfig = v.Infer<typeof lexiconConfigSchema>;
+104
packages/lexicons/lex-cli/src/git.ts
··· 1 + import { spawn } from 'node:child_process'; 2 + 3 + export interface GitCommandOptions { 4 + cwd?: string; 5 + env?: NodeJS.ProcessEnv; 6 + stdin?: string; 7 + timeoutMs?: number; 8 + } 9 + 10 + export interface GitResult { 11 + stdout: string; 12 + stderr: string; 13 + } 14 + 15 + export class GitError extends Error { 16 + readonly args: readonly string[]; 17 + readonly code: number | null; 18 + readonly signal: NodeJS.Signals | null; 19 + readonly stdout: string; 20 + readonly stderr: string; 21 + 22 + constructor( 23 + args: readonly string[], 24 + stdout: string, 25 + stderr: string, 26 + code: number | null, 27 + signal: NodeJS.Signals | null, 28 + ) { 29 + const reason = code !== null ? `code ${code}` : `signal ${signal ?? 'unknown'}`; 30 + super(`git ${args.join(' ')} failed with ${reason}`); 31 + 32 + this.name = 'GitError'; 33 + this.args = args; 34 + this.code = code; 35 + this.signal = signal; 36 + this.stdout = stdout; 37 + this.stderr = stderr; 38 + } 39 + } 40 + 41 + /** 42 + * runs git with the provided arguments and throws when the command fails. 43 + * @param args positional arguments for git 44 + * @param options execution options 45 + * @returns stdout and stderr from git 46 + * @throws GitError when git exits with a non-zero status or is terminated 47 + */ 48 + export const runGit = (args: readonly string[], options: GitCommandOptions = {}): Promise<GitResult> => { 49 + return new Promise((resolve, reject) => { 50 + const child = spawn('git', args, { 51 + cwd: options.cwd, 52 + env: options.env, 53 + stdio: ['pipe', 'pipe', 'pipe'], 54 + }); 55 + 56 + let stdout = ''; 57 + let stderr = ''; 58 + 59 + child.stdout?.setEncoding('utf8'); 60 + child.stderr?.setEncoding('utf8'); 61 + 62 + child.stdout?.on('data', (chunk) => { 63 + stdout += chunk; 64 + }); 65 + 66 + child.stderr?.on('data', (chunk) => { 67 + stderr += chunk; 68 + }); 69 + 70 + let timer: NodeJS.Timeout | undefined; 71 + if (options.timeoutMs !== undefined) { 72 + timer = setTimeout(() => { 73 + child.kill('SIGKILL'); 74 + }, options.timeoutMs); 75 + } 76 + 77 + child.on('error', (err) => { 78 + if (timer) { 79 + clearTimeout(timer); 80 + } 81 + 82 + reject(err); 83 + }); 84 + 85 + child.on('close', (code, signal) => { 86 + if (timer) { 87 + clearTimeout(timer); 88 + } 89 + 90 + if (code === 0) { 91 + resolve({ stdout, stderr }); 92 + return; 93 + } 94 + 95 + reject(new GitError(args, stdout, stderr, code, signal)); 96 + }); 97 + 98 + if (options.stdin !== undefined) { 99 + child.stdin?.end(options.stdin); 100 + } else { 101 + child.stdin?.end(); 102 + } 103 + }); 104 + };
+298
packages/lexicons/lex-cli/src/pull.ts
··· 1 + import * as fs from 'node:fs/promises'; 2 + import * as os from 'node:os'; 3 + import * as path from 'node:path'; 4 + 5 + import { lexiconDoc, refineLexiconDoc, type LexiconDoc } from '@atcute/lexicon-doc'; 6 + import prettier from 'prettier'; 7 + import pc from 'picocolors'; 8 + 9 + import { runGit, GitError } from './git.js'; 10 + import type { NormalizedConfig, PullConfig, SourceConfig } from './config.js'; 11 + 12 + interface SourceRevision { 13 + source: SourceConfig; 14 + rev: string; 15 + } 16 + 17 + interface SourceLocation { 18 + absolutePath: string; 19 + relativePath: string; 20 + sourceDescription: string; 21 + } 22 + 23 + interface PulledLexicon { 24 + nsid: string; 25 + doc: LexiconDoc; 26 + location: SourceLocation; 27 + } 28 + 29 + interface PullResult { 30 + pulled: Map<string, PulledLexicon>; 31 + rev: string; 32 + } 33 + 34 + const ensurePullConfig = (config: NormalizedConfig): PullConfig => { 35 + if (!config.pull) { 36 + console.error(pc.bold(pc.red(`pull configuration missing`))); 37 + process.exit(1); 38 + } 39 + 40 + return config.pull; 41 + }; 42 + 43 + const parseLexiconFile = async (loc: SourceLocation): Promise<LexiconDoc> => { 44 + let source: string; 45 + 46 + try { 47 + source = await fs.readFile(loc.absolutePath, 'utf8'); 48 + } catch (err) { 49 + console.error( 50 + pc.bold(pc.red(`file read error for ${loc.relativePath} when pulling ${loc.sourceDescription}`)), 51 + ); 52 + console.error(`found in ${loc.absolutePath}`); 53 + console.error(err); 54 + process.exit(1); 55 + } 56 + 57 + let json: unknown; 58 + try { 59 + json = JSON.parse(source); 60 + } catch (err) { 61 + console.error( 62 + pc.bold(pc.red(`json parse error in ${loc.relativePath} when pulling ${loc.sourceDescription}`)), 63 + ); 64 + console.error(`found in ${loc.absolutePath}`); 65 + console.error(err); 66 + process.exit(1); 67 + } 68 + 69 + const result = lexiconDoc.try(json, { mode: 'passthrough' }); 70 + if (!result.ok) { 71 + console.error( 72 + pc.bold( 73 + pc.red(`schema validation failed for ${loc.relativePath} when pulling ${loc.sourceDescription}`), 74 + ), 75 + ); 76 + console.error(`found in ${loc.absolutePath}`); 77 + console.error(result.message); 78 + 79 + for (const issue of result.issues) { 80 + console.log(`- ${issue.code} at .${issue.path.join('.')}`); 81 + } 82 + 83 + process.exit(1); 84 + } 85 + 86 + const issues = refineLexiconDoc(result.value, true); 87 + if (issues.length > 0) { 88 + console.error( 89 + pc.bold(pc.red(`lint validation failed for ${loc.relativePath} when pulling ${loc.sourceDescription}`)), 90 + ); 91 + console.error(`found in ${loc.absolutePath}`); 92 + 93 + for (const issue of issues) { 94 + console.log(`- ${issue.message} at .${issue.path.join('.')}`); 95 + } 96 + 97 + process.exit(1); 98 + } 99 + 100 + return result.value; 101 + }; 102 + 103 + const writeLexicon = async ( 104 + outdir: string, 105 + nsid: string, 106 + doc: LexiconDoc, 107 + prettierConfig: prettier.Options | null, 108 + ): Promise<void> => { 109 + const nsidPath = nsid.replaceAll('.', '/'); 110 + const target = path.join(outdir, `${nsidPath}.json`); 111 + const dirname = path.dirname(target); 112 + 113 + const code = await prettier.format(JSON.stringify(doc, null, 2), { 114 + ...(prettierConfig ?? {}), 115 + parser: 'json', 116 + }); 117 + 118 + await fs.mkdir(dirname, { recursive: true }); 119 + await fs.writeFile(target, code); 120 + }; 121 + 122 + /** 123 + * pulls lexicon documents from a git repository source 124 + * @param source git source configuration 125 + * @returns pulled lexicons and commit hash 126 + */ 127 + const pullGitSource = async (source: SourceConfig & { type: 'git' }): Promise<PullResult> => { 128 + const tempParent = await fs.mkdtemp(path.join(os.tmpdir(), 'lex-cli-pull-')); 129 + 130 + const cloneDir = path.join(tempParent, 'repo'); 131 + 132 + try { 133 + await runGit( 134 + [ 135 + 'clone', 136 + '--filter=blob:none', 137 + '--depth', 138 + '1', 139 + '--sparse', 140 + ...(source.ref ? ['--branch', source.ref, '--single-branch'] : []), 141 + source.remote, 142 + cloneDir, 143 + ], 144 + { timeoutMs: 60_000 }, 145 + ); 146 + } catch (err) { 147 + if (err instanceof GitError) { 148 + console.error(pc.bold(pc.red(`git clone failed for ${source.remote}:`))); 149 + console.error(err.stderr || err.message); 150 + process.exit(1); 151 + } 152 + 153 + throw err; 154 + } 155 + 156 + try { 157 + await runGit(['-C', cloneDir, 'sparse-checkout', 'set', '--no-cone', ...source.pattern], { 158 + timeoutMs: 30_000, 159 + }); 160 + } catch (err) { 161 + if (err instanceof GitError) { 162 + console.error(pc.bold(pc.red(`git sparse-checkout failed for ${source.remote}:`))); 163 + console.error(err.stderr || err.message); 164 + process.exit(1); 165 + } 166 + 167 + throw err; 168 + } 169 + 170 + const pulled = new Map<string, PulledLexicon>(); 171 + 172 + for await (const filename of fs.glob(source.pattern, { cwd: cloneDir })) { 173 + const absolute = path.join(cloneDir, filename); 174 + const stat = await fs.stat(absolute); 175 + 176 + if (!stat.isFile()) { 177 + continue; 178 + } 179 + 180 + const location: SourceLocation = { 181 + absolutePath: absolute, 182 + relativePath: filename, 183 + sourceDescription: source.remote, 184 + }; 185 + 186 + const doc = await parseLexiconFile(location); 187 + 188 + pulled.set(doc.id, { nsid: doc.id, doc, location }); 189 + } 190 + 191 + // get the commit hash 192 + let rev: string; 193 + try { 194 + const result = await runGit(['-C', cloneDir, 'rev-parse', 'HEAD'], { timeoutMs: 10_000 }); 195 + rev = result.stdout.trim(); 196 + } catch (err) { 197 + if (err instanceof GitError) { 198 + console.error(pc.bold(pc.red(`git rev-parse failed for ${source.remote}:`))); 199 + console.error(err.stderr || err.message); 200 + process.exit(1); 201 + } 202 + 203 + throw err; 204 + } 205 + 206 + await fs.rm(tempParent, { recursive: true, force: true }); 207 + 208 + return { pulled, rev }; 209 + }; 210 + 211 + const pullSource = async (source: SourceConfig): Promise<PullResult> => { 212 + switch (source.type) { 213 + case 'git': { 214 + return pullGitSource(source); 215 + } 216 + } 217 + }; 218 + 219 + const writeSourceReadme = async ( 220 + outdir: string, 221 + revisions: SourceRevision[], 222 + prettierConfig: prettier.Options | null, 223 + ): Promise<void> => { 224 + const lines = [ 225 + '# lexicon sources', 226 + '', 227 + 'this directory contains lexicon documents pulled from the following sources:', 228 + '', 229 + ]; 230 + 231 + for (const { source, rev } of revisions) { 232 + switch (source.type) { 233 + case 'git': { 234 + lines.push(`- ${source.remote}${source.ref ? ` (ref: ${source.ref})` : ``}`); 235 + lines.push(` - commit: ${rev}`); 236 + break; 237 + } 238 + } 239 + } 240 + 241 + lines.push(''); 242 + 243 + const content = lines.join('\n'); 244 + const formatted = await prettier.format(content, { 245 + ...(prettierConfig ?? {}), 246 + parser: 'markdown', 247 + }); 248 + 249 + await fs.writeFile(path.join(outdir, 'README.md'), formatted); 250 + }; 251 + 252 + /** 253 + * pulls lexicon documents from configured sources and writes them to disk using nsid-based paths. 254 + * @param config normalized lex-cli configuration 255 + */ 256 + export const runPull = async (config: NormalizedConfig): Promise<void> => { 257 + const pullConfig = ensurePullConfig(config); 258 + const outdir = path.resolve(config.root, pullConfig.outdir); 259 + const prettierConfig = await prettier.resolveConfig(config.root, { editorconfig: true }); 260 + 261 + const seen = new Map<string, SourceLocation>(); 262 + const collected: PulledLexicon[] = []; 263 + const sourceRevisions: SourceRevision[] = []; 264 + 265 + for (const source of pullConfig.sources) { 266 + const result = await pullSource(source); 267 + 268 + sourceRevisions.push({ source, rev: result.rev }); 269 + 270 + for (const [nsid, entry] of result.pulled) { 271 + const existing = seen.get(nsid); 272 + 273 + if (existing) { 274 + console.error(pc.bold(pc.red(`duplicate lexicon "${nsid}"`))); 275 + console.error(`- found ${entry.location.relativePath} from ${entry.location.sourceDescription}`); 276 + console.error(` at ${entry.location.absolutePath}`); 277 + console.error(`- already found ${existing.relativePath} from ${existing.sourceDescription}`); 278 + console.error(` at ${existing.absolutePath}`); 279 + process.exit(1); 280 + } 281 + 282 + seen.set(nsid, entry.location); 283 + collected.push(entry); 284 + } 285 + } 286 + 287 + if (pullConfig.clean) { 288 + await fs.rm(outdir, { recursive: true, force: true }); 289 + } 290 + 291 + await fs.mkdir(outdir, { recursive: true }); 292 + 293 + for (const entry of collected) { 294 + await writeLexicon(outdir, entry.nsid, entry.doc, prettierConfig); 295 + } 296 + 297 + await writeSourceReadme(outdir, sourceRevisions, prettierConfig); 298 + };
-96
scripts/pull-bluemoji-lexicons.js
··· 1 - import * as path from 'node:path'; 2 - import * as fs from 'node:fs/promises'; 3 - 4 - import { untar } from '@mary/tar'; 5 - import prettier from 'prettier'; 6 - 7 - const config = { 8 - repo: `aendra-rininsland/bluemoji`, 9 - path: `schema/`, 10 - out: `lexdocs/bluemoji/`, 11 - }; 12 - 13 - async function main() { 14 - const prettierConfig = await prettier.resolveConfig(process.cwd() + '/foo', { editorconfig: true }); 15 - 16 - let sha; 17 - { 18 - console.log(`retrieving latest commit`); 19 - const response = await fetch(`https://api.github.com/repos/${config.repo}/commits?path=${config.path}/`); 20 - 21 - if (!response.ok) { 22 - console.log(` response error ${response.status}`); 23 - return; 24 - } 25 - 26 - const json = await response.json(); 27 - const latest = json[0]; 28 - 29 - if (!latest) { 30 - console.log(` latest commit missing?`); 31 - return; 32 - } 33 - 34 - sha = latest.sha; 35 - console.log(` got ${sha}`); 36 - } 37 - 38 - const tmpdir = `lexicons-tmp/`; 39 - 40 - { 41 - console.log(`retrieving zip file`); 42 - const response = await fetch(`https://github.com/${config.repo}/archive/${sha}.tar.gz`); 43 - 44 - if (!response.ok) { 45 - console.log(` response error ${response.status}`); 46 - return; 47 - } 48 - 49 - const reponame = config.repo.replace(/^.*?\//, ''); 50 - const basename = `${reponame}-${sha}/${config.path}`; 51 - 52 - const ds = new DecompressionStream('gzip'); 53 - const stream = response.body.pipeThrough(ds); 54 - 55 - const promises = []; 56 - 57 - console.log(` reading`); 58 - for await (const entry of untar(stream)) { 59 - if (entry.type === 'file' && entry.name.startsWith(basename) && entry.name.endsWith('.json')) { 60 - const name = entry.name.slice(basename.length); 61 - const basedir = tmpdir + path.dirname(name); 62 - 63 - const code = await entry.text(); 64 - 65 - const promise = (async () => { 66 - const formatted = await prettier.format(code, { ...prettierConfig, parser: 'json' }); 67 - 68 - await fs.mkdir(basedir, { recursive: true }); 69 - await fs.writeFile(tmpdir + name, formatted); 70 - })(); 71 - 72 - promises.push(promise); 73 - } 74 - } 75 - 76 - console.log(` flushing writes`); 77 - await Promise.all(promises); 78 - } 79 - 80 - { 81 - const source = `https://github.com/${config.repo}/tree/${sha}/${config.path}\n`; 82 - 83 - console.log(`writing readme file`); 84 - 85 - await fs.writeFile(tmpdir + `README.md`, source); 86 - } 87 - 88 - { 89 - console.log(`moving folder`); 90 - 91 - await fs.rm(config.out, { recursive: true, force: true }); 92 - await fs.rename(tmpdir, config.out); 93 - } 94 - } 95 - 96 - await main();
-96
scripts/pull-frontpage-lexicons.js
··· 1 - import * as path from 'node:path'; 2 - import * as fs from 'node:fs/promises'; 3 - 4 - import { untar } from '@mary/tar'; 5 - import prettier from 'prettier'; 6 - 7 - const config = { 8 - repo: `likeandscribe/frontpage`, 9 - path: `lexicons/fyi/unravel/frontpage/`, 10 - out: `lexdocs/frontpage/`, 11 - }; 12 - 13 - async function main() { 14 - const prettierConfig = await prettier.resolveConfig(process.cwd() + '/foo', { editorconfig: true }); 15 - 16 - let sha; 17 - { 18 - console.log(`retrieving latest commit`); 19 - const response = await fetch(`https://api.github.com/repos/${config.repo}/commits?path=${config.path}/`); 20 - 21 - if (!response.ok) { 22 - console.log(` response error ${response.status}`); 23 - return; 24 - } 25 - 26 - const json = await response.json(); 27 - const latest = json[0]; 28 - 29 - if (!latest) { 30 - console.log(` latest commit missing?`); 31 - return; 32 - } 33 - 34 - sha = latest.sha; 35 - console.log(` got ${sha}`); 36 - } 37 - 38 - const tmpdir = `lexicons-tmp/`; 39 - 40 - { 41 - console.log(`retrieving zip file`); 42 - const response = await fetch(`https://github.com/${config.repo}/archive/${sha}.tar.gz`); 43 - 44 - if (!response.ok) { 45 - console.log(` response error ${response.status}`); 46 - return; 47 - } 48 - 49 - const reponame = config.repo.replace(/^.*?\//, ''); 50 - const basename = `${reponame}-${sha}/${config.path}`; 51 - 52 - const ds = new DecompressionStream('gzip'); 53 - const stream = response.body.pipeThrough(ds); 54 - 55 - const promises = []; 56 - 57 - console.log(` reading`); 58 - for await (const entry of untar(stream)) { 59 - if (entry.type === 'file' && entry.name.startsWith(basename) && entry.name.endsWith('.json')) { 60 - const name = entry.name.slice(basename.length); 61 - const basedir = tmpdir + path.dirname(name); 62 - 63 - const code = await entry.text(); 64 - 65 - const promise = (async () => { 66 - const formatted = await prettier.format(code, { ...prettierConfig, parser: 'json' }); 67 - 68 - await fs.mkdir(basedir, { recursive: true }); 69 - await fs.writeFile(tmpdir + name, formatted); 70 - })(); 71 - 72 - promises.push(promise); 73 - } 74 - } 75 - 76 - console.log(` flushing writes`); 77 - await Promise.all(promises); 78 - } 79 - 80 - { 81 - const source = `https://github.com/${config.repo}/tree/${sha}/${config.path}\n`; 82 - 83 - console.log(`writing readme file`); 84 - 85 - await fs.writeFile(tmpdir + `README.md`, source); 86 - } 87 - 88 - { 89 - console.log(`moving folder`); 90 - 91 - await fs.rm(config.out, { recursive: true, force: true }); 92 - await fs.rename(tmpdir, config.out); 93 - } 94 - } 95 - 96 - await main();
-96
scripts/pull-leaflet-lexicons.js
··· 1 - import * as path from 'node:path'; 2 - import * as fs from 'node:fs/promises'; 3 - 4 - import { untar } from '@mary/tar'; 5 - import prettier from 'prettier'; 6 - 7 - const config = { 8 - repo: `hyperlink-academy/leaflet`, 9 - path: `lexicons/pub/leaflet/`, 10 - out: `lexdocs/leaflet/`, 11 - }; 12 - 13 - async function main() { 14 - const prettierConfig = await prettier.resolveConfig(process.cwd() + '/foo', { editorconfig: true }); 15 - 16 - let sha; 17 - { 18 - console.log(`retrieving latest commit`); 19 - const response = await fetch(`https://api.github.com/repos/${config.repo}/commits?path=${config.path}/`); 20 - 21 - if (!response.ok) { 22 - console.log(` response error ${response.status}`); 23 - return; 24 - } 25 - 26 - const json = await response.json(); 27 - const latest = json[0]; 28 - 29 - if (!latest) { 30 - console.log(` latest commit missing?`); 31 - return; 32 - } 33 - 34 - sha = latest.sha; 35 - console.log(` got ${sha}`); 36 - } 37 - 38 - const tmpdir = `lexicons-tmp/`; 39 - 40 - { 41 - console.log(`retrieving zip file`); 42 - const response = await fetch(`https://github.com/${config.repo}/archive/${sha}.tar.gz`); 43 - 44 - if (!response.ok) { 45 - console.log(` response error ${response.status}`); 46 - return; 47 - } 48 - 49 - const reponame = config.repo.replace(/^.*?\//, ''); 50 - const basename = `${reponame}-${sha}/${config.path}`; 51 - 52 - const ds = new DecompressionStream('gzip'); 53 - const stream = response.body.pipeThrough(ds); 54 - 55 - const promises = []; 56 - 57 - console.log(` reading`); 58 - for await (const entry of untar(stream)) { 59 - if (entry.type === 'file' && entry.name.startsWith(basename) && entry.name.endsWith('.json')) { 60 - const name = entry.name.slice(basename.length); 61 - const basedir = tmpdir + path.dirname(name); 62 - 63 - const code = await entry.text(); 64 - 65 - const promise = (async () => { 66 - const formatted = await prettier.format(code, { ...prettierConfig, parser: 'json' }); 67 - 68 - await fs.mkdir(basedir, { recursive: true }); 69 - await fs.writeFile(tmpdir + name, formatted); 70 - })(); 71 - 72 - promises.push(promise); 73 - } 74 - } 75 - 76 - console.log(` flushing writes`); 77 - await Promise.all(promises); 78 - } 79 - 80 - { 81 - const source = `https://github.com/${config.repo}/tree/${sha}/${config.path}\n`; 82 - 83 - console.log(`writing readme file`); 84 - 85 - await fs.writeFile(tmpdir + `README.md`, source); 86 - } 87 - 88 - { 89 - console.log(`moving folder`); 90 - 91 - await fs.rm(config.out, { recursive: true, force: true }); 92 - await fs.rename(tmpdir, config.out); 93 - } 94 - } 95 - 96 - await main();
-96
scripts/pull-lexcom-lexicons.js
··· 1 - import * as path from 'node:path'; 2 - import * as fs from 'node:fs/promises'; 3 - 4 - import { untar } from '@mary/tar'; 5 - import prettier from 'prettier'; 6 - 7 - const config = { 8 - repo: `lexicon-community/lexicon`, 9 - path: `community/lexicon/`, 10 - out: `lexdocs/lexcom/`, 11 - }; 12 - 13 - async function main() { 14 - const prettierConfig = await prettier.resolveConfig(process.cwd() + '/foo', { editorconfig: true }); 15 - 16 - let sha; 17 - { 18 - console.log(`retrieving latest commit`); 19 - const response = await fetch(`https://api.github.com/repos/${config.repo}/commits?path=${config.path}/`); 20 - 21 - if (!response.ok) { 22 - console.log(` response error ${response.status}`); 23 - return; 24 - } 25 - 26 - const json = await response.json(); 27 - const latest = json[0]; 28 - 29 - if (!latest) { 30 - console.log(` latest commit missing?`); 31 - return; 32 - } 33 - 34 - sha = latest.sha; 35 - console.log(` got ${sha}`); 36 - } 37 - 38 - const tmpdir = `lexicons-tmp/`; 39 - 40 - { 41 - console.log(`retrieving zip file`); 42 - const response = await fetch(`https://github.com/${config.repo}/archive/${sha}.tar.gz`); 43 - 44 - if (!response.ok) { 45 - console.log(` response error ${response.status}`); 46 - return; 47 - } 48 - 49 - const reponame = config.repo.replace(/^.*?\//, ''); 50 - const basename = `${reponame}-${sha}/${config.path}`; 51 - 52 - const ds = new DecompressionStream('gzip'); 53 - const stream = response.body.pipeThrough(ds); 54 - 55 - const promises = []; 56 - 57 - console.log(` reading`); 58 - for await (const entry of untar(stream)) { 59 - if (entry.type === 'file' && entry.name.startsWith(basename) && entry.name.endsWith('.json')) { 60 - const name = entry.name.slice(basename.length); 61 - const basedir = tmpdir + path.dirname(name); 62 - 63 - const code = await entry.text(); 64 - 65 - const promise = (async () => { 66 - const formatted = await prettier.format(code, { ...prettierConfig, parser: 'json' }); 67 - 68 - await fs.mkdir(basedir, { recursive: true }); 69 - await fs.writeFile(tmpdir + name, formatted); 70 - })(); 71 - 72 - promises.push(promise); 73 - } 74 - } 75 - 76 - console.log(` flushing writes`); 77 - await Promise.all(promises); 78 - } 79 - 80 - { 81 - const source = `https://github.com/${config.repo}/tree/${sha}/${config.path}\n`; 82 - 83 - console.log(`writing readme file`); 84 - 85 - await fs.writeFile(tmpdir + `README.md`, source); 86 - } 87 - 88 - { 89 - console.log(`moving folder`); 90 - 91 - await fs.rm(config.out, { recursive: true, force: true }); 92 - await fs.rename(tmpdir, config.out); 93 - } 94 - } 95 - 96 - await main();
-96
scripts/pull-lexicons.js
··· 1 - import * as path from 'node:path'; 2 - import * as fs from 'node:fs/promises'; 3 - 4 - import { untar } from '@mary/tar'; 5 - import prettier from 'prettier'; 6 - 7 - const config = { 8 - repo: `bluesky-social/atproto`, 9 - path: `lexicons/`, 10 - out: `lexdocs/bluesky/`, 11 - }; 12 - 13 - async function main() { 14 - const prettierConfig = await prettier.resolveConfig(process.cwd() + '/foo', { editorconfig: true }); 15 - 16 - let sha; 17 - { 18 - console.log(`retrieving latest commit`); 19 - const response = await fetch(`https://api.github.com/repos/${config.repo}/commits?path=${config.path}/`); 20 - 21 - if (!response.ok) { 22 - console.log(` response error ${response.status}`); 23 - return; 24 - } 25 - 26 - const json = await response.json(); 27 - const latest = json[0]; 28 - 29 - if (!latest) { 30 - console.log(` latest commit missing?`); 31 - return; 32 - } 33 - 34 - sha = latest.sha; 35 - console.log(` got ${sha}`); 36 - } 37 - 38 - const tmpdir = `lexicons-tmp/`; 39 - 40 - { 41 - console.log(`retrieving zip file`); 42 - const response = await fetch(`https://github.com/${config.repo}/archive/${sha}.tar.gz`); 43 - 44 - if (!response.ok) { 45 - console.log(` response error ${response.status}`); 46 - return; 47 - } 48 - 49 - const reponame = config.repo.replace(/^.*?\//, ''); 50 - const basename = `${reponame}-${sha}/${config.path}`; 51 - 52 - const ds = new DecompressionStream('gzip'); 53 - const stream = response.body.pipeThrough(ds); 54 - 55 - const promises = []; 56 - 57 - console.log(` reading`); 58 - for await (const entry of untar(stream)) { 59 - if (entry.type === 'file' && entry.name.startsWith(basename) && entry.name.endsWith('.json')) { 60 - const name = entry.name.slice(basename.length); 61 - const basedir = tmpdir + path.dirname(name); 62 - 63 - const code = await entry.text(); 64 - 65 - const promise = (async () => { 66 - const formatted = await prettier.format(code, { ...prettierConfig, parser: 'json' }); 67 - 68 - await fs.mkdir(basedir, { recursive: true }); 69 - await fs.writeFile(tmpdir + name, formatted); 70 - })(); 71 - 72 - promises.push(promise); 73 - } 74 - } 75 - 76 - console.log(` flushing writes`); 77 - await Promise.all(promises); 78 - } 79 - 80 - { 81 - const source = `https://github.com/${config.repo}/tree/${sha}/${config.path}\n`; 82 - 83 - console.log(`writing readme file`); 84 - 85 - await fs.writeFile(tmpdir + `README.md`, source); 86 - } 87 - 88 - { 89 - console.log(`moving folder`); 90 - 91 - await fs.rm(config.out, { recursive: true, force: true }); 92 - await fs.rename(tmpdir, config.out); 93 - } 94 - } 95 - 96 - await main();
-96
scripts/pull-tangled-lexicons.js
··· 1 - import * as path from 'node:path'; 2 - import * as fs from 'node:fs/promises'; 3 - 4 - import { untar } from '@mary/tar'; 5 - import prettier from 'prettier'; 6 - 7 - const config = { 8 - repo: `mary-ext/tangled.sh-mirror`, 9 - path: `lexicons/`, 10 - out: `lexdocs/tangled/`, 11 - }; 12 - 13 - async function main() { 14 - const prettierConfig = await prettier.resolveConfig(process.cwd() + '/foo', { editorconfig: true }); 15 - 16 - let sha; 17 - { 18 - console.log(`retrieving latest commit`); 19 - const response = await fetch(`https://api.github.com/repos/${config.repo}/commits?path=${config.path}/`); 20 - 21 - if (!response.ok) { 22 - console.log(` response error ${response.status}`); 23 - return; 24 - } 25 - 26 - const json = await response.json(); 27 - const latest = json[0]; 28 - 29 - if (!latest) { 30 - console.log(` latest commit missing?`); 31 - return; 32 - } 33 - 34 - sha = latest.sha; 35 - console.log(` got ${sha}`); 36 - } 37 - 38 - const tmpdir = `lexicons-tmp/`; 39 - 40 - { 41 - console.log(`retrieving zip file`); 42 - const response = await fetch(`https://github.com/${config.repo}/archive/${sha}.tar.gz`); 43 - 44 - if (!response.ok) { 45 - console.log(` response error ${response.status}`); 46 - return; 47 - } 48 - 49 - const reponame = config.repo.replace(/^.*?\//, ''); 50 - const basename = `${reponame}-${sha}/${config.path}`; 51 - 52 - const ds = new DecompressionStream('gzip'); 53 - const stream = response.body.pipeThrough(ds); 54 - 55 - const promises = []; 56 - 57 - console.log(` reading`); 58 - for await (const entry of untar(stream)) { 59 - if (entry.type === 'file' && entry.name.startsWith(basename) && entry.name.endsWith('.json')) { 60 - const name = entry.name.slice(basename.length); 61 - const basedir = tmpdir + path.dirname(name); 62 - 63 - const code = await entry.text(); 64 - 65 - const promise = (async () => { 66 - const formatted = await prettier.format(code, { ...prettierConfig, parser: 'json' }); 67 - 68 - await fs.mkdir(basedir, { recursive: true }); 69 - await fs.writeFile(tmpdir + name, formatted); 70 - })(); 71 - 72 - promises.push(promise); 73 - } 74 - } 75 - 76 - console.log(` flushing writes`); 77 - await Promise.all(promises); 78 - } 79 - 80 - { 81 - const source = `https://github.com/${config.repo}/tree/${sha}/${config.path}\n`; 82 - 83 - console.log(`writing readme file`); 84 - 85 - await fs.writeFile(tmpdir + `README.md`, source); 86 - } 87 - 88 - { 89 - console.log(`moving folder`); 90 - 91 - await fs.rm(config.out, { recursive: true, force: true }); 92 - await fs.rename(tmpdir, config.out); 93 - } 94 - } 95 - 96 - await main();
-96
scripts/pull-whtwnd-lexicons.js
··· 1 - import * as path from 'node:path'; 2 - import * as fs from 'node:fs/promises'; 3 - 4 - import { untar } from '@mary/tar'; 5 - import prettier from 'prettier'; 6 - 7 - const config = { 8 - repo: `whtwnd/whitewind-blog`, 9 - path: `lexicons/com/whtwnd/`, 10 - out: `lexdocs/whtwnd/`, 11 - }; 12 - 13 - async function main() { 14 - const prettierConfig = await prettier.resolveConfig(process.cwd() + '/foo', { editorconfig: true }); 15 - 16 - let sha; 17 - { 18 - console.log(`retrieving latest commit`); 19 - const response = await fetch(`https://api.github.com/repos/${config.repo}/commits?path=${config.path}/`); 20 - 21 - if (!response.ok) { 22 - console.log(` response error ${response.status}`); 23 - return; 24 - } 25 - 26 - const json = await response.json(); 27 - const latest = json[0]; 28 - 29 - if (!latest) { 30 - console.log(` latest commit missing?`); 31 - return; 32 - } 33 - 34 - sha = latest.sha; 35 - console.log(` got ${sha}`); 36 - } 37 - 38 - const tmpdir = `lexicons-tmp/`; 39 - 40 - { 41 - console.log(`retrieving zip file`); 42 - const response = await fetch(`https://github.com/${config.repo}/archive/${sha}.tar.gz`); 43 - 44 - if (!response.ok) { 45 - console.log(` response error ${response.status}`); 46 - return; 47 - } 48 - 49 - const reponame = config.repo.replace(/^.*?\//, ''); 50 - const basename = `${reponame}-${sha}/${config.path}`; 51 - 52 - const ds = new DecompressionStream('gzip'); 53 - const stream = response.body.pipeThrough(ds); 54 - 55 - const promises = []; 56 - 57 - console.log(` reading`); 58 - for await (const entry of untar(stream)) { 59 - if (entry.type === 'file' && entry.name.startsWith(basename) && entry.name.endsWith('.json')) { 60 - const name = entry.name.slice(basename.length); 61 - const basedir = tmpdir + path.dirname(name); 62 - 63 - const code = await entry.text(); 64 - 65 - const promise = (async () => { 66 - const formatted = await prettier.format(code, { ...prettierConfig, parser: 'json' }); 67 - 68 - await fs.mkdir(basedir, { recursive: true }); 69 - await fs.writeFile(tmpdir + name, formatted); 70 - })(); 71 - 72 - promises.push(promise); 73 - } 74 - } 75 - 76 - console.log(` flushing writes`); 77 - await Promise.all(promises); 78 - } 79 - 80 - { 81 - const source = `https://github.com/${config.repo}/tree/${sha}/${config.path}\n`; 82 - 83 - console.log(`writing readme file`); 84 - 85 - await fs.writeFile(tmpdir + `README.md`, source); 86 - } 87 - 88 - { 89 - console.log(`moving folder`); 90 - 91 - await fs.rm(config.out, { recursive: true, force: true }); 92 - await fs.rename(tmpdir, config.out); 93 - } 94 - } 95 - 96 - await main();