an attempt to make a lightweight, easily self-hostable, scoped bluesky appview
at main 518 kB view raw
1/** 2 * GENERATED CODE - DO NOT MODIFY 3 */ 4import { 5 type LexiconDoc, 6 Lexicons, 7 ValidationError, 8 type ValidationResult, 9} from 'npm:@atproto/lexicon' 10import { type $Typed, is$typed, maybe$typed } from './util.ts' 11 12export const schemaDict = { 13 AppBskyActorDefs: { 14 lexicon: 1, 15 id: 'app.bsky.actor.defs', 16 defs: { 17 profileViewBasic: { 18 type: 'object', 19 required: ['did', 'handle'], 20 properties: { 21 did: { 22 type: 'string', 23 format: 'did', 24 }, 25 handle: { 26 type: 'string', 27 format: 'handle', 28 }, 29 displayName: { 30 type: 'string', 31 maxGraphemes: 64, 32 maxLength: 640, 33 }, 34 avatar: { 35 type: 'string', 36 format: 'uri', 37 }, 38 associated: { 39 type: 'ref', 40 ref: 'lex:app.bsky.actor.defs#profileAssociated', 41 }, 42 viewer: { 43 type: 'ref', 44 ref: 'lex:app.bsky.actor.defs#viewerState', 45 }, 46 labels: { 47 type: 'array', 48 items: { 49 type: 'ref', 50 ref: 'lex:com.atproto.label.defs#label', 51 }, 52 }, 53 createdAt: { 54 type: 'string', 55 format: 'datetime', 56 }, 57 verification: { 58 type: 'ref', 59 ref: 'lex:app.bsky.actor.defs#verificationState', 60 }, 61 status: { 62 type: 'ref', 63 ref: 'lex:app.bsky.actor.defs#statusView', 64 }, 65 }, 66 }, 67 profileView: { 68 type: 'object', 69 required: ['did', 'handle'], 70 properties: { 71 did: { 72 type: 'string', 73 format: 'did', 74 }, 75 handle: { 76 type: 'string', 77 format: 'handle', 78 }, 79 displayName: { 80 type: 'string', 81 maxGraphemes: 64, 82 maxLength: 640, 83 }, 84 description: { 85 type: 'string', 86 maxGraphemes: 256, 87 maxLength: 2560, 88 }, 89 avatar: { 90 type: 'string', 91 format: 'uri', 92 }, 93 associated: { 94 type: 'ref', 95 ref: 'lex:app.bsky.actor.defs#profileAssociated', 96 }, 97 indexedAt: { 98 type: 'string', 99 format: 'datetime', 100 }, 101 createdAt: { 102 type: 'string', 103 format: 'datetime', 104 }, 105 viewer: { 106 type: 'ref', 107 ref: 'lex:app.bsky.actor.defs#viewerState', 108 }, 109 labels: { 110 type: 'array', 111 items: { 112 type: 'ref', 113 ref: 'lex:com.atproto.label.defs#label', 114 }, 115 }, 116 verification: { 117 type: 'ref', 118 ref: 'lex:app.bsky.actor.defs#verificationState', 119 }, 120 status: { 121 type: 'ref', 122 ref: 'lex:app.bsky.actor.defs#statusView', 123 }, 124 }, 125 }, 126 profileViewDetailed: { 127 type: 'object', 128 required: ['did', 'handle'], 129 properties: { 130 did: { 131 type: 'string', 132 format: 'did', 133 }, 134 handle: { 135 type: 'string', 136 format: 'handle', 137 }, 138 displayName: { 139 type: 'string', 140 maxGraphemes: 64, 141 maxLength: 640, 142 }, 143 description: { 144 type: 'string', 145 maxGraphemes: 256, 146 maxLength: 2560, 147 }, 148 avatar: { 149 type: 'string', 150 format: 'uri', 151 }, 152 banner: { 153 type: 'string', 154 format: 'uri', 155 }, 156 followersCount: { 157 type: 'integer', 158 }, 159 followsCount: { 160 type: 'integer', 161 }, 162 postsCount: { 163 type: 'integer', 164 }, 165 associated: { 166 type: 'ref', 167 ref: 'lex:app.bsky.actor.defs#profileAssociated', 168 }, 169 joinedViaStarterPack: { 170 type: 'ref', 171 ref: 'lex:app.bsky.graph.defs#starterPackViewBasic', 172 }, 173 indexedAt: { 174 type: 'string', 175 format: 'datetime', 176 }, 177 createdAt: { 178 type: 'string', 179 format: 'datetime', 180 }, 181 viewer: { 182 type: 'ref', 183 ref: 'lex:app.bsky.actor.defs#viewerState', 184 }, 185 labels: { 186 type: 'array', 187 items: { 188 type: 'ref', 189 ref: 'lex:com.atproto.label.defs#label', 190 }, 191 }, 192 pinnedPost: { 193 type: 'ref', 194 ref: 'lex:com.atproto.repo.strongRef', 195 }, 196 verification: { 197 type: 'ref', 198 ref: 'lex:app.bsky.actor.defs#verificationState', 199 }, 200 status: { 201 type: 'ref', 202 ref: 'lex:app.bsky.actor.defs#statusView', 203 }, 204 }, 205 }, 206 profileAssociated: { 207 type: 'object', 208 properties: { 209 lists: { 210 type: 'integer', 211 }, 212 feedgens: { 213 type: 'integer', 214 }, 215 starterPacks: { 216 type: 'integer', 217 }, 218 labeler: { 219 type: 'boolean', 220 }, 221 chat: { 222 type: 'ref', 223 ref: 'lex:app.bsky.actor.defs#profileAssociatedChat', 224 }, 225 activitySubscription: { 226 type: 'ref', 227 ref: 'lex:app.bsky.actor.defs#profileAssociatedActivitySubscription', 228 }, 229 }, 230 }, 231 profileAssociatedChat: { 232 type: 'object', 233 required: ['allowIncoming'], 234 properties: { 235 allowIncoming: { 236 type: 'string', 237 knownValues: ['all', 'none', 'following'], 238 }, 239 }, 240 }, 241 profileAssociatedActivitySubscription: { 242 type: 'object', 243 required: ['allowSubscriptions'], 244 properties: { 245 allowSubscriptions: { 246 type: 'string', 247 knownValues: ['followers', 'mutuals', 'none'], 248 }, 249 }, 250 }, 251 viewerState: { 252 type: 'object', 253 description: 254 "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.", 255 properties: { 256 muted: { 257 type: 'boolean', 258 }, 259 mutedByList: { 260 type: 'ref', 261 ref: 'lex:app.bsky.graph.defs#listViewBasic', 262 }, 263 blockedBy: { 264 type: 'boolean', 265 }, 266 blocking: { 267 type: 'string', 268 format: 'at-uri', 269 }, 270 blockingByList: { 271 type: 'ref', 272 ref: 'lex:app.bsky.graph.defs#listViewBasic', 273 }, 274 following: { 275 type: 'string', 276 format: 'at-uri', 277 }, 278 followedBy: { 279 type: 'string', 280 format: 'at-uri', 281 }, 282 knownFollowers: { 283 description: 284 'This property is present only in selected cases, as an optimization.', 285 type: 'ref', 286 ref: 'lex:app.bsky.actor.defs#knownFollowers', 287 }, 288 activitySubscription: { 289 description: 290 'This property is present only in selected cases, as an optimization.', 291 type: 'ref', 292 ref: 'lex:app.bsky.notification.defs#activitySubscription', 293 }, 294 }, 295 }, 296 knownFollowers: { 297 type: 'object', 298 description: "The subject's followers whom you also follow", 299 required: ['count', 'followers'], 300 properties: { 301 count: { 302 type: 'integer', 303 }, 304 followers: { 305 type: 'array', 306 minLength: 0, 307 maxLength: 5, 308 items: { 309 type: 'ref', 310 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 311 }, 312 }, 313 }, 314 }, 315 verificationState: { 316 type: 'object', 317 description: 318 'Represents the verification information about the user this object is attached to.', 319 required: ['verifications', 'verifiedStatus', 'trustedVerifierStatus'], 320 properties: { 321 verifications: { 322 type: 'array', 323 description: 324 'All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.', 325 items: { 326 type: 'ref', 327 ref: 'lex:app.bsky.actor.defs#verificationView', 328 }, 329 }, 330 verifiedStatus: { 331 type: 'string', 332 description: "The user's status as a verified account.", 333 knownValues: ['valid', 'invalid', 'none'], 334 }, 335 trustedVerifierStatus: { 336 type: 'string', 337 description: "The user's status as a trusted verifier.", 338 knownValues: ['valid', 'invalid', 'none'], 339 }, 340 }, 341 }, 342 verificationView: { 343 type: 'object', 344 description: 'An individual verification for an associated subject.', 345 required: ['issuer', 'uri', 'isValid', 'createdAt'], 346 properties: { 347 issuer: { 348 type: 'string', 349 description: 'The user who issued this verification.', 350 format: 'did', 351 }, 352 uri: { 353 type: 'string', 354 description: 'The AT-URI of the verification record.', 355 format: 'at-uri', 356 }, 357 isValid: { 358 type: 'boolean', 359 description: 360 'True if the verification passes validation, otherwise false.', 361 }, 362 createdAt: { 363 type: 'string', 364 description: 'Timestamp when the verification was created.', 365 format: 'datetime', 366 }, 367 }, 368 }, 369 preferences: { 370 type: 'array', 371 items: { 372 type: 'union', 373 refs: [ 374 'lex:app.bsky.actor.defs#adultContentPref', 375 'lex:app.bsky.actor.defs#contentLabelPref', 376 'lex:app.bsky.actor.defs#savedFeedsPref', 377 'lex:app.bsky.actor.defs#savedFeedsPrefV2', 378 'lex:app.bsky.actor.defs#personalDetailsPref', 379 'lex:app.bsky.actor.defs#feedViewPref', 380 'lex:app.bsky.actor.defs#threadViewPref', 381 'lex:app.bsky.actor.defs#interestsPref', 382 'lex:app.bsky.actor.defs#mutedWordsPref', 383 'lex:app.bsky.actor.defs#hiddenPostsPref', 384 'lex:app.bsky.actor.defs#bskyAppStatePref', 385 'lex:app.bsky.actor.defs#labelersPref', 386 'lex:app.bsky.actor.defs#postInteractionSettingsPref', 387 'lex:app.bsky.actor.defs#verificationPrefs', 388 ], 389 }, 390 }, 391 adultContentPref: { 392 type: 'object', 393 required: ['enabled'], 394 properties: { 395 enabled: { 396 type: 'boolean', 397 default: false, 398 }, 399 }, 400 }, 401 contentLabelPref: { 402 type: 'object', 403 required: ['label', 'visibility'], 404 properties: { 405 labelerDid: { 406 type: 'string', 407 description: 408 'Which labeler does this preference apply to? If undefined, applies globally.', 409 format: 'did', 410 }, 411 label: { 412 type: 'string', 413 }, 414 visibility: { 415 type: 'string', 416 knownValues: ['ignore', 'show', 'warn', 'hide'], 417 }, 418 }, 419 }, 420 savedFeed: { 421 type: 'object', 422 required: ['id', 'type', 'value', 'pinned'], 423 properties: { 424 id: { 425 type: 'string', 426 }, 427 type: { 428 type: 'string', 429 knownValues: ['feed', 'list', 'timeline'], 430 }, 431 value: { 432 type: 'string', 433 }, 434 pinned: { 435 type: 'boolean', 436 }, 437 }, 438 }, 439 savedFeedsPrefV2: { 440 type: 'object', 441 required: ['items'], 442 properties: { 443 items: { 444 type: 'array', 445 items: { 446 type: 'ref', 447 ref: 'lex:app.bsky.actor.defs#savedFeed', 448 }, 449 }, 450 }, 451 }, 452 savedFeedsPref: { 453 type: 'object', 454 required: ['pinned', 'saved'], 455 properties: { 456 pinned: { 457 type: 'array', 458 items: { 459 type: 'string', 460 format: 'at-uri', 461 }, 462 }, 463 saved: { 464 type: 'array', 465 items: { 466 type: 'string', 467 format: 'at-uri', 468 }, 469 }, 470 timelineIndex: { 471 type: 'integer', 472 }, 473 }, 474 }, 475 personalDetailsPref: { 476 type: 'object', 477 properties: { 478 birthDate: { 479 type: 'string', 480 format: 'datetime', 481 description: 'The birth date of account owner.', 482 }, 483 }, 484 }, 485 feedViewPref: { 486 type: 'object', 487 required: ['feed'], 488 properties: { 489 feed: { 490 type: 'string', 491 description: 492 'The URI of the feed, or an identifier which describes the feed.', 493 }, 494 hideReplies: { 495 type: 'boolean', 496 description: 'Hide replies in the feed.', 497 }, 498 hideRepliesByUnfollowed: { 499 type: 'boolean', 500 description: 501 'Hide replies in the feed if they are not by followed users.', 502 default: true, 503 }, 504 hideRepliesByLikeCount: { 505 type: 'integer', 506 description: 507 'Hide replies in the feed if they do not have this number of likes.', 508 }, 509 hideReposts: { 510 type: 'boolean', 511 description: 'Hide reposts in the feed.', 512 }, 513 hideQuotePosts: { 514 type: 'boolean', 515 description: 'Hide quote posts in the feed.', 516 }, 517 }, 518 }, 519 threadViewPref: { 520 type: 'object', 521 properties: { 522 sort: { 523 type: 'string', 524 description: 'Sorting mode for threads.', 525 knownValues: [ 526 'oldest', 527 'newest', 528 'most-likes', 529 'random', 530 'hotness', 531 ], 532 }, 533 prioritizeFollowedUsers: { 534 type: 'boolean', 535 description: 'Show followed users at the top of all replies.', 536 }, 537 }, 538 }, 539 interestsPref: { 540 type: 'object', 541 required: ['tags'], 542 properties: { 543 tags: { 544 type: 'array', 545 maxLength: 100, 546 items: { 547 type: 'string', 548 maxLength: 640, 549 maxGraphemes: 64, 550 }, 551 description: 552 "A list of tags which describe the account owner's interests gathered during onboarding.", 553 }, 554 }, 555 }, 556 mutedWordTarget: { 557 type: 'string', 558 knownValues: ['content', 'tag'], 559 maxLength: 640, 560 maxGraphemes: 64, 561 }, 562 mutedWord: { 563 type: 'object', 564 description: 'A word that the account owner has muted.', 565 required: ['value', 'targets'], 566 properties: { 567 id: { 568 type: 'string', 569 }, 570 value: { 571 type: 'string', 572 description: 'The muted word itself.', 573 maxLength: 10000, 574 maxGraphemes: 1000, 575 }, 576 targets: { 577 type: 'array', 578 description: 'The intended targets of the muted word.', 579 items: { 580 type: 'ref', 581 ref: 'lex:app.bsky.actor.defs#mutedWordTarget', 582 }, 583 }, 584 actorTarget: { 585 type: 'string', 586 description: 587 'Groups of users to apply the muted word to. If undefined, applies to all users.', 588 knownValues: ['all', 'exclude-following'], 589 default: 'all', 590 }, 591 expiresAt: { 592 type: 'string', 593 format: 'datetime', 594 description: 595 'The date and time at which the muted word will expire and no longer be applied.', 596 }, 597 }, 598 }, 599 mutedWordsPref: { 600 type: 'object', 601 required: ['items'], 602 properties: { 603 items: { 604 type: 'array', 605 items: { 606 type: 'ref', 607 ref: 'lex:app.bsky.actor.defs#mutedWord', 608 }, 609 description: 'A list of words the account owner has muted.', 610 }, 611 }, 612 }, 613 hiddenPostsPref: { 614 type: 'object', 615 required: ['items'], 616 properties: { 617 items: { 618 type: 'array', 619 items: { 620 type: 'string', 621 format: 'at-uri', 622 }, 623 description: 624 'A list of URIs of posts the account owner has hidden.', 625 }, 626 }, 627 }, 628 labelersPref: { 629 type: 'object', 630 required: ['labelers'], 631 properties: { 632 labelers: { 633 type: 'array', 634 items: { 635 type: 'ref', 636 ref: 'lex:app.bsky.actor.defs#labelerPrefItem', 637 }, 638 }, 639 }, 640 }, 641 labelerPrefItem: { 642 type: 'object', 643 required: ['did'], 644 properties: { 645 did: { 646 type: 'string', 647 format: 'did', 648 }, 649 }, 650 }, 651 bskyAppStatePref: { 652 description: 653 "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.", 654 type: 'object', 655 properties: { 656 activeProgressGuide: { 657 type: 'ref', 658 ref: 'lex:app.bsky.actor.defs#bskyAppProgressGuide', 659 }, 660 queuedNudges: { 661 description: 662 'An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.', 663 type: 'array', 664 maxLength: 1000, 665 items: { 666 type: 'string', 667 maxLength: 100, 668 }, 669 }, 670 nuxs: { 671 description: 'Storage for NUXs the user has encountered.', 672 type: 'array', 673 maxLength: 100, 674 items: { 675 type: 'ref', 676 ref: 'lex:app.bsky.actor.defs#nux', 677 }, 678 }, 679 }, 680 }, 681 bskyAppProgressGuide: { 682 description: 683 'If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.', 684 type: 'object', 685 required: ['guide'], 686 properties: { 687 guide: { 688 type: 'string', 689 maxLength: 100, 690 }, 691 }, 692 }, 693 nux: { 694 type: 'object', 695 description: 'A new user experiences (NUX) storage object', 696 required: ['id', 'completed'], 697 properties: { 698 id: { 699 type: 'string', 700 maxLength: 100, 701 }, 702 completed: { 703 type: 'boolean', 704 default: false, 705 }, 706 data: { 707 description: 708 'Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.', 709 type: 'string', 710 maxLength: 3000, 711 maxGraphemes: 300, 712 }, 713 expiresAt: { 714 type: 'string', 715 format: 'datetime', 716 description: 717 'The date and time at which the NUX will expire and should be considered completed.', 718 }, 719 }, 720 }, 721 verificationPrefs: { 722 type: 'object', 723 description: 'Preferences for how verified accounts appear in the app.', 724 required: [], 725 properties: { 726 hideBadges: { 727 description: 728 'Hide the blue check badges for verified accounts and trusted verifiers.', 729 type: 'boolean', 730 default: false, 731 }, 732 }, 733 }, 734 postInteractionSettingsPref: { 735 type: 'object', 736 description: 737 'Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.', 738 required: [], 739 properties: { 740 threadgateAllowRules: { 741 description: 742 'Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.', 743 type: 'array', 744 maxLength: 5, 745 items: { 746 type: 'union', 747 refs: [ 748 'lex:app.bsky.feed.threadgate#mentionRule', 749 'lex:app.bsky.feed.threadgate#followerRule', 750 'lex:app.bsky.feed.threadgate#followingRule', 751 'lex:app.bsky.feed.threadgate#listRule', 752 ], 753 }, 754 }, 755 postgateEmbeddingRules: { 756 description: 757 'Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.', 758 type: 'array', 759 maxLength: 5, 760 items: { 761 type: 'union', 762 refs: ['lex:app.bsky.feed.postgate#disableRule'], 763 }, 764 }, 765 }, 766 }, 767 statusView: { 768 type: 'object', 769 required: ['status', 'record'], 770 properties: { 771 status: { 772 type: 'string', 773 description: 'The status for the account.', 774 knownValues: ['app.bsky.actor.status#live'], 775 }, 776 record: { 777 type: 'unknown', 778 }, 779 embed: { 780 type: 'union', 781 description: 'An optional embed associated with the status.', 782 refs: ['lex:app.bsky.embed.external#view'], 783 }, 784 expiresAt: { 785 type: 'string', 786 description: 787 'The date when this status will expire. The application might choose to no longer return the status after expiration.', 788 format: 'datetime', 789 }, 790 isActive: { 791 type: 'boolean', 792 description: 793 'True if the status is not expired, false if it is expired. Only present if expiration was set.', 794 }, 795 }, 796 }, 797 }, 798 }, 799 AppBskyActorGetPreferences: { 800 lexicon: 1, 801 id: 'app.bsky.actor.getPreferences', 802 defs: { 803 main: { 804 type: 'query', 805 description: 806 'Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth.', 807 parameters: { 808 type: 'params', 809 properties: {}, 810 }, 811 output: { 812 encoding: 'application/json', 813 schema: { 814 type: 'object', 815 required: ['preferences'], 816 properties: { 817 preferences: { 818 type: 'ref', 819 ref: 'lex:app.bsky.actor.defs#preferences', 820 }, 821 }, 822 }, 823 }, 824 }, 825 }, 826 }, 827 AppBskyActorGetProfile: { 828 lexicon: 1, 829 id: 'app.bsky.actor.getProfile', 830 defs: { 831 main: { 832 type: 'query', 833 description: 834 'Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.', 835 parameters: { 836 type: 'params', 837 required: ['actor'], 838 properties: { 839 actor: { 840 type: 'string', 841 format: 'at-identifier', 842 description: 'Handle or DID of account to fetch profile of.', 843 }, 844 }, 845 }, 846 output: { 847 encoding: 'application/json', 848 schema: { 849 type: 'ref', 850 ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 851 }, 852 }, 853 }, 854 }, 855 }, 856 AppBskyActorGetProfiles: { 857 lexicon: 1, 858 id: 'app.bsky.actor.getProfiles', 859 defs: { 860 main: { 861 type: 'query', 862 description: 'Get detailed profile views of multiple actors.', 863 parameters: { 864 type: 'params', 865 required: ['actors'], 866 properties: { 867 actors: { 868 type: 'array', 869 items: { 870 type: 'string', 871 format: 'at-identifier', 872 }, 873 maxLength: 25, 874 }, 875 }, 876 }, 877 output: { 878 encoding: 'application/json', 879 schema: { 880 type: 'object', 881 required: ['profiles'], 882 properties: { 883 profiles: { 884 type: 'array', 885 items: { 886 type: 'ref', 887 ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 888 }, 889 }, 890 }, 891 }, 892 }, 893 }, 894 }, 895 }, 896 AppBskyActorGetSuggestions: { 897 lexicon: 1, 898 id: 'app.bsky.actor.getSuggestions', 899 defs: { 900 main: { 901 type: 'query', 902 description: 903 'Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding.', 904 parameters: { 905 type: 'params', 906 properties: { 907 limit: { 908 type: 'integer', 909 minimum: 1, 910 maximum: 100, 911 default: 50, 912 }, 913 cursor: { 914 type: 'string', 915 }, 916 }, 917 }, 918 output: { 919 encoding: 'application/json', 920 schema: { 921 type: 'object', 922 required: ['actors'], 923 properties: { 924 cursor: { 925 type: 'string', 926 }, 927 actors: { 928 type: 'array', 929 items: { 930 type: 'ref', 931 ref: 'lex:app.bsky.actor.defs#profileView', 932 }, 933 }, 934 recId: { 935 type: 'integer', 936 description: 937 'Snowflake for this recommendation, use when submitting recommendation events.', 938 }, 939 }, 940 }, 941 }, 942 }, 943 }, 944 }, 945 AppBskyActorProfile: { 946 lexicon: 1, 947 id: 'app.bsky.actor.profile', 948 defs: { 949 main: { 950 type: 'record', 951 description: 'A declaration of a Bluesky account profile.', 952 key: 'literal:self', 953 record: { 954 type: 'object', 955 properties: { 956 displayName: { 957 type: 'string', 958 maxGraphemes: 64, 959 maxLength: 640, 960 }, 961 description: { 962 type: 'string', 963 description: 'Free-form profile description text.', 964 maxGraphemes: 256, 965 maxLength: 2560, 966 }, 967 avatar: { 968 type: 'blob', 969 description: 970 "Small image to be displayed next to posts from account. AKA, 'profile picture'", 971 accept: ['image/png', 'image/jpeg'], 972 maxSize: 1000000, 973 }, 974 banner: { 975 type: 'blob', 976 description: 977 'Larger horizontal image to display behind profile view.', 978 accept: ['image/png', 'image/jpeg'], 979 maxSize: 1000000, 980 }, 981 labels: { 982 type: 'union', 983 description: 984 'Self-label values, specific to the Bluesky application, on the overall account.', 985 refs: ['lex:com.atproto.label.defs#selfLabels'], 986 }, 987 joinedViaStarterPack: { 988 type: 'ref', 989 ref: 'lex:com.atproto.repo.strongRef', 990 }, 991 pinnedPost: { 992 type: 'ref', 993 ref: 'lex:com.atproto.repo.strongRef', 994 }, 995 createdAt: { 996 type: 'string', 997 format: 'datetime', 998 }, 999 }, 1000 }, 1001 }, 1002 }, 1003 }, 1004 AppBskyActorPutPreferences: { 1005 lexicon: 1, 1006 id: 'app.bsky.actor.putPreferences', 1007 defs: { 1008 main: { 1009 type: 'procedure', 1010 description: 'Set the private preferences attached to the account.', 1011 input: { 1012 encoding: 'application/json', 1013 schema: { 1014 type: 'object', 1015 required: ['preferences'], 1016 properties: { 1017 preferences: { 1018 type: 'ref', 1019 ref: 'lex:app.bsky.actor.defs#preferences', 1020 }, 1021 }, 1022 }, 1023 }, 1024 }, 1025 }, 1026 }, 1027 AppBskyActorSearchActors: { 1028 lexicon: 1, 1029 id: 'app.bsky.actor.searchActors', 1030 defs: { 1031 main: { 1032 type: 'query', 1033 description: 1034 'Find actors (profiles) matching search criteria. Does not require auth.', 1035 parameters: { 1036 type: 'params', 1037 properties: { 1038 term: { 1039 type: 'string', 1040 description: "DEPRECATED: use 'q' instead.", 1041 }, 1042 q: { 1043 type: 'string', 1044 description: 1045 'Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.', 1046 }, 1047 limit: { 1048 type: 'integer', 1049 minimum: 1, 1050 maximum: 100, 1051 default: 25, 1052 }, 1053 cursor: { 1054 type: 'string', 1055 }, 1056 }, 1057 }, 1058 output: { 1059 encoding: 'application/json', 1060 schema: { 1061 type: 'object', 1062 required: ['actors'], 1063 properties: { 1064 cursor: { 1065 type: 'string', 1066 }, 1067 actors: { 1068 type: 'array', 1069 items: { 1070 type: 'ref', 1071 ref: 'lex:app.bsky.actor.defs#profileView', 1072 }, 1073 }, 1074 }, 1075 }, 1076 }, 1077 }, 1078 }, 1079 }, 1080 AppBskyActorSearchActorsTypeahead: { 1081 lexicon: 1, 1082 id: 'app.bsky.actor.searchActorsTypeahead', 1083 defs: { 1084 main: { 1085 type: 'query', 1086 description: 1087 'Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth.', 1088 parameters: { 1089 type: 'params', 1090 properties: { 1091 term: { 1092 type: 'string', 1093 description: "DEPRECATED: use 'q' instead.", 1094 }, 1095 q: { 1096 type: 'string', 1097 description: 'Search query prefix; not a full query string.', 1098 }, 1099 limit: { 1100 type: 'integer', 1101 minimum: 1, 1102 maximum: 100, 1103 default: 10, 1104 }, 1105 }, 1106 }, 1107 output: { 1108 encoding: 'application/json', 1109 schema: { 1110 type: 'object', 1111 required: ['actors'], 1112 properties: { 1113 actors: { 1114 type: 'array', 1115 items: { 1116 type: 'ref', 1117 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1118 }, 1119 }, 1120 }, 1121 }, 1122 }, 1123 }, 1124 }, 1125 }, 1126 AppBskyActorStatus: { 1127 lexicon: 1, 1128 id: 'app.bsky.actor.status', 1129 defs: { 1130 main: { 1131 type: 'record', 1132 description: 'A declaration of a Bluesky account status.', 1133 key: 'literal:self', 1134 record: { 1135 type: 'object', 1136 required: ['status', 'createdAt'], 1137 properties: { 1138 status: { 1139 type: 'string', 1140 description: 'The status for the account.', 1141 knownValues: ['app.bsky.actor.status#live'], 1142 }, 1143 embed: { 1144 type: 'union', 1145 description: 'An optional embed associated with the status.', 1146 refs: ['lex:app.bsky.embed.external'], 1147 }, 1148 durationMinutes: { 1149 type: 'integer', 1150 description: 1151 'The duration of the status in minutes. Applications can choose to impose minimum and maximum limits.', 1152 minimum: 1, 1153 }, 1154 createdAt: { 1155 type: 'string', 1156 format: 'datetime', 1157 }, 1158 }, 1159 }, 1160 }, 1161 live: { 1162 type: 'token', 1163 description: 1164 'Advertises an account as currently offering live content.', 1165 }, 1166 }, 1167 }, 1168 AppBskyEmbedDefs: { 1169 lexicon: 1, 1170 id: 'app.bsky.embed.defs', 1171 defs: { 1172 aspectRatio: { 1173 type: 'object', 1174 description: 1175 'width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.', 1176 required: ['width', 'height'], 1177 properties: { 1178 width: { 1179 type: 'integer', 1180 minimum: 1, 1181 }, 1182 height: { 1183 type: 'integer', 1184 minimum: 1, 1185 }, 1186 }, 1187 }, 1188 }, 1189 }, 1190 AppBskyEmbedExternal: { 1191 lexicon: 1, 1192 id: 'app.bsky.embed.external', 1193 defs: { 1194 main: { 1195 type: 'object', 1196 description: 1197 "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).", 1198 required: ['external'], 1199 properties: { 1200 external: { 1201 type: 'ref', 1202 ref: 'lex:app.bsky.embed.external#external', 1203 }, 1204 }, 1205 }, 1206 external: { 1207 type: 'object', 1208 required: ['uri', 'title', 'description'], 1209 properties: { 1210 uri: { 1211 type: 'string', 1212 format: 'uri', 1213 }, 1214 title: { 1215 type: 'string', 1216 }, 1217 description: { 1218 type: 'string', 1219 }, 1220 thumb: { 1221 type: 'blob', 1222 accept: ['image/*'], 1223 maxSize: 1000000, 1224 }, 1225 }, 1226 }, 1227 view: { 1228 type: 'object', 1229 required: ['external'], 1230 properties: { 1231 external: { 1232 type: 'ref', 1233 ref: 'lex:app.bsky.embed.external#viewExternal', 1234 }, 1235 }, 1236 }, 1237 viewExternal: { 1238 type: 'object', 1239 required: ['uri', 'title', 'description'], 1240 properties: { 1241 uri: { 1242 type: 'string', 1243 format: 'uri', 1244 }, 1245 title: { 1246 type: 'string', 1247 }, 1248 description: { 1249 type: 'string', 1250 }, 1251 thumb: { 1252 type: 'string', 1253 format: 'uri', 1254 }, 1255 }, 1256 }, 1257 }, 1258 }, 1259 AppBskyEmbedImages: { 1260 lexicon: 1, 1261 id: 'app.bsky.embed.images', 1262 description: 'A set of images embedded in a Bluesky record (eg, a post).', 1263 defs: { 1264 main: { 1265 type: 'object', 1266 required: ['images'], 1267 properties: { 1268 images: { 1269 type: 'array', 1270 items: { 1271 type: 'ref', 1272 ref: 'lex:app.bsky.embed.images#image', 1273 }, 1274 maxLength: 4, 1275 }, 1276 }, 1277 }, 1278 image: { 1279 type: 'object', 1280 required: ['image', 'alt'], 1281 properties: { 1282 image: { 1283 type: 'blob', 1284 accept: ['image/*'], 1285 maxSize: 1000000, 1286 }, 1287 alt: { 1288 type: 'string', 1289 description: 1290 'Alt text description of the image, for accessibility.', 1291 }, 1292 aspectRatio: { 1293 type: 'ref', 1294 ref: 'lex:app.bsky.embed.defs#aspectRatio', 1295 }, 1296 }, 1297 }, 1298 view: { 1299 type: 'object', 1300 required: ['images'], 1301 properties: { 1302 images: { 1303 type: 'array', 1304 items: { 1305 type: 'ref', 1306 ref: 'lex:app.bsky.embed.images#viewImage', 1307 }, 1308 maxLength: 4, 1309 }, 1310 }, 1311 }, 1312 viewImage: { 1313 type: 'object', 1314 required: ['thumb', 'fullsize', 'alt'], 1315 properties: { 1316 thumb: { 1317 type: 'string', 1318 format: 'uri', 1319 description: 1320 'Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.', 1321 }, 1322 fullsize: { 1323 type: 'string', 1324 format: 'uri', 1325 description: 1326 'Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.', 1327 }, 1328 alt: { 1329 type: 'string', 1330 description: 1331 'Alt text description of the image, for accessibility.', 1332 }, 1333 aspectRatio: { 1334 type: 'ref', 1335 ref: 'lex:app.bsky.embed.defs#aspectRatio', 1336 }, 1337 }, 1338 }, 1339 }, 1340 }, 1341 AppBskyEmbedRecord: { 1342 lexicon: 1, 1343 id: 'app.bsky.embed.record', 1344 description: 1345 'A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.', 1346 defs: { 1347 main: { 1348 type: 'object', 1349 required: ['record'], 1350 properties: { 1351 record: { 1352 type: 'ref', 1353 ref: 'lex:com.atproto.repo.strongRef', 1354 }, 1355 }, 1356 }, 1357 view: { 1358 type: 'object', 1359 required: ['record'], 1360 properties: { 1361 record: { 1362 type: 'union', 1363 refs: [ 1364 'lex:app.bsky.embed.record#viewRecord', 1365 'lex:app.bsky.embed.record#viewNotFound', 1366 'lex:app.bsky.embed.record#viewBlocked', 1367 'lex:app.bsky.embed.record#viewDetached', 1368 'lex:app.bsky.feed.defs#generatorView', 1369 'lex:app.bsky.graph.defs#listView', 1370 'lex:app.bsky.labeler.defs#labelerView', 1371 'lex:app.bsky.graph.defs#starterPackViewBasic', 1372 ], 1373 }, 1374 }, 1375 }, 1376 viewRecord: { 1377 type: 'object', 1378 required: ['uri', 'cid', 'author', 'value', 'indexedAt'], 1379 properties: { 1380 uri: { 1381 type: 'string', 1382 format: 'at-uri', 1383 }, 1384 cid: { 1385 type: 'string', 1386 format: 'cid', 1387 }, 1388 author: { 1389 type: 'ref', 1390 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1391 }, 1392 value: { 1393 type: 'unknown', 1394 description: 'The record data itself.', 1395 }, 1396 labels: { 1397 type: 'array', 1398 items: { 1399 type: 'ref', 1400 ref: 'lex:com.atproto.label.defs#label', 1401 }, 1402 }, 1403 replyCount: { 1404 type: 'integer', 1405 }, 1406 repostCount: { 1407 type: 'integer', 1408 }, 1409 likeCount: { 1410 type: 'integer', 1411 }, 1412 quoteCount: { 1413 type: 'integer', 1414 }, 1415 embeds: { 1416 type: 'array', 1417 items: { 1418 type: 'union', 1419 refs: [ 1420 'lex:app.bsky.embed.images#view', 1421 'lex:app.bsky.embed.video#view', 1422 'lex:app.bsky.embed.external#view', 1423 'lex:app.bsky.embed.record#view', 1424 'lex:app.bsky.embed.recordWithMedia#view', 1425 ], 1426 }, 1427 }, 1428 indexedAt: { 1429 type: 'string', 1430 format: 'datetime', 1431 }, 1432 }, 1433 }, 1434 viewNotFound: { 1435 type: 'object', 1436 required: ['uri', 'notFound'], 1437 properties: { 1438 uri: { 1439 type: 'string', 1440 format: 'at-uri', 1441 }, 1442 notFound: { 1443 type: 'boolean', 1444 const: true, 1445 }, 1446 }, 1447 }, 1448 viewBlocked: { 1449 type: 'object', 1450 required: ['uri', 'blocked', 'author'], 1451 properties: { 1452 uri: { 1453 type: 'string', 1454 format: 'at-uri', 1455 }, 1456 blocked: { 1457 type: 'boolean', 1458 const: true, 1459 }, 1460 author: { 1461 type: 'ref', 1462 ref: 'lex:app.bsky.feed.defs#blockedAuthor', 1463 }, 1464 }, 1465 }, 1466 viewDetached: { 1467 type: 'object', 1468 required: ['uri', 'detached'], 1469 properties: { 1470 uri: { 1471 type: 'string', 1472 format: 'at-uri', 1473 }, 1474 detached: { 1475 type: 'boolean', 1476 const: true, 1477 }, 1478 }, 1479 }, 1480 }, 1481 }, 1482 AppBskyEmbedRecordWithMedia: { 1483 lexicon: 1, 1484 id: 'app.bsky.embed.recordWithMedia', 1485 description: 1486 'A representation of a record embedded in a Bluesky record (eg, a post), alongside other compatible embeds. For example, a quote post and image, or a quote post and external URL card.', 1487 defs: { 1488 main: { 1489 type: 'object', 1490 required: ['record', 'media'], 1491 properties: { 1492 record: { 1493 type: 'ref', 1494 ref: 'lex:app.bsky.embed.record', 1495 }, 1496 media: { 1497 type: 'union', 1498 refs: [ 1499 'lex:app.bsky.embed.images', 1500 'lex:app.bsky.embed.video', 1501 'lex:app.bsky.embed.external', 1502 ], 1503 }, 1504 }, 1505 }, 1506 view: { 1507 type: 'object', 1508 required: ['record', 'media'], 1509 properties: { 1510 record: { 1511 type: 'ref', 1512 ref: 'lex:app.bsky.embed.record#view', 1513 }, 1514 media: { 1515 type: 'union', 1516 refs: [ 1517 'lex:app.bsky.embed.images#view', 1518 'lex:app.bsky.embed.video#view', 1519 'lex:app.bsky.embed.external#view', 1520 ], 1521 }, 1522 }, 1523 }, 1524 }, 1525 }, 1526 AppBskyEmbedVideo: { 1527 lexicon: 1, 1528 id: 'app.bsky.embed.video', 1529 description: 'A video embedded in a Bluesky record (eg, a post).', 1530 defs: { 1531 main: { 1532 type: 'object', 1533 required: ['video'], 1534 properties: { 1535 video: { 1536 type: 'blob', 1537 description: 1538 'The mp4 video file. May be up to 100mb, formerly limited to 50mb.', 1539 accept: ['video/mp4'], 1540 maxSize: 100000000, 1541 }, 1542 captions: { 1543 type: 'array', 1544 items: { 1545 type: 'ref', 1546 ref: 'lex:app.bsky.embed.video#caption', 1547 }, 1548 maxLength: 20, 1549 }, 1550 alt: { 1551 type: 'string', 1552 description: 1553 'Alt text description of the video, for accessibility.', 1554 maxGraphemes: 1000, 1555 maxLength: 10000, 1556 }, 1557 aspectRatio: { 1558 type: 'ref', 1559 ref: 'lex:app.bsky.embed.defs#aspectRatio', 1560 }, 1561 }, 1562 }, 1563 caption: { 1564 type: 'object', 1565 required: ['lang', 'file'], 1566 properties: { 1567 lang: { 1568 type: 'string', 1569 format: 'language', 1570 }, 1571 file: { 1572 type: 'blob', 1573 accept: ['text/vtt'], 1574 maxSize: 20000, 1575 }, 1576 }, 1577 }, 1578 view: { 1579 type: 'object', 1580 required: ['cid', 'playlist'], 1581 properties: { 1582 cid: { 1583 type: 'string', 1584 format: 'cid', 1585 }, 1586 playlist: { 1587 type: 'string', 1588 format: 'uri', 1589 }, 1590 thumbnail: { 1591 type: 'string', 1592 format: 'uri', 1593 }, 1594 alt: { 1595 type: 'string', 1596 maxGraphemes: 1000, 1597 maxLength: 10000, 1598 }, 1599 aspectRatio: { 1600 type: 'ref', 1601 ref: 'lex:app.bsky.embed.defs#aspectRatio', 1602 }, 1603 }, 1604 }, 1605 }, 1606 }, 1607 AppBskyFeedDefs: { 1608 lexicon: 1, 1609 id: 'app.bsky.feed.defs', 1610 defs: { 1611 postView: { 1612 type: 'object', 1613 required: ['uri', 'cid', 'author', 'record', 'indexedAt'], 1614 properties: { 1615 uri: { 1616 type: 'string', 1617 format: 'at-uri', 1618 }, 1619 cid: { 1620 type: 'string', 1621 format: 'cid', 1622 }, 1623 author: { 1624 type: 'ref', 1625 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1626 }, 1627 record: { 1628 type: 'unknown', 1629 }, 1630 embed: { 1631 type: 'union', 1632 refs: [ 1633 'lex:app.bsky.embed.images#view', 1634 'lex:app.bsky.embed.video#view', 1635 'lex:app.bsky.embed.external#view', 1636 'lex:app.bsky.embed.record#view', 1637 'lex:app.bsky.embed.recordWithMedia#view', 1638 ], 1639 }, 1640 replyCount: { 1641 type: 'integer', 1642 }, 1643 repostCount: { 1644 type: 'integer', 1645 }, 1646 likeCount: { 1647 type: 'integer', 1648 }, 1649 quoteCount: { 1650 type: 'integer', 1651 }, 1652 indexedAt: { 1653 type: 'string', 1654 format: 'datetime', 1655 }, 1656 viewer: { 1657 type: 'ref', 1658 ref: 'lex:app.bsky.feed.defs#viewerState', 1659 }, 1660 labels: { 1661 type: 'array', 1662 items: { 1663 type: 'ref', 1664 ref: 'lex:com.atproto.label.defs#label', 1665 }, 1666 }, 1667 threadgate: { 1668 type: 'ref', 1669 ref: 'lex:app.bsky.feed.defs#threadgateView', 1670 }, 1671 }, 1672 }, 1673 viewerState: { 1674 type: 'object', 1675 description: 1676 "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.", 1677 properties: { 1678 repost: { 1679 type: 'string', 1680 format: 'at-uri', 1681 }, 1682 like: { 1683 type: 'string', 1684 format: 'at-uri', 1685 }, 1686 threadMuted: { 1687 type: 'boolean', 1688 }, 1689 replyDisabled: { 1690 type: 'boolean', 1691 }, 1692 embeddingDisabled: { 1693 type: 'boolean', 1694 }, 1695 pinned: { 1696 type: 'boolean', 1697 }, 1698 }, 1699 }, 1700 threadContext: { 1701 type: 'object', 1702 description: 1703 'Metadata about this post within the context of the thread it is in.', 1704 properties: { 1705 rootAuthorLike: { 1706 type: 'string', 1707 format: 'at-uri', 1708 }, 1709 }, 1710 }, 1711 feedViewPost: { 1712 type: 'object', 1713 required: ['post'], 1714 properties: { 1715 post: { 1716 type: 'ref', 1717 ref: 'lex:app.bsky.feed.defs#postView', 1718 }, 1719 reply: { 1720 type: 'ref', 1721 ref: 'lex:app.bsky.feed.defs#replyRef', 1722 }, 1723 reason: { 1724 type: 'union', 1725 refs: [ 1726 'lex:app.bsky.feed.defs#reasonRepost', 1727 'lex:app.bsky.feed.defs#reasonPin', 1728 ], 1729 }, 1730 feedContext: { 1731 type: 'string', 1732 description: 1733 'Context provided by feed generator that may be passed back alongside interactions.', 1734 maxLength: 2000, 1735 }, 1736 reqId: { 1737 type: 'string', 1738 description: 1739 'Unique identifier per request that may be passed back alongside interactions.', 1740 maxLength: 100, 1741 }, 1742 }, 1743 }, 1744 replyRef: { 1745 type: 'object', 1746 required: ['root', 'parent'], 1747 properties: { 1748 root: { 1749 type: 'union', 1750 refs: [ 1751 'lex:app.bsky.feed.defs#postView', 1752 'lex:app.bsky.feed.defs#notFoundPost', 1753 'lex:app.bsky.feed.defs#blockedPost', 1754 ], 1755 }, 1756 parent: { 1757 type: 'union', 1758 refs: [ 1759 'lex:app.bsky.feed.defs#postView', 1760 'lex:app.bsky.feed.defs#notFoundPost', 1761 'lex:app.bsky.feed.defs#blockedPost', 1762 ], 1763 }, 1764 grandparentAuthor: { 1765 type: 'ref', 1766 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1767 description: 1768 'When parent is a reply to another post, this is the author of that post.', 1769 }, 1770 }, 1771 }, 1772 reasonRepost: { 1773 type: 'object', 1774 required: ['by', 'indexedAt'], 1775 properties: { 1776 by: { 1777 type: 'ref', 1778 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 1779 }, 1780 uri: { 1781 type: 'string', 1782 format: 'at-uri', 1783 }, 1784 cid: { 1785 type: 'string', 1786 format: 'cid', 1787 }, 1788 indexedAt: { 1789 type: 'string', 1790 format: 'datetime', 1791 }, 1792 }, 1793 }, 1794 reasonPin: { 1795 type: 'object', 1796 properties: {}, 1797 }, 1798 threadViewPost: { 1799 type: 'object', 1800 required: ['post'], 1801 properties: { 1802 post: { 1803 type: 'ref', 1804 ref: 'lex:app.bsky.feed.defs#postView', 1805 }, 1806 parent: { 1807 type: 'union', 1808 refs: [ 1809 'lex:app.bsky.feed.defs#threadViewPost', 1810 'lex:app.bsky.feed.defs#notFoundPost', 1811 'lex:app.bsky.feed.defs#blockedPost', 1812 ], 1813 }, 1814 replies: { 1815 type: 'array', 1816 items: { 1817 type: 'union', 1818 refs: [ 1819 'lex:app.bsky.feed.defs#threadViewPost', 1820 'lex:app.bsky.feed.defs#notFoundPost', 1821 'lex:app.bsky.feed.defs#blockedPost', 1822 ], 1823 }, 1824 }, 1825 threadContext: { 1826 type: 'ref', 1827 ref: 'lex:app.bsky.feed.defs#threadContext', 1828 }, 1829 }, 1830 }, 1831 notFoundPost: { 1832 type: 'object', 1833 required: ['uri', 'notFound'], 1834 properties: { 1835 uri: { 1836 type: 'string', 1837 format: 'at-uri', 1838 }, 1839 notFound: { 1840 type: 'boolean', 1841 const: true, 1842 }, 1843 }, 1844 }, 1845 blockedPost: { 1846 type: 'object', 1847 required: ['uri', 'blocked', 'author'], 1848 properties: { 1849 uri: { 1850 type: 'string', 1851 format: 'at-uri', 1852 }, 1853 blocked: { 1854 type: 'boolean', 1855 const: true, 1856 }, 1857 author: { 1858 type: 'ref', 1859 ref: 'lex:app.bsky.feed.defs#blockedAuthor', 1860 }, 1861 }, 1862 }, 1863 blockedAuthor: { 1864 type: 'object', 1865 required: ['did'], 1866 properties: { 1867 did: { 1868 type: 'string', 1869 format: 'did', 1870 }, 1871 viewer: { 1872 type: 'ref', 1873 ref: 'lex:app.bsky.actor.defs#viewerState', 1874 }, 1875 }, 1876 }, 1877 generatorView: { 1878 type: 'object', 1879 required: ['uri', 'cid', 'did', 'creator', 'displayName', 'indexedAt'], 1880 properties: { 1881 uri: { 1882 type: 'string', 1883 format: 'at-uri', 1884 }, 1885 cid: { 1886 type: 'string', 1887 format: 'cid', 1888 }, 1889 did: { 1890 type: 'string', 1891 format: 'did', 1892 }, 1893 creator: { 1894 type: 'ref', 1895 ref: 'lex:app.bsky.actor.defs#profileView', 1896 }, 1897 displayName: { 1898 type: 'string', 1899 }, 1900 description: { 1901 type: 'string', 1902 maxGraphemes: 300, 1903 maxLength: 3000, 1904 }, 1905 descriptionFacets: { 1906 type: 'array', 1907 items: { 1908 type: 'ref', 1909 ref: 'lex:app.bsky.richtext.facet', 1910 }, 1911 }, 1912 avatar: { 1913 type: 'string', 1914 format: 'uri', 1915 }, 1916 likeCount: { 1917 type: 'integer', 1918 minimum: 0, 1919 }, 1920 acceptsInteractions: { 1921 type: 'boolean', 1922 }, 1923 labels: { 1924 type: 'array', 1925 items: { 1926 type: 'ref', 1927 ref: 'lex:com.atproto.label.defs#label', 1928 }, 1929 }, 1930 viewer: { 1931 type: 'ref', 1932 ref: 'lex:app.bsky.feed.defs#generatorViewerState', 1933 }, 1934 contentMode: { 1935 type: 'string', 1936 knownValues: [ 1937 'app.bsky.feed.defs#contentModeUnspecified', 1938 'app.bsky.feed.defs#contentModeVideo', 1939 ], 1940 }, 1941 indexedAt: { 1942 type: 'string', 1943 format: 'datetime', 1944 }, 1945 }, 1946 }, 1947 generatorViewerState: { 1948 type: 'object', 1949 properties: { 1950 like: { 1951 type: 'string', 1952 format: 'at-uri', 1953 }, 1954 }, 1955 }, 1956 skeletonFeedPost: { 1957 type: 'object', 1958 required: ['post'], 1959 properties: { 1960 post: { 1961 type: 'string', 1962 format: 'at-uri', 1963 }, 1964 reason: { 1965 type: 'union', 1966 refs: [ 1967 'lex:app.bsky.feed.defs#skeletonReasonRepost', 1968 'lex:app.bsky.feed.defs#skeletonReasonPin', 1969 ], 1970 }, 1971 feedContext: { 1972 type: 'string', 1973 description: 1974 'Context that will be passed through to client and may be passed to feed generator back alongside interactions.', 1975 maxLength: 2000, 1976 }, 1977 }, 1978 }, 1979 skeletonReasonRepost: { 1980 type: 'object', 1981 required: ['repost'], 1982 properties: { 1983 repost: { 1984 type: 'string', 1985 format: 'at-uri', 1986 }, 1987 }, 1988 }, 1989 skeletonReasonPin: { 1990 type: 'object', 1991 properties: {}, 1992 }, 1993 threadgateView: { 1994 type: 'object', 1995 properties: { 1996 uri: { 1997 type: 'string', 1998 format: 'at-uri', 1999 }, 2000 cid: { 2001 type: 'string', 2002 format: 'cid', 2003 }, 2004 record: { 2005 type: 'unknown', 2006 }, 2007 lists: { 2008 type: 'array', 2009 items: { 2010 type: 'ref', 2011 ref: 'lex:app.bsky.graph.defs#listViewBasic', 2012 }, 2013 }, 2014 }, 2015 }, 2016 interaction: { 2017 type: 'object', 2018 properties: { 2019 item: { 2020 type: 'string', 2021 format: 'at-uri', 2022 }, 2023 event: { 2024 type: 'string', 2025 knownValues: [ 2026 'app.bsky.feed.defs#requestLess', 2027 'app.bsky.feed.defs#requestMore', 2028 'app.bsky.feed.defs#clickthroughItem', 2029 'app.bsky.feed.defs#clickthroughAuthor', 2030 'app.bsky.feed.defs#clickthroughReposter', 2031 'app.bsky.feed.defs#clickthroughEmbed', 2032 'app.bsky.feed.defs#interactionSeen', 2033 'app.bsky.feed.defs#interactionLike', 2034 'app.bsky.feed.defs#interactionRepost', 2035 'app.bsky.feed.defs#interactionReply', 2036 'app.bsky.feed.defs#interactionQuote', 2037 'app.bsky.feed.defs#interactionShare', 2038 ], 2039 }, 2040 feedContext: { 2041 type: 'string', 2042 description: 2043 'Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.', 2044 maxLength: 2000, 2045 }, 2046 reqId: { 2047 type: 'string', 2048 description: 2049 'Unique identifier per request that may be passed back alongside interactions.', 2050 maxLength: 100, 2051 }, 2052 }, 2053 }, 2054 requestLess: { 2055 type: 'token', 2056 description: 2057 'Request that less content like the given feed item be shown in the feed', 2058 }, 2059 requestMore: { 2060 type: 'token', 2061 description: 2062 'Request that more content like the given feed item be shown in the feed', 2063 }, 2064 clickthroughItem: { 2065 type: 'token', 2066 description: 'User clicked through to the feed item', 2067 }, 2068 clickthroughAuthor: { 2069 type: 'token', 2070 description: 'User clicked through to the author of the feed item', 2071 }, 2072 clickthroughReposter: { 2073 type: 'token', 2074 description: 'User clicked through to the reposter of the feed item', 2075 }, 2076 clickthroughEmbed: { 2077 type: 'token', 2078 description: 2079 'User clicked through to the embedded content of the feed item', 2080 }, 2081 contentModeUnspecified: { 2082 type: 'token', 2083 description: 'Declares the feed generator returns any types of posts.', 2084 }, 2085 contentModeVideo: { 2086 type: 'token', 2087 description: 2088 'Declares the feed generator returns posts containing app.bsky.embed.video embeds.', 2089 }, 2090 interactionSeen: { 2091 type: 'token', 2092 description: 'Feed item was seen by user', 2093 }, 2094 interactionLike: { 2095 type: 'token', 2096 description: 'User liked the feed item', 2097 }, 2098 interactionRepost: { 2099 type: 'token', 2100 description: 'User reposted the feed item', 2101 }, 2102 interactionReply: { 2103 type: 'token', 2104 description: 'User replied to the feed item', 2105 }, 2106 interactionQuote: { 2107 type: 'token', 2108 description: 'User quoted the feed item', 2109 }, 2110 interactionShare: { 2111 type: 'token', 2112 description: 'User shared the feed item', 2113 }, 2114 }, 2115 }, 2116 AppBskyFeedDescribeFeedGenerator: { 2117 lexicon: 1, 2118 id: 'app.bsky.feed.describeFeedGenerator', 2119 defs: { 2120 main: { 2121 type: 'query', 2122 description: 2123 'Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View).', 2124 output: { 2125 encoding: 'application/json', 2126 schema: { 2127 type: 'object', 2128 required: ['did', 'feeds'], 2129 properties: { 2130 did: { 2131 type: 'string', 2132 format: 'did', 2133 }, 2134 feeds: { 2135 type: 'array', 2136 items: { 2137 type: 'ref', 2138 ref: 'lex:app.bsky.feed.describeFeedGenerator#feed', 2139 }, 2140 }, 2141 links: { 2142 type: 'ref', 2143 ref: 'lex:app.bsky.feed.describeFeedGenerator#links', 2144 }, 2145 }, 2146 }, 2147 }, 2148 }, 2149 feed: { 2150 type: 'object', 2151 required: ['uri'], 2152 properties: { 2153 uri: { 2154 type: 'string', 2155 format: 'at-uri', 2156 }, 2157 }, 2158 }, 2159 links: { 2160 type: 'object', 2161 properties: { 2162 privacyPolicy: { 2163 type: 'string', 2164 }, 2165 termsOfService: { 2166 type: 'string', 2167 }, 2168 }, 2169 }, 2170 }, 2171 }, 2172 AppBskyFeedGenerator: { 2173 lexicon: 1, 2174 id: 'app.bsky.feed.generator', 2175 defs: { 2176 main: { 2177 type: 'record', 2178 description: 2179 'Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.', 2180 key: 'any', 2181 record: { 2182 type: 'object', 2183 required: ['did', 'displayName', 'createdAt'], 2184 properties: { 2185 did: { 2186 type: 'string', 2187 format: 'did', 2188 }, 2189 displayName: { 2190 type: 'string', 2191 maxGraphemes: 24, 2192 maxLength: 240, 2193 }, 2194 description: { 2195 type: 'string', 2196 maxGraphemes: 300, 2197 maxLength: 3000, 2198 }, 2199 descriptionFacets: { 2200 type: 'array', 2201 items: { 2202 type: 'ref', 2203 ref: 'lex:app.bsky.richtext.facet', 2204 }, 2205 }, 2206 avatar: { 2207 type: 'blob', 2208 accept: ['image/png', 'image/jpeg'], 2209 maxSize: 1000000, 2210 }, 2211 acceptsInteractions: { 2212 type: 'boolean', 2213 description: 2214 'Declaration that a feed accepts feedback interactions from a client through app.bsky.feed.sendInteractions', 2215 }, 2216 labels: { 2217 type: 'union', 2218 description: 'Self-label values', 2219 refs: ['lex:com.atproto.label.defs#selfLabels'], 2220 }, 2221 contentMode: { 2222 type: 'string', 2223 knownValues: [ 2224 'app.bsky.feed.defs#contentModeUnspecified', 2225 'app.bsky.feed.defs#contentModeVideo', 2226 ], 2227 }, 2228 createdAt: { 2229 type: 'string', 2230 format: 'datetime', 2231 }, 2232 }, 2233 }, 2234 }, 2235 }, 2236 }, 2237 AppBskyFeedGetActorFeeds: { 2238 lexicon: 1, 2239 id: 'app.bsky.feed.getActorFeeds', 2240 defs: { 2241 main: { 2242 type: 'query', 2243 description: 2244 "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).", 2245 parameters: { 2246 type: 'params', 2247 required: ['actor'], 2248 properties: { 2249 actor: { 2250 type: 'string', 2251 format: 'at-identifier', 2252 }, 2253 limit: { 2254 type: 'integer', 2255 minimum: 1, 2256 maximum: 100, 2257 default: 50, 2258 }, 2259 cursor: { 2260 type: 'string', 2261 }, 2262 }, 2263 }, 2264 output: { 2265 encoding: 'application/json', 2266 schema: { 2267 type: 'object', 2268 required: ['feeds'], 2269 properties: { 2270 cursor: { 2271 type: 'string', 2272 }, 2273 feeds: { 2274 type: 'array', 2275 items: { 2276 type: 'ref', 2277 ref: 'lex:app.bsky.feed.defs#generatorView', 2278 }, 2279 }, 2280 }, 2281 }, 2282 }, 2283 }, 2284 }, 2285 }, 2286 AppBskyFeedGetActorLikes: { 2287 lexicon: 1, 2288 id: 'app.bsky.feed.getActorLikes', 2289 defs: { 2290 main: { 2291 type: 'query', 2292 description: 2293 'Get a list of posts liked by an actor. Requires auth, actor must be the requesting account.', 2294 parameters: { 2295 type: 'params', 2296 required: ['actor'], 2297 properties: { 2298 actor: { 2299 type: 'string', 2300 format: 'at-identifier', 2301 }, 2302 limit: { 2303 type: 'integer', 2304 minimum: 1, 2305 maximum: 100, 2306 default: 50, 2307 }, 2308 cursor: { 2309 type: 'string', 2310 }, 2311 }, 2312 }, 2313 output: { 2314 encoding: 'application/json', 2315 schema: { 2316 type: 'object', 2317 required: ['feed'], 2318 properties: { 2319 cursor: { 2320 type: 'string', 2321 }, 2322 feed: { 2323 type: 'array', 2324 items: { 2325 type: 'ref', 2326 ref: 'lex:app.bsky.feed.defs#feedViewPost', 2327 }, 2328 }, 2329 }, 2330 }, 2331 }, 2332 errors: [ 2333 { 2334 name: 'BlockedActor', 2335 }, 2336 { 2337 name: 'BlockedByActor', 2338 }, 2339 ], 2340 }, 2341 }, 2342 }, 2343 AppBskyFeedGetAuthorFeed: { 2344 lexicon: 1, 2345 id: 'app.bsky.feed.getAuthorFeed', 2346 defs: { 2347 main: { 2348 type: 'query', 2349 description: 2350 "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.", 2351 parameters: { 2352 type: 'params', 2353 required: ['actor'], 2354 properties: { 2355 actor: { 2356 type: 'string', 2357 format: 'at-identifier', 2358 }, 2359 limit: { 2360 type: 'integer', 2361 minimum: 1, 2362 maximum: 100, 2363 default: 50, 2364 }, 2365 cursor: { 2366 type: 'string', 2367 }, 2368 filter: { 2369 type: 'string', 2370 description: 2371 'Combinations of post/repost types to include in response.', 2372 knownValues: [ 2373 'posts_with_replies', 2374 'posts_no_replies', 2375 'posts_with_media', 2376 'posts_and_author_threads', 2377 'posts_with_video', 2378 ], 2379 default: 'posts_with_replies', 2380 }, 2381 includePins: { 2382 type: 'boolean', 2383 default: false, 2384 }, 2385 }, 2386 }, 2387 output: { 2388 encoding: 'application/json', 2389 schema: { 2390 type: 'object', 2391 required: ['feed'], 2392 properties: { 2393 cursor: { 2394 type: 'string', 2395 }, 2396 feed: { 2397 type: 'array', 2398 items: { 2399 type: 'ref', 2400 ref: 'lex:app.bsky.feed.defs#feedViewPost', 2401 }, 2402 }, 2403 }, 2404 }, 2405 }, 2406 errors: [ 2407 { 2408 name: 'BlockedActor', 2409 }, 2410 { 2411 name: 'BlockedByActor', 2412 }, 2413 ], 2414 }, 2415 }, 2416 }, 2417 AppBskyFeedGetFeed: { 2418 lexicon: 1, 2419 id: 'app.bsky.feed.getFeed', 2420 defs: { 2421 main: { 2422 type: 'query', 2423 description: 2424 "Get a hydrated feed from an actor's selected feed generator. Implemented by App View.", 2425 parameters: { 2426 type: 'params', 2427 required: ['feed'], 2428 properties: { 2429 feed: { 2430 type: 'string', 2431 format: 'at-uri', 2432 }, 2433 limit: { 2434 type: 'integer', 2435 minimum: 1, 2436 maximum: 100, 2437 default: 50, 2438 }, 2439 cursor: { 2440 type: 'string', 2441 }, 2442 }, 2443 }, 2444 output: { 2445 encoding: 'application/json', 2446 schema: { 2447 type: 'object', 2448 required: ['feed'], 2449 properties: { 2450 cursor: { 2451 type: 'string', 2452 }, 2453 feed: { 2454 type: 'array', 2455 items: { 2456 type: 'ref', 2457 ref: 'lex:app.bsky.feed.defs#feedViewPost', 2458 }, 2459 }, 2460 }, 2461 }, 2462 }, 2463 errors: [ 2464 { 2465 name: 'UnknownFeed', 2466 }, 2467 ], 2468 }, 2469 }, 2470 }, 2471 AppBskyFeedGetFeedGenerator: { 2472 lexicon: 1, 2473 id: 'app.bsky.feed.getFeedGenerator', 2474 defs: { 2475 main: { 2476 type: 'query', 2477 description: 2478 'Get information about a feed generator. Implemented by AppView.', 2479 parameters: { 2480 type: 'params', 2481 required: ['feed'], 2482 properties: { 2483 feed: { 2484 type: 'string', 2485 format: 'at-uri', 2486 description: 'AT-URI of the feed generator record.', 2487 }, 2488 }, 2489 }, 2490 output: { 2491 encoding: 'application/json', 2492 schema: { 2493 type: 'object', 2494 required: ['view', 'isOnline', 'isValid'], 2495 properties: { 2496 view: { 2497 type: 'ref', 2498 ref: 'lex:app.bsky.feed.defs#generatorView', 2499 }, 2500 isOnline: { 2501 type: 'boolean', 2502 description: 2503 'Indicates whether the feed generator service has been online recently, or else seems to be inactive.', 2504 }, 2505 isValid: { 2506 type: 'boolean', 2507 description: 2508 'Indicates whether the feed generator service is compatible with the record declaration.', 2509 }, 2510 }, 2511 }, 2512 }, 2513 }, 2514 }, 2515 }, 2516 AppBskyFeedGetFeedGenerators: { 2517 lexicon: 1, 2518 id: 'app.bsky.feed.getFeedGenerators', 2519 defs: { 2520 main: { 2521 type: 'query', 2522 description: 'Get information about a list of feed generators.', 2523 parameters: { 2524 type: 'params', 2525 required: ['feeds'], 2526 properties: { 2527 feeds: { 2528 type: 'array', 2529 items: { 2530 type: 'string', 2531 format: 'at-uri', 2532 }, 2533 }, 2534 }, 2535 }, 2536 output: { 2537 encoding: 'application/json', 2538 schema: { 2539 type: 'object', 2540 required: ['feeds'], 2541 properties: { 2542 feeds: { 2543 type: 'array', 2544 items: { 2545 type: 'ref', 2546 ref: 'lex:app.bsky.feed.defs#generatorView', 2547 }, 2548 }, 2549 }, 2550 }, 2551 }, 2552 }, 2553 }, 2554 }, 2555 AppBskyFeedGetFeedSkeleton: { 2556 lexicon: 1, 2557 id: 'app.bsky.feed.getFeedSkeleton', 2558 defs: { 2559 main: { 2560 type: 'query', 2561 description: 2562 'Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.', 2563 parameters: { 2564 type: 'params', 2565 required: ['feed'], 2566 properties: { 2567 feed: { 2568 type: 'string', 2569 format: 'at-uri', 2570 description: 2571 'Reference to feed generator record describing the specific feed being requested.', 2572 }, 2573 limit: { 2574 type: 'integer', 2575 minimum: 1, 2576 maximum: 100, 2577 default: 50, 2578 }, 2579 cursor: { 2580 type: 'string', 2581 }, 2582 }, 2583 }, 2584 output: { 2585 encoding: 'application/json', 2586 schema: { 2587 type: 'object', 2588 required: ['feed'], 2589 properties: { 2590 cursor: { 2591 type: 'string', 2592 }, 2593 feed: { 2594 type: 'array', 2595 items: { 2596 type: 'ref', 2597 ref: 'lex:app.bsky.feed.defs#skeletonFeedPost', 2598 }, 2599 }, 2600 reqId: { 2601 type: 'string', 2602 description: 2603 'Unique identifier per request that may be passed back alongside interactions.', 2604 maxLength: 100, 2605 }, 2606 }, 2607 }, 2608 }, 2609 errors: [ 2610 { 2611 name: 'UnknownFeed', 2612 }, 2613 ], 2614 }, 2615 }, 2616 }, 2617 AppBskyFeedGetLikes: { 2618 lexicon: 1, 2619 id: 'app.bsky.feed.getLikes', 2620 defs: { 2621 main: { 2622 type: 'query', 2623 description: 2624 'Get like records which reference a subject (by AT-URI and CID).', 2625 parameters: { 2626 type: 'params', 2627 required: ['uri'], 2628 properties: { 2629 uri: { 2630 type: 'string', 2631 format: 'at-uri', 2632 description: 'AT-URI of the subject (eg, a post record).', 2633 }, 2634 cid: { 2635 type: 'string', 2636 format: 'cid', 2637 description: 2638 'CID of the subject record (aka, specific version of record), to filter likes.', 2639 }, 2640 limit: { 2641 type: 'integer', 2642 minimum: 1, 2643 maximum: 100, 2644 default: 50, 2645 }, 2646 cursor: { 2647 type: 'string', 2648 }, 2649 }, 2650 }, 2651 output: { 2652 encoding: 'application/json', 2653 schema: { 2654 type: 'object', 2655 required: ['uri', 'likes'], 2656 properties: { 2657 uri: { 2658 type: 'string', 2659 format: 'at-uri', 2660 }, 2661 cid: { 2662 type: 'string', 2663 format: 'cid', 2664 }, 2665 cursor: { 2666 type: 'string', 2667 }, 2668 likes: { 2669 type: 'array', 2670 items: { 2671 type: 'ref', 2672 ref: 'lex:app.bsky.feed.getLikes#like', 2673 }, 2674 }, 2675 }, 2676 }, 2677 }, 2678 }, 2679 like: { 2680 type: 'object', 2681 required: ['indexedAt', 'createdAt', 'actor'], 2682 properties: { 2683 indexedAt: { 2684 type: 'string', 2685 format: 'datetime', 2686 }, 2687 createdAt: { 2688 type: 'string', 2689 format: 'datetime', 2690 }, 2691 actor: { 2692 type: 'ref', 2693 ref: 'lex:app.bsky.actor.defs#profileView', 2694 }, 2695 }, 2696 }, 2697 }, 2698 }, 2699 AppBskyFeedGetListFeed: { 2700 lexicon: 1, 2701 id: 'app.bsky.feed.getListFeed', 2702 defs: { 2703 main: { 2704 type: 'query', 2705 description: 2706 'Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.', 2707 parameters: { 2708 type: 'params', 2709 required: ['list'], 2710 properties: { 2711 list: { 2712 type: 'string', 2713 format: 'at-uri', 2714 description: 'Reference (AT-URI) to the list record.', 2715 }, 2716 limit: { 2717 type: 'integer', 2718 minimum: 1, 2719 maximum: 100, 2720 default: 50, 2721 }, 2722 cursor: { 2723 type: 'string', 2724 }, 2725 }, 2726 }, 2727 output: { 2728 encoding: 'application/json', 2729 schema: { 2730 type: 'object', 2731 required: ['feed'], 2732 properties: { 2733 cursor: { 2734 type: 'string', 2735 }, 2736 feed: { 2737 type: 'array', 2738 items: { 2739 type: 'ref', 2740 ref: 'lex:app.bsky.feed.defs#feedViewPost', 2741 }, 2742 }, 2743 }, 2744 }, 2745 }, 2746 errors: [ 2747 { 2748 name: 'UnknownList', 2749 }, 2750 ], 2751 }, 2752 }, 2753 }, 2754 AppBskyFeedGetPostThread: { 2755 lexicon: 1, 2756 id: 'app.bsky.feed.getPostThread', 2757 defs: { 2758 main: { 2759 type: 'query', 2760 description: 2761 'Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.', 2762 parameters: { 2763 type: 'params', 2764 required: ['uri'], 2765 properties: { 2766 uri: { 2767 type: 'string', 2768 format: 'at-uri', 2769 description: 'Reference (AT-URI) to post record.', 2770 }, 2771 depth: { 2772 type: 'integer', 2773 description: 2774 'How many levels of reply depth should be included in response.', 2775 default: 6, 2776 minimum: 0, 2777 maximum: 1000, 2778 }, 2779 parentHeight: { 2780 type: 'integer', 2781 description: 2782 'How many levels of parent (and grandparent, etc) post to include.', 2783 default: 80, 2784 minimum: 0, 2785 maximum: 1000, 2786 }, 2787 }, 2788 }, 2789 output: { 2790 encoding: 'application/json', 2791 schema: { 2792 type: 'object', 2793 required: ['thread'], 2794 properties: { 2795 thread: { 2796 type: 'union', 2797 refs: [ 2798 'lex:app.bsky.feed.defs#threadViewPost', 2799 'lex:app.bsky.feed.defs#notFoundPost', 2800 'lex:app.bsky.feed.defs#blockedPost', 2801 ], 2802 }, 2803 threadgate: { 2804 type: 'ref', 2805 ref: 'lex:app.bsky.feed.defs#threadgateView', 2806 }, 2807 }, 2808 }, 2809 }, 2810 errors: [ 2811 { 2812 name: 'NotFound', 2813 }, 2814 ], 2815 }, 2816 }, 2817 }, 2818 AppBskyFeedGetPosts: { 2819 lexicon: 1, 2820 id: 'app.bsky.feed.getPosts', 2821 defs: { 2822 main: { 2823 type: 'query', 2824 description: 2825 "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.", 2826 parameters: { 2827 type: 'params', 2828 required: ['uris'], 2829 properties: { 2830 uris: { 2831 type: 'array', 2832 description: 'List of post AT-URIs to return hydrated views for.', 2833 items: { 2834 type: 'string', 2835 format: 'at-uri', 2836 }, 2837 maxLength: 25, 2838 }, 2839 }, 2840 }, 2841 output: { 2842 encoding: 'application/json', 2843 schema: { 2844 type: 'object', 2845 required: ['posts'], 2846 properties: { 2847 posts: { 2848 type: 'array', 2849 items: { 2850 type: 'ref', 2851 ref: 'lex:app.bsky.feed.defs#postView', 2852 }, 2853 }, 2854 }, 2855 }, 2856 }, 2857 }, 2858 }, 2859 }, 2860 AppBskyFeedGetQuotes: { 2861 lexicon: 1, 2862 id: 'app.bsky.feed.getQuotes', 2863 defs: { 2864 main: { 2865 type: 'query', 2866 description: 'Get a list of quotes for a given post.', 2867 parameters: { 2868 type: 'params', 2869 required: ['uri'], 2870 properties: { 2871 uri: { 2872 type: 'string', 2873 format: 'at-uri', 2874 description: 'Reference (AT-URI) of post record', 2875 }, 2876 cid: { 2877 type: 'string', 2878 format: 'cid', 2879 description: 2880 'If supplied, filters to quotes of specific version (by CID) of the post record.', 2881 }, 2882 limit: { 2883 type: 'integer', 2884 minimum: 1, 2885 maximum: 100, 2886 default: 50, 2887 }, 2888 cursor: { 2889 type: 'string', 2890 }, 2891 }, 2892 }, 2893 output: { 2894 encoding: 'application/json', 2895 schema: { 2896 type: 'object', 2897 required: ['uri', 'posts'], 2898 properties: { 2899 uri: { 2900 type: 'string', 2901 format: 'at-uri', 2902 }, 2903 cid: { 2904 type: 'string', 2905 format: 'cid', 2906 }, 2907 cursor: { 2908 type: 'string', 2909 }, 2910 posts: { 2911 type: 'array', 2912 items: { 2913 type: 'ref', 2914 ref: 'lex:app.bsky.feed.defs#postView', 2915 }, 2916 }, 2917 }, 2918 }, 2919 }, 2920 }, 2921 }, 2922 }, 2923 AppBskyFeedGetRepostedBy: { 2924 lexicon: 1, 2925 id: 'app.bsky.feed.getRepostedBy', 2926 defs: { 2927 main: { 2928 type: 'query', 2929 description: 'Get a list of reposts for a given post.', 2930 parameters: { 2931 type: 'params', 2932 required: ['uri'], 2933 properties: { 2934 uri: { 2935 type: 'string', 2936 format: 'at-uri', 2937 description: 'Reference (AT-URI) of post record', 2938 }, 2939 cid: { 2940 type: 'string', 2941 format: 'cid', 2942 description: 2943 'If supplied, filters to reposts of specific version (by CID) of the post record.', 2944 }, 2945 limit: { 2946 type: 'integer', 2947 minimum: 1, 2948 maximum: 100, 2949 default: 50, 2950 }, 2951 cursor: { 2952 type: 'string', 2953 }, 2954 }, 2955 }, 2956 output: { 2957 encoding: 'application/json', 2958 schema: { 2959 type: 'object', 2960 required: ['uri', 'repostedBy'], 2961 properties: { 2962 uri: { 2963 type: 'string', 2964 format: 'at-uri', 2965 }, 2966 cid: { 2967 type: 'string', 2968 format: 'cid', 2969 }, 2970 cursor: { 2971 type: 'string', 2972 }, 2973 repostedBy: { 2974 type: 'array', 2975 items: { 2976 type: 'ref', 2977 ref: 'lex:app.bsky.actor.defs#profileView', 2978 }, 2979 }, 2980 }, 2981 }, 2982 }, 2983 }, 2984 }, 2985 }, 2986 AppBskyFeedGetSuggestedFeeds: { 2987 lexicon: 1, 2988 id: 'app.bsky.feed.getSuggestedFeeds', 2989 defs: { 2990 main: { 2991 type: 'query', 2992 description: 2993 'Get a list of suggested feeds (feed generators) for the requesting account.', 2994 parameters: { 2995 type: 'params', 2996 properties: { 2997 limit: { 2998 type: 'integer', 2999 minimum: 1, 3000 maximum: 100, 3001 default: 50, 3002 }, 3003 cursor: { 3004 type: 'string', 3005 }, 3006 }, 3007 }, 3008 output: { 3009 encoding: 'application/json', 3010 schema: { 3011 type: 'object', 3012 required: ['feeds'], 3013 properties: { 3014 cursor: { 3015 type: 'string', 3016 }, 3017 feeds: { 3018 type: 'array', 3019 items: { 3020 type: 'ref', 3021 ref: 'lex:app.bsky.feed.defs#generatorView', 3022 }, 3023 }, 3024 }, 3025 }, 3026 }, 3027 }, 3028 }, 3029 }, 3030 AppBskyFeedGetTimeline: { 3031 lexicon: 1, 3032 id: 'app.bsky.feed.getTimeline', 3033 defs: { 3034 main: { 3035 type: 'query', 3036 description: 3037 "Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed.", 3038 parameters: { 3039 type: 'params', 3040 properties: { 3041 algorithm: { 3042 type: 'string', 3043 description: 3044 "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism.", 3045 }, 3046 limit: { 3047 type: 'integer', 3048 minimum: 1, 3049 maximum: 100, 3050 default: 50, 3051 }, 3052 cursor: { 3053 type: 'string', 3054 }, 3055 }, 3056 }, 3057 output: { 3058 encoding: 'application/json', 3059 schema: { 3060 type: 'object', 3061 required: ['feed'], 3062 properties: { 3063 cursor: { 3064 type: 'string', 3065 }, 3066 feed: { 3067 type: 'array', 3068 items: { 3069 type: 'ref', 3070 ref: 'lex:app.bsky.feed.defs#feedViewPost', 3071 }, 3072 }, 3073 }, 3074 }, 3075 }, 3076 }, 3077 }, 3078 }, 3079 AppBskyFeedLike: { 3080 lexicon: 1, 3081 id: 'app.bsky.feed.like', 3082 defs: { 3083 main: { 3084 type: 'record', 3085 description: "Record declaring a 'like' of a piece of subject content.", 3086 key: 'tid', 3087 record: { 3088 type: 'object', 3089 required: ['subject', 'createdAt'], 3090 properties: { 3091 subject: { 3092 type: 'ref', 3093 ref: 'lex:com.atproto.repo.strongRef', 3094 }, 3095 createdAt: { 3096 type: 'string', 3097 format: 'datetime', 3098 }, 3099 via: { 3100 type: 'ref', 3101 ref: 'lex:com.atproto.repo.strongRef', 3102 }, 3103 }, 3104 }, 3105 }, 3106 }, 3107 }, 3108 AppBskyFeedPost: { 3109 lexicon: 1, 3110 id: 'app.bsky.feed.post', 3111 defs: { 3112 main: { 3113 type: 'record', 3114 description: 'Record containing a Bluesky post.', 3115 key: 'tid', 3116 record: { 3117 type: 'object', 3118 required: ['text', 'createdAt'], 3119 properties: { 3120 text: { 3121 type: 'string', 3122 maxLength: 3000, 3123 maxGraphemes: 300, 3124 description: 3125 'The primary post content. May be an empty string, if there are embeds.', 3126 }, 3127 entities: { 3128 type: 'array', 3129 description: 'DEPRECATED: replaced by app.bsky.richtext.facet.', 3130 items: { 3131 type: 'ref', 3132 ref: 'lex:app.bsky.feed.post#entity', 3133 }, 3134 }, 3135 facets: { 3136 type: 'array', 3137 description: 3138 'Annotations of text (mentions, URLs, hashtags, etc)', 3139 items: { 3140 type: 'ref', 3141 ref: 'lex:app.bsky.richtext.facet', 3142 }, 3143 }, 3144 reply: { 3145 type: 'ref', 3146 ref: 'lex:app.bsky.feed.post#replyRef', 3147 }, 3148 embed: { 3149 type: 'union', 3150 refs: [ 3151 'lex:app.bsky.embed.images', 3152 'lex:app.bsky.embed.video', 3153 'lex:app.bsky.embed.external', 3154 'lex:app.bsky.embed.record', 3155 'lex:app.bsky.embed.recordWithMedia', 3156 ], 3157 }, 3158 langs: { 3159 type: 'array', 3160 description: 3161 'Indicates human language of post primary text content.', 3162 maxLength: 3, 3163 items: { 3164 type: 'string', 3165 format: 'language', 3166 }, 3167 }, 3168 labels: { 3169 type: 'union', 3170 description: 3171 'Self-label values for this post. Effectively content warnings.', 3172 refs: ['lex:com.atproto.label.defs#selfLabels'], 3173 }, 3174 tags: { 3175 type: 'array', 3176 description: 3177 'Additional hashtags, in addition to any included in post text and facets.', 3178 maxLength: 8, 3179 items: { 3180 type: 'string', 3181 maxLength: 640, 3182 maxGraphemes: 64, 3183 }, 3184 }, 3185 createdAt: { 3186 type: 'string', 3187 format: 'datetime', 3188 description: 3189 'Client-declared timestamp when this post was originally created.', 3190 }, 3191 }, 3192 }, 3193 }, 3194 replyRef: { 3195 type: 'object', 3196 required: ['root', 'parent'], 3197 properties: { 3198 root: { 3199 type: 'ref', 3200 ref: 'lex:com.atproto.repo.strongRef', 3201 }, 3202 parent: { 3203 type: 'ref', 3204 ref: 'lex:com.atproto.repo.strongRef', 3205 }, 3206 }, 3207 }, 3208 entity: { 3209 type: 'object', 3210 description: 'Deprecated: use facets instead.', 3211 required: ['index', 'type', 'value'], 3212 properties: { 3213 index: { 3214 type: 'ref', 3215 ref: 'lex:app.bsky.feed.post#textSlice', 3216 }, 3217 type: { 3218 type: 'string', 3219 description: "Expected values are 'mention' and 'link'.", 3220 }, 3221 value: { 3222 type: 'string', 3223 }, 3224 }, 3225 }, 3226 textSlice: { 3227 type: 'object', 3228 description: 3229 'Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.', 3230 required: ['start', 'end'], 3231 properties: { 3232 start: { 3233 type: 'integer', 3234 minimum: 0, 3235 }, 3236 end: { 3237 type: 'integer', 3238 minimum: 0, 3239 }, 3240 }, 3241 }, 3242 }, 3243 }, 3244 AppBskyFeedPostgate: { 3245 lexicon: 1, 3246 id: 'app.bsky.feed.postgate', 3247 defs: { 3248 main: { 3249 type: 'record', 3250 key: 'tid', 3251 description: 3252 'Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.', 3253 record: { 3254 type: 'object', 3255 required: ['post', 'createdAt'], 3256 properties: { 3257 createdAt: { 3258 type: 'string', 3259 format: 'datetime', 3260 }, 3261 post: { 3262 type: 'string', 3263 format: 'at-uri', 3264 description: 'Reference (AT-URI) to the post record.', 3265 }, 3266 detachedEmbeddingUris: { 3267 type: 'array', 3268 maxLength: 50, 3269 items: { 3270 type: 'string', 3271 format: 'at-uri', 3272 }, 3273 description: 3274 'List of AT-URIs embedding this post that the author has detached from.', 3275 }, 3276 embeddingRules: { 3277 description: 3278 'List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed.', 3279 type: 'array', 3280 maxLength: 5, 3281 items: { 3282 type: 'union', 3283 refs: ['lex:app.bsky.feed.postgate#disableRule'], 3284 }, 3285 }, 3286 }, 3287 }, 3288 }, 3289 disableRule: { 3290 type: 'object', 3291 description: 'Disables embedding of this post.', 3292 properties: {}, 3293 }, 3294 }, 3295 }, 3296 AppBskyFeedRepost: { 3297 lexicon: 1, 3298 id: 'app.bsky.feed.repost', 3299 defs: { 3300 main: { 3301 description: 3302 "Record representing a 'repost' of an existing Bluesky post.", 3303 type: 'record', 3304 key: 'tid', 3305 record: { 3306 type: 'object', 3307 required: ['subject', 'createdAt'], 3308 properties: { 3309 subject: { 3310 type: 'ref', 3311 ref: 'lex:com.atproto.repo.strongRef', 3312 }, 3313 createdAt: { 3314 type: 'string', 3315 format: 'datetime', 3316 }, 3317 via: { 3318 type: 'ref', 3319 ref: 'lex:com.atproto.repo.strongRef', 3320 }, 3321 }, 3322 }, 3323 }, 3324 }, 3325 }, 3326 AppBskyFeedSearchPosts: { 3327 lexicon: 1, 3328 id: 'app.bsky.feed.searchPosts', 3329 defs: { 3330 main: { 3331 type: 'query', 3332 description: 3333 'Find posts matching search criteria, returning views of those posts. Note that this API endpoint may require authentication (eg, not public) for some service providers and implementations.', 3334 parameters: { 3335 type: 'params', 3336 required: ['q'], 3337 properties: { 3338 q: { 3339 type: 'string', 3340 description: 3341 'Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.', 3342 }, 3343 sort: { 3344 type: 'string', 3345 knownValues: ['top', 'latest'], 3346 default: 'latest', 3347 description: 'Specifies the ranking order of results.', 3348 }, 3349 since: { 3350 type: 'string', 3351 description: 3352 "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).", 3353 }, 3354 until: { 3355 type: 'string', 3356 description: 3357 "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).", 3358 }, 3359 mentions: { 3360 type: 'string', 3361 format: 'at-identifier', 3362 description: 3363 'Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.', 3364 }, 3365 author: { 3366 type: 'string', 3367 format: 'at-identifier', 3368 description: 3369 'Filter to posts by the given account. Handles are resolved to DID before query-time.', 3370 }, 3371 lang: { 3372 type: 'string', 3373 format: 'language', 3374 description: 3375 'Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.', 3376 }, 3377 domain: { 3378 type: 'string', 3379 description: 3380 'Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.', 3381 }, 3382 url: { 3383 type: 'string', 3384 format: 'uri', 3385 description: 3386 'Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.', 3387 }, 3388 tag: { 3389 type: 'array', 3390 items: { 3391 type: 'string', 3392 maxLength: 640, 3393 maxGraphemes: 64, 3394 }, 3395 description: 3396 "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.", 3397 }, 3398 limit: { 3399 type: 'integer', 3400 minimum: 1, 3401 maximum: 100, 3402 default: 25, 3403 }, 3404 cursor: { 3405 type: 'string', 3406 description: 3407 'Optional pagination mechanism; may not necessarily allow scrolling through entire result set.', 3408 }, 3409 }, 3410 }, 3411 output: { 3412 encoding: 'application/json', 3413 schema: { 3414 type: 'object', 3415 required: ['posts'], 3416 properties: { 3417 cursor: { 3418 type: 'string', 3419 }, 3420 hitsTotal: { 3421 type: 'integer', 3422 description: 3423 'Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.', 3424 }, 3425 posts: { 3426 type: 'array', 3427 items: { 3428 type: 'ref', 3429 ref: 'lex:app.bsky.feed.defs#postView', 3430 }, 3431 }, 3432 }, 3433 }, 3434 }, 3435 errors: [ 3436 { 3437 name: 'BadQueryString', 3438 }, 3439 ], 3440 }, 3441 }, 3442 }, 3443 AppBskyFeedSendInteractions: { 3444 lexicon: 1, 3445 id: 'app.bsky.feed.sendInteractions', 3446 defs: { 3447 main: { 3448 type: 'procedure', 3449 description: 3450 'Send information about interactions with feed items back to the feed generator that served them.', 3451 input: { 3452 encoding: 'application/json', 3453 schema: { 3454 type: 'object', 3455 required: ['interactions'], 3456 properties: { 3457 interactions: { 3458 type: 'array', 3459 items: { 3460 type: 'ref', 3461 ref: 'lex:app.bsky.feed.defs#interaction', 3462 }, 3463 }, 3464 }, 3465 }, 3466 }, 3467 output: { 3468 encoding: 'application/json', 3469 schema: { 3470 type: 'object', 3471 properties: {}, 3472 }, 3473 }, 3474 }, 3475 }, 3476 }, 3477 AppBskyFeedThreadgate: { 3478 lexicon: 1, 3479 id: 'app.bsky.feed.threadgate', 3480 defs: { 3481 main: { 3482 type: 'record', 3483 key: 'tid', 3484 description: 3485 "Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository.", 3486 record: { 3487 type: 'object', 3488 required: ['post', 'createdAt'], 3489 properties: { 3490 post: { 3491 type: 'string', 3492 format: 'at-uri', 3493 description: 'Reference (AT-URI) to the post record.', 3494 }, 3495 allow: { 3496 description: 3497 'List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply.', 3498 type: 'array', 3499 maxLength: 5, 3500 items: { 3501 type: 'union', 3502 refs: [ 3503 'lex:app.bsky.feed.threadgate#mentionRule', 3504 'lex:app.bsky.feed.threadgate#followerRule', 3505 'lex:app.bsky.feed.threadgate#followingRule', 3506 'lex:app.bsky.feed.threadgate#listRule', 3507 ], 3508 }, 3509 }, 3510 createdAt: { 3511 type: 'string', 3512 format: 'datetime', 3513 }, 3514 hiddenReplies: { 3515 type: 'array', 3516 maxLength: 50, 3517 items: { 3518 type: 'string', 3519 format: 'at-uri', 3520 }, 3521 description: 'List of hidden reply URIs.', 3522 }, 3523 }, 3524 }, 3525 }, 3526 mentionRule: { 3527 type: 'object', 3528 description: 'Allow replies from actors mentioned in your post.', 3529 properties: {}, 3530 }, 3531 followerRule: { 3532 type: 'object', 3533 description: 'Allow replies from actors who follow you.', 3534 properties: {}, 3535 }, 3536 followingRule: { 3537 type: 'object', 3538 description: 'Allow replies from actors you follow.', 3539 properties: {}, 3540 }, 3541 listRule: { 3542 type: 'object', 3543 description: 'Allow replies from actors on a list.', 3544 required: ['list'], 3545 properties: { 3546 list: { 3547 type: 'string', 3548 format: 'at-uri', 3549 }, 3550 }, 3551 }, 3552 }, 3553 }, 3554 AppBskyGraphBlock: { 3555 lexicon: 1, 3556 id: 'app.bsky.graph.block', 3557 defs: { 3558 main: { 3559 type: 'record', 3560 description: 3561 "Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details.", 3562 key: 'tid', 3563 record: { 3564 type: 'object', 3565 required: ['subject', 'createdAt'], 3566 properties: { 3567 subject: { 3568 type: 'string', 3569 format: 'did', 3570 description: 'DID of the account to be blocked.', 3571 }, 3572 createdAt: { 3573 type: 'string', 3574 format: 'datetime', 3575 }, 3576 }, 3577 }, 3578 }, 3579 }, 3580 }, 3581 AppBskyGraphDefs: { 3582 lexicon: 1, 3583 id: 'app.bsky.graph.defs', 3584 defs: { 3585 listViewBasic: { 3586 type: 'object', 3587 required: ['uri', 'cid', 'name', 'purpose'], 3588 properties: { 3589 uri: { 3590 type: 'string', 3591 format: 'at-uri', 3592 }, 3593 cid: { 3594 type: 'string', 3595 format: 'cid', 3596 }, 3597 name: { 3598 type: 'string', 3599 maxLength: 64, 3600 minLength: 1, 3601 }, 3602 purpose: { 3603 type: 'ref', 3604 ref: 'lex:app.bsky.graph.defs#listPurpose', 3605 }, 3606 avatar: { 3607 type: 'string', 3608 format: 'uri', 3609 }, 3610 listItemCount: { 3611 type: 'integer', 3612 minimum: 0, 3613 }, 3614 labels: { 3615 type: 'array', 3616 items: { 3617 type: 'ref', 3618 ref: 'lex:com.atproto.label.defs#label', 3619 }, 3620 }, 3621 viewer: { 3622 type: 'ref', 3623 ref: 'lex:app.bsky.graph.defs#listViewerState', 3624 }, 3625 indexedAt: { 3626 type: 'string', 3627 format: 'datetime', 3628 }, 3629 }, 3630 }, 3631 listView: { 3632 type: 'object', 3633 required: ['uri', 'cid', 'creator', 'name', 'purpose', 'indexedAt'], 3634 properties: { 3635 uri: { 3636 type: 'string', 3637 format: 'at-uri', 3638 }, 3639 cid: { 3640 type: 'string', 3641 format: 'cid', 3642 }, 3643 creator: { 3644 type: 'ref', 3645 ref: 'lex:app.bsky.actor.defs#profileView', 3646 }, 3647 name: { 3648 type: 'string', 3649 maxLength: 64, 3650 minLength: 1, 3651 }, 3652 purpose: { 3653 type: 'ref', 3654 ref: 'lex:app.bsky.graph.defs#listPurpose', 3655 }, 3656 description: { 3657 type: 'string', 3658 maxGraphemes: 300, 3659 maxLength: 3000, 3660 }, 3661 descriptionFacets: { 3662 type: 'array', 3663 items: { 3664 type: 'ref', 3665 ref: 'lex:app.bsky.richtext.facet', 3666 }, 3667 }, 3668 avatar: { 3669 type: 'string', 3670 format: 'uri', 3671 }, 3672 listItemCount: { 3673 type: 'integer', 3674 minimum: 0, 3675 }, 3676 labels: { 3677 type: 'array', 3678 items: { 3679 type: 'ref', 3680 ref: 'lex:com.atproto.label.defs#label', 3681 }, 3682 }, 3683 viewer: { 3684 type: 'ref', 3685 ref: 'lex:app.bsky.graph.defs#listViewerState', 3686 }, 3687 indexedAt: { 3688 type: 'string', 3689 format: 'datetime', 3690 }, 3691 }, 3692 }, 3693 listItemView: { 3694 type: 'object', 3695 required: ['uri', 'subject'], 3696 properties: { 3697 uri: { 3698 type: 'string', 3699 format: 'at-uri', 3700 }, 3701 subject: { 3702 type: 'ref', 3703 ref: 'lex:app.bsky.actor.defs#profileView', 3704 }, 3705 }, 3706 }, 3707 starterPackView: { 3708 type: 'object', 3709 required: ['uri', 'cid', 'record', 'creator', 'indexedAt'], 3710 properties: { 3711 uri: { 3712 type: 'string', 3713 format: 'at-uri', 3714 }, 3715 cid: { 3716 type: 'string', 3717 format: 'cid', 3718 }, 3719 record: { 3720 type: 'unknown', 3721 }, 3722 creator: { 3723 type: 'ref', 3724 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 3725 }, 3726 list: { 3727 type: 'ref', 3728 ref: 'lex:app.bsky.graph.defs#listViewBasic', 3729 }, 3730 listItemsSample: { 3731 type: 'array', 3732 maxLength: 12, 3733 items: { 3734 type: 'ref', 3735 ref: 'lex:app.bsky.graph.defs#listItemView', 3736 }, 3737 }, 3738 feeds: { 3739 type: 'array', 3740 maxLength: 3, 3741 items: { 3742 type: 'ref', 3743 ref: 'lex:app.bsky.feed.defs#generatorView', 3744 }, 3745 }, 3746 joinedWeekCount: { 3747 type: 'integer', 3748 minimum: 0, 3749 }, 3750 joinedAllTimeCount: { 3751 type: 'integer', 3752 minimum: 0, 3753 }, 3754 labels: { 3755 type: 'array', 3756 items: { 3757 type: 'ref', 3758 ref: 'lex:com.atproto.label.defs#label', 3759 }, 3760 }, 3761 indexedAt: { 3762 type: 'string', 3763 format: 'datetime', 3764 }, 3765 }, 3766 }, 3767 starterPackViewBasic: { 3768 type: 'object', 3769 required: ['uri', 'cid', 'record', 'creator', 'indexedAt'], 3770 properties: { 3771 uri: { 3772 type: 'string', 3773 format: 'at-uri', 3774 }, 3775 cid: { 3776 type: 'string', 3777 format: 'cid', 3778 }, 3779 record: { 3780 type: 'unknown', 3781 }, 3782 creator: { 3783 type: 'ref', 3784 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 3785 }, 3786 listItemCount: { 3787 type: 'integer', 3788 minimum: 0, 3789 }, 3790 joinedWeekCount: { 3791 type: 'integer', 3792 minimum: 0, 3793 }, 3794 joinedAllTimeCount: { 3795 type: 'integer', 3796 minimum: 0, 3797 }, 3798 labels: { 3799 type: 'array', 3800 items: { 3801 type: 'ref', 3802 ref: 'lex:com.atproto.label.defs#label', 3803 }, 3804 }, 3805 indexedAt: { 3806 type: 'string', 3807 format: 'datetime', 3808 }, 3809 }, 3810 }, 3811 listPurpose: { 3812 type: 'string', 3813 knownValues: [ 3814 'app.bsky.graph.defs#modlist', 3815 'app.bsky.graph.defs#curatelist', 3816 'app.bsky.graph.defs#referencelist', 3817 ], 3818 }, 3819 modlist: { 3820 type: 'token', 3821 description: 3822 'A list of actors to apply an aggregate moderation action (mute/block) on.', 3823 }, 3824 curatelist: { 3825 type: 'token', 3826 description: 3827 'A list of actors used for curation purposes such as list feeds or interaction gating.', 3828 }, 3829 referencelist: { 3830 type: 'token', 3831 description: 3832 'A list of actors used for only for reference purposes such as within a starter pack.', 3833 }, 3834 listViewerState: { 3835 type: 'object', 3836 properties: { 3837 muted: { 3838 type: 'boolean', 3839 }, 3840 blocked: { 3841 type: 'string', 3842 format: 'at-uri', 3843 }, 3844 }, 3845 }, 3846 notFoundActor: { 3847 type: 'object', 3848 description: 'indicates that a handle or DID could not be resolved', 3849 required: ['actor', 'notFound'], 3850 properties: { 3851 actor: { 3852 type: 'string', 3853 format: 'at-identifier', 3854 }, 3855 notFound: { 3856 type: 'boolean', 3857 const: true, 3858 }, 3859 }, 3860 }, 3861 relationship: { 3862 type: 'object', 3863 description: 3864 'lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)', 3865 required: ['did'], 3866 properties: { 3867 did: { 3868 type: 'string', 3869 format: 'did', 3870 }, 3871 following: { 3872 type: 'string', 3873 format: 'at-uri', 3874 description: 3875 'if the actor follows this DID, this is the AT-URI of the follow record', 3876 }, 3877 followedBy: { 3878 type: 'string', 3879 format: 'at-uri', 3880 description: 3881 'if the actor is followed by this DID, contains the AT-URI of the follow record', 3882 }, 3883 }, 3884 }, 3885 }, 3886 }, 3887 AppBskyGraphFollow: { 3888 lexicon: 1, 3889 id: 'app.bsky.graph.follow', 3890 defs: { 3891 main: { 3892 type: 'record', 3893 description: 3894 "Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.", 3895 key: 'tid', 3896 record: { 3897 type: 'object', 3898 required: ['subject', 'createdAt'], 3899 properties: { 3900 subject: { 3901 type: 'string', 3902 format: 'did', 3903 }, 3904 createdAt: { 3905 type: 'string', 3906 format: 'datetime', 3907 }, 3908 }, 3909 }, 3910 }, 3911 }, 3912 }, 3913 AppBskyGraphGetActorStarterPacks: { 3914 lexicon: 1, 3915 id: 'app.bsky.graph.getActorStarterPacks', 3916 defs: { 3917 main: { 3918 type: 'query', 3919 description: 'Get a list of starter packs created by the actor.', 3920 parameters: { 3921 type: 'params', 3922 required: ['actor'], 3923 properties: { 3924 actor: { 3925 type: 'string', 3926 format: 'at-identifier', 3927 }, 3928 limit: { 3929 type: 'integer', 3930 minimum: 1, 3931 maximum: 100, 3932 default: 50, 3933 }, 3934 cursor: { 3935 type: 'string', 3936 }, 3937 }, 3938 }, 3939 output: { 3940 encoding: 'application/json', 3941 schema: { 3942 type: 'object', 3943 required: ['starterPacks'], 3944 properties: { 3945 cursor: { 3946 type: 'string', 3947 }, 3948 starterPacks: { 3949 type: 'array', 3950 items: { 3951 type: 'ref', 3952 ref: 'lex:app.bsky.graph.defs#starterPackViewBasic', 3953 }, 3954 }, 3955 }, 3956 }, 3957 }, 3958 }, 3959 }, 3960 }, 3961 AppBskyGraphGetBlocks: { 3962 lexicon: 1, 3963 id: 'app.bsky.graph.getBlocks', 3964 defs: { 3965 main: { 3966 type: 'query', 3967 description: 3968 'Enumerates which accounts the requesting account is currently blocking. Requires auth.', 3969 parameters: { 3970 type: 'params', 3971 properties: { 3972 limit: { 3973 type: 'integer', 3974 minimum: 1, 3975 maximum: 100, 3976 default: 50, 3977 }, 3978 cursor: { 3979 type: 'string', 3980 }, 3981 }, 3982 }, 3983 output: { 3984 encoding: 'application/json', 3985 schema: { 3986 type: 'object', 3987 required: ['blocks'], 3988 properties: { 3989 cursor: { 3990 type: 'string', 3991 }, 3992 blocks: { 3993 type: 'array', 3994 items: { 3995 type: 'ref', 3996 ref: 'lex:app.bsky.actor.defs#profileView', 3997 }, 3998 }, 3999 }, 4000 }, 4001 }, 4002 }, 4003 }, 4004 }, 4005 AppBskyGraphGetFollowers: { 4006 lexicon: 1, 4007 id: 'app.bsky.graph.getFollowers', 4008 defs: { 4009 main: { 4010 type: 'query', 4011 description: 4012 'Enumerates accounts which follow a specified account (actor).', 4013 parameters: { 4014 type: 'params', 4015 required: ['actor'], 4016 properties: { 4017 actor: { 4018 type: 'string', 4019 format: 'at-identifier', 4020 }, 4021 limit: { 4022 type: 'integer', 4023 minimum: 1, 4024 maximum: 100, 4025 default: 50, 4026 }, 4027 cursor: { 4028 type: 'string', 4029 }, 4030 }, 4031 }, 4032 output: { 4033 encoding: 'application/json', 4034 schema: { 4035 type: 'object', 4036 required: ['subject', 'followers'], 4037 properties: { 4038 subject: { 4039 type: 'ref', 4040 ref: 'lex:app.bsky.actor.defs#profileView', 4041 }, 4042 cursor: { 4043 type: 'string', 4044 }, 4045 followers: { 4046 type: 'array', 4047 items: { 4048 type: 'ref', 4049 ref: 'lex:app.bsky.actor.defs#profileView', 4050 }, 4051 }, 4052 }, 4053 }, 4054 }, 4055 }, 4056 }, 4057 }, 4058 AppBskyGraphGetFollows: { 4059 lexicon: 1, 4060 id: 'app.bsky.graph.getFollows', 4061 defs: { 4062 main: { 4063 type: 'query', 4064 description: 4065 'Enumerates accounts which a specified account (actor) follows.', 4066 parameters: { 4067 type: 'params', 4068 required: ['actor'], 4069 properties: { 4070 actor: { 4071 type: 'string', 4072 format: 'at-identifier', 4073 }, 4074 limit: { 4075 type: 'integer', 4076 minimum: 1, 4077 maximum: 100, 4078 default: 50, 4079 }, 4080 cursor: { 4081 type: 'string', 4082 }, 4083 }, 4084 }, 4085 output: { 4086 encoding: 'application/json', 4087 schema: { 4088 type: 'object', 4089 required: ['subject', 'follows'], 4090 properties: { 4091 subject: { 4092 type: 'ref', 4093 ref: 'lex:app.bsky.actor.defs#profileView', 4094 }, 4095 cursor: { 4096 type: 'string', 4097 }, 4098 follows: { 4099 type: 'array', 4100 items: { 4101 type: 'ref', 4102 ref: 'lex:app.bsky.actor.defs#profileView', 4103 }, 4104 }, 4105 }, 4106 }, 4107 }, 4108 }, 4109 }, 4110 }, 4111 AppBskyGraphGetKnownFollowers: { 4112 lexicon: 1, 4113 id: 'app.bsky.graph.getKnownFollowers', 4114 defs: { 4115 main: { 4116 type: 'query', 4117 description: 4118 'Enumerates accounts which follow a specified account (actor) and are followed by the viewer.', 4119 parameters: { 4120 type: 'params', 4121 required: ['actor'], 4122 properties: { 4123 actor: { 4124 type: 'string', 4125 format: 'at-identifier', 4126 }, 4127 limit: { 4128 type: 'integer', 4129 minimum: 1, 4130 maximum: 100, 4131 default: 50, 4132 }, 4133 cursor: { 4134 type: 'string', 4135 }, 4136 }, 4137 }, 4138 output: { 4139 encoding: 'application/json', 4140 schema: { 4141 type: 'object', 4142 required: ['subject', 'followers'], 4143 properties: { 4144 subject: { 4145 type: 'ref', 4146 ref: 'lex:app.bsky.actor.defs#profileView', 4147 }, 4148 cursor: { 4149 type: 'string', 4150 }, 4151 followers: { 4152 type: 'array', 4153 items: { 4154 type: 'ref', 4155 ref: 'lex:app.bsky.actor.defs#profileView', 4156 }, 4157 }, 4158 }, 4159 }, 4160 }, 4161 }, 4162 }, 4163 }, 4164 AppBskyGraphGetList: { 4165 lexicon: 1, 4166 id: 'app.bsky.graph.getList', 4167 defs: { 4168 main: { 4169 type: 'query', 4170 description: 4171 "Gets a 'view' (with additional context) of a specified list.", 4172 parameters: { 4173 type: 'params', 4174 required: ['list'], 4175 properties: { 4176 list: { 4177 type: 'string', 4178 format: 'at-uri', 4179 description: 'Reference (AT-URI) of the list record to hydrate.', 4180 }, 4181 limit: { 4182 type: 'integer', 4183 minimum: 1, 4184 maximum: 100, 4185 default: 50, 4186 }, 4187 cursor: { 4188 type: 'string', 4189 }, 4190 }, 4191 }, 4192 output: { 4193 encoding: 'application/json', 4194 schema: { 4195 type: 'object', 4196 required: ['list', 'items'], 4197 properties: { 4198 cursor: { 4199 type: 'string', 4200 }, 4201 list: { 4202 type: 'ref', 4203 ref: 'lex:app.bsky.graph.defs#listView', 4204 }, 4205 items: { 4206 type: 'array', 4207 items: { 4208 type: 'ref', 4209 ref: 'lex:app.bsky.graph.defs#listItemView', 4210 }, 4211 }, 4212 }, 4213 }, 4214 }, 4215 }, 4216 }, 4217 }, 4218 AppBskyGraphGetListBlocks: { 4219 lexicon: 1, 4220 id: 'app.bsky.graph.getListBlocks', 4221 defs: { 4222 main: { 4223 type: 'query', 4224 description: 4225 'Get mod lists that the requesting account (actor) is blocking. Requires auth.', 4226 parameters: { 4227 type: 'params', 4228 properties: { 4229 limit: { 4230 type: 'integer', 4231 minimum: 1, 4232 maximum: 100, 4233 default: 50, 4234 }, 4235 cursor: { 4236 type: 'string', 4237 }, 4238 }, 4239 }, 4240 output: { 4241 encoding: 'application/json', 4242 schema: { 4243 type: 'object', 4244 required: ['lists'], 4245 properties: { 4246 cursor: { 4247 type: 'string', 4248 }, 4249 lists: { 4250 type: 'array', 4251 items: { 4252 type: 'ref', 4253 ref: 'lex:app.bsky.graph.defs#listView', 4254 }, 4255 }, 4256 }, 4257 }, 4258 }, 4259 }, 4260 }, 4261 }, 4262 AppBskyGraphGetListMutes: { 4263 lexicon: 1, 4264 id: 'app.bsky.graph.getListMutes', 4265 defs: { 4266 main: { 4267 type: 'query', 4268 description: 4269 'Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth.', 4270 parameters: { 4271 type: 'params', 4272 properties: { 4273 limit: { 4274 type: 'integer', 4275 minimum: 1, 4276 maximum: 100, 4277 default: 50, 4278 }, 4279 cursor: { 4280 type: 'string', 4281 }, 4282 }, 4283 }, 4284 output: { 4285 encoding: 'application/json', 4286 schema: { 4287 type: 'object', 4288 required: ['lists'], 4289 properties: { 4290 cursor: { 4291 type: 'string', 4292 }, 4293 lists: { 4294 type: 'array', 4295 items: { 4296 type: 'ref', 4297 ref: 'lex:app.bsky.graph.defs#listView', 4298 }, 4299 }, 4300 }, 4301 }, 4302 }, 4303 }, 4304 }, 4305 }, 4306 AppBskyGraphGetLists: { 4307 lexicon: 1, 4308 id: 'app.bsky.graph.getLists', 4309 defs: { 4310 main: { 4311 type: 'query', 4312 description: 4313 'Enumerates the lists created by a specified account (actor).', 4314 parameters: { 4315 type: 'params', 4316 required: ['actor'], 4317 properties: { 4318 actor: { 4319 type: 'string', 4320 format: 'at-identifier', 4321 description: 'The account (actor) to enumerate lists from.', 4322 }, 4323 limit: { 4324 type: 'integer', 4325 minimum: 1, 4326 maximum: 100, 4327 default: 50, 4328 }, 4329 cursor: { 4330 type: 'string', 4331 }, 4332 purposes: { 4333 type: 'array', 4334 description: 4335 'Optional filter by list purpose. If not specified, all supported types are returned.', 4336 items: { 4337 type: 'string', 4338 knownValues: ['modlist', 'curatelist'], 4339 }, 4340 }, 4341 }, 4342 }, 4343 output: { 4344 encoding: 'application/json', 4345 schema: { 4346 type: 'object', 4347 required: ['lists'], 4348 properties: { 4349 cursor: { 4350 type: 'string', 4351 }, 4352 lists: { 4353 type: 'array', 4354 items: { 4355 type: 'ref', 4356 ref: 'lex:app.bsky.graph.defs#listView', 4357 }, 4358 }, 4359 }, 4360 }, 4361 }, 4362 }, 4363 }, 4364 }, 4365 AppBskyGraphGetListsWithMembership: { 4366 lexicon: 1, 4367 id: 'app.bsky.graph.getListsWithMembership', 4368 defs: { 4369 main: { 4370 type: 'query', 4371 description: 4372 'Enumerates the lists created by the session user, and includes membership information about `actor` in those lists. Only supports curation and moderation lists (no reference lists, used in starter packs). Requires auth.', 4373 parameters: { 4374 type: 'params', 4375 required: ['actor'], 4376 properties: { 4377 actor: { 4378 type: 'string', 4379 format: 'at-identifier', 4380 description: 'The account (actor) to check for membership.', 4381 }, 4382 limit: { 4383 type: 'integer', 4384 minimum: 1, 4385 maximum: 100, 4386 default: 50, 4387 }, 4388 cursor: { 4389 type: 'string', 4390 }, 4391 purposes: { 4392 type: 'array', 4393 description: 4394 'Optional filter by list purpose. If not specified, all supported types are returned.', 4395 items: { 4396 type: 'string', 4397 knownValues: ['modlist', 'curatelist'], 4398 }, 4399 }, 4400 }, 4401 }, 4402 output: { 4403 encoding: 'application/json', 4404 schema: { 4405 type: 'object', 4406 required: ['listsWithMembership'], 4407 properties: { 4408 cursor: { 4409 type: 'string', 4410 }, 4411 listsWithMembership: { 4412 type: 'array', 4413 items: { 4414 type: 'ref', 4415 ref: 'lex:app.bsky.graph.getListsWithMembership#listWithMembership', 4416 }, 4417 }, 4418 }, 4419 }, 4420 }, 4421 }, 4422 listWithMembership: { 4423 description: 4424 'A list and an optional list item indicating membership of a target user to that list.', 4425 type: 'object', 4426 required: ['list'], 4427 properties: { 4428 list: { 4429 type: 'ref', 4430 ref: 'lex:app.bsky.graph.defs#listView', 4431 }, 4432 listItem: { 4433 type: 'ref', 4434 ref: 'lex:app.bsky.graph.defs#listItemView', 4435 }, 4436 }, 4437 }, 4438 }, 4439 }, 4440 AppBskyGraphGetMutes: { 4441 lexicon: 1, 4442 id: 'app.bsky.graph.getMutes', 4443 defs: { 4444 main: { 4445 type: 'query', 4446 description: 4447 'Enumerates accounts that the requesting account (actor) currently has muted. Requires auth.', 4448 parameters: { 4449 type: 'params', 4450 properties: { 4451 limit: { 4452 type: 'integer', 4453 minimum: 1, 4454 maximum: 100, 4455 default: 50, 4456 }, 4457 cursor: { 4458 type: 'string', 4459 }, 4460 }, 4461 }, 4462 output: { 4463 encoding: 'application/json', 4464 schema: { 4465 type: 'object', 4466 required: ['mutes'], 4467 properties: { 4468 cursor: { 4469 type: 'string', 4470 }, 4471 mutes: { 4472 type: 'array', 4473 items: { 4474 type: 'ref', 4475 ref: 'lex:app.bsky.actor.defs#profileView', 4476 }, 4477 }, 4478 }, 4479 }, 4480 }, 4481 }, 4482 }, 4483 }, 4484 AppBskyGraphGetRelationships: { 4485 lexicon: 1, 4486 id: 'app.bsky.graph.getRelationships', 4487 defs: { 4488 main: { 4489 type: 'query', 4490 description: 4491 'Enumerates public relationships between one account, and a list of other accounts. Does not require auth.', 4492 parameters: { 4493 type: 'params', 4494 required: ['actor'], 4495 properties: { 4496 actor: { 4497 type: 'string', 4498 format: 'at-identifier', 4499 description: 'Primary account requesting relationships for.', 4500 }, 4501 others: { 4502 type: 'array', 4503 description: 4504 "List of 'other' accounts to be related back to the primary.", 4505 maxLength: 30, 4506 items: { 4507 type: 'string', 4508 format: 'at-identifier', 4509 }, 4510 }, 4511 }, 4512 }, 4513 output: { 4514 encoding: 'application/json', 4515 schema: { 4516 type: 'object', 4517 required: ['relationships'], 4518 properties: { 4519 actor: { 4520 type: 'string', 4521 format: 'did', 4522 }, 4523 relationships: { 4524 type: 'array', 4525 items: { 4526 type: 'union', 4527 refs: [ 4528 'lex:app.bsky.graph.defs#relationship', 4529 'lex:app.bsky.graph.defs#notFoundActor', 4530 ], 4531 }, 4532 }, 4533 }, 4534 }, 4535 }, 4536 errors: [ 4537 { 4538 name: 'ActorNotFound', 4539 description: 4540 'the primary actor at-identifier could not be resolved', 4541 }, 4542 ], 4543 }, 4544 }, 4545 }, 4546 AppBskyGraphGetStarterPack: { 4547 lexicon: 1, 4548 id: 'app.bsky.graph.getStarterPack', 4549 defs: { 4550 main: { 4551 type: 'query', 4552 description: 'Gets a view of a starter pack.', 4553 parameters: { 4554 type: 'params', 4555 required: ['starterPack'], 4556 properties: { 4557 starterPack: { 4558 type: 'string', 4559 format: 'at-uri', 4560 description: 'Reference (AT-URI) of the starter pack record.', 4561 }, 4562 }, 4563 }, 4564 output: { 4565 encoding: 'application/json', 4566 schema: { 4567 type: 'object', 4568 required: ['starterPack'], 4569 properties: { 4570 starterPack: { 4571 type: 'ref', 4572 ref: 'lex:app.bsky.graph.defs#starterPackView', 4573 }, 4574 }, 4575 }, 4576 }, 4577 }, 4578 }, 4579 }, 4580 AppBskyGraphGetStarterPacks: { 4581 lexicon: 1, 4582 id: 'app.bsky.graph.getStarterPacks', 4583 defs: { 4584 main: { 4585 type: 'query', 4586 description: 'Get views for a list of starter packs.', 4587 parameters: { 4588 type: 'params', 4589 required: ['uris'], 4590 properties: { 4591 uris: { 4592 type: 'array', 4593 items: { 4594 type: 'string', 4595 format: 'at-uri', 4596 }, 4597 maxLength: 25, 4598 }, 4599 }, 4600 }, 4601 output: { 4602 encoding: 'application/json', 4603 schema: { 4604 type: 'object', 4605 required: ['starterPacks'], 4606 properties: { 4607 starterPacks: { 4608 type: 'array', 4609 items: { 4610 type: 'ref', 4611 ref: 'lex:app.bsky.graph.defs#starterPackViewBasic', 4612 }, 4613 }, 4614 }, 4615 }, 4616 }, 4617 }, 4618 }, 4619 }, 4620 AppBskyGraphGetStarterPacksWithMembership: { 4621 lexicon: 1, 4622 id: 'app.bsky.graph.getStarterPacksWithMembership', 4623 defs: { 4624 main: { 4625 type: 'query', 4626 description: 4627 'Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth.', 4628 parameters: { 4629 type: 'params', 4630 required: ['actor'], 4631 properties: { 4632 actor: { 4633 type: 'string', 4634 format: 'at-identifier', 4635 description: 'The account (actor) to check for membership.', 4636 }, 4637 limit: { 4638 type: 'integer', 4639 minimum: 1, 4640 maximum: 100, 4641 default: 50, 4642 }, 4643 cursor: { 4644 type: 'string', 4645 }, 4646 }, 4647 }, 4648 output: { 4649 encoding: 'application/json', 4650 schema: { 4651 type: 'object', 4652 required: ['starterPacksWithMembership'], 4653 properties: { 4654 cursor: { 4655 type: 'string', 4656 }, 4657 starterPacksWithMembership: { 4658 type: 'array', 4659 items: { 4660 type: 'ref', 4661 ref: 'lex:app.bsky.graph.getStarterPacksWithMembership#starterPackWithMembership', 4662 }, 4663 }, 4664 }, 4665 }, 4666 }, 4667 }, 4668 starterPackWithMembership: { 4669 description: 4670 'A starter pack and an optional list item indicating membership of a target user to that starter pack.', 4671 type: 'object', 4672 required: ['starterPack'], 4673 properties: { 4674 starterPack: { 4675 type: 'ref', 4676 ref: 'lex:app.bsky.graph.defs#starterPackView', 4677 }, 4678 listItem: { 4679 type: 'ref', 4680 ref: 'lex:app.bsky.graph.defs#listItemView', 4681 }, 4682 }, 4683 }, 4684 }, 4685 }, 4686 AppBskyGraphGetSuggestedFollowsByActor: { 4687 lexicon: 1, 4688 id: 'app.bsky.graph.getSuggestedFollowsByActor', 4689 defs: { 4690 main: { 4691 type: 'query', 4692 description: 4693 'Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account.', 4694 parameters: { 4695 type: 'params', 4696 required: ['actor'], 4697 properties: { 4698 actor: { 4699 type: 'string', 4700 format: 'at-identifier', 4701 }, 4702 }, 4703 }, 4704 output: { 4705 encoding: 'application/json', 4706 schema: { 4707 type: 'object', 4708 required: ['suggestions'], 4709 properties: { 4710 suggestions: { 4711 type: 'array', 4712 items: { 4713 type: 'ref', 4714 ref: 'lex:app.bsky.actor.defs#profileView', 4715 }, 4716 }, 4717 isFallback: { 4718 type: 'boolean', 4719 description: 4720 'If true, response has fallen-back to generic results, and is not scoped using relativeToDid', 4721 default: false, 4722 }, 4723 recId: { 4724 type: 'integer', 4725 description: 4726 'Snowflake for this recommendation, use when submitting recommendation events.', 4727 }, 4728 }, 4729 }, 4730 }, 4731 }, 4732 }, 4733 }, 4734 AppBskyGraphList: { 4735 lexicon: 1, 4736 id: 'app.bsky.graph.list', 4737 defs: { 4738 main: { 4739 type: 'record', 4740 description: 4741 'Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.', 4742 key: 'tid', 4743 record: { 4744 type: 'object', 4745 required: ['name', 'purpose', 'createdAt'], 4746 properties: { 4747 purpose: { 4748 type: 'ref', 4749 description: 4750 'Defines the purpose of the list (aka, moderation-oriented or curration-oriented)', 4751 ref: 'lex:app.bsky.graph.defs#listPurpose', 4752 }, 4753 name: { 4754 type: 'string', 4755 maxLength: 64, 4756 minLength: 1, 4757 description: 'Display name for list; can not be empty.', 4758 }, 4759 description: { 4760 type: 'string', 4761 maxGraphemes: 300, 4762 maxLength: 3000, 4763 }, 4764 descriptionFacets: { 4765 type: 'array', 4766 items: { 4767 type: 'ref', 4768 ref: 'lex:app.bsky.richtext.facet', 4769 }, 4770 }, 4771 avatar: { 4772 type: 'blob', 4773 accept: ['image/png', 'image/jpeg'], 4774 maxSize: 1000000, 4775 }, 4776 labels: { 4777 type: 'union', 4778 refs: ['lex:com.atproto.label.defs#selfLabels'], 4779 }, 4780 createdAt: { 4781 type: 'string', 4782 format: 'datetime', 4783 }, 4784 }, 4785 }, 4786 }, 4787 }, 4788 }, 4789 AppBskyGraphListblock: { 4790 lexicon: 1, 4791 id: 'app.bsky.graph.listblock', 4792 defs: { 4793 main: { 4794 type: 'record', 4795 description: 4796 'Record representing a block relationship against an entire an entire list of accounts (actors).', 4797 key: 'tid', 4798 record: { 4799 type: 'object', 4800 required: ['subject', 'createdAt'], 4801 properties: { 4802 subject: { 4803 type: 'string', 4804 format: 'at-uri', 4805 description: 'Reference (AT-URI) to the mod list record.', 4806 }, 4807 createdAt: { 4808 type: 'string', 4809 format: 'datetime', 4810 }, 4811 }, 4812 }, 4813 }, 4814 }, 4815 }, 4816 AppBskyGraphListitem: { 4817 lexicon: 1, 4818 id: 'app.bsky.graph.listitem', 4819 defs: { 4820 main: { 4821 type: 'record', 4822 description: 4823 "Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.", 4824 key: 'tid', 4825 record: { 4826 type: 'object', 4827 required: ['subject', 'list', 'createdAt'], 4828 properties: { 4829 subject: { 4830 type: 'string', 4831 format: 'did', 4832 description: 'The account which is included on the list.', 4833 }, 4834 list: { 4835 type: 'string', 4836 format: 'at-uri', 4837 description: 4838 'Reference (AT-URI) to the list record (app.bsky.graph.list).', 4839 }, 4840 createdAt: { 4841 type: 'string', 4842 format: 'datetime', 4843 }, 4844 }, 4845 }, 4846 }, 4847 }, 4848 }, 4849 AppBskyGraphMuteActor: { 4850 lexicon: 1, 4851 id: 'app.bsky.graph.muteActor', 4852 defs: { 4853 main: { 4854 type: 'procedure', 4855 description: 4856 'Creates a mute relationship for the specified account. Mutes are private in Bluesky. Requires auth.', 4857 input: { 4858 encoding: 'application/json', 4859 schema: { 4860 type: 'object', 4861 required: ['actor'], 4862 properties: { 4863 actor: { 4864 type: 'string', 4865 format: 'at-identifier', 4866 }, 4867 }, 4868 }, 4869 }, 4870 }, 4871 }, 4872 }, 4873 AppBskyGraphMuteActorList: { 4874 lexicon: 1, 4875 id: 'app.bsky.graph.muteActorList', 4876 defs: { 4877 main: { 4878 type: 'procedure', 4879 description: 4880 'Creates a mute relationship for the specified list of accounts. Mutes are private in Bluesky. Requires auth.', 4881 input: { 4882 encoding: 'application/json', 4883 schema: { 4884 type: 'object', 4885 required: ['list'], 4886 properties: { 4887 list: { 4888 type: 'string', 4889 format: 'at-uri', 4890 }, 4891 }, 4892 }, 4893 }, 4894 }, 4895 }, 4896 }, 4897 AppBskyGraphMuteThread: { 4898 lexicon: 1, 4899 id: 'app.bsky.graph.muteThread', 4900 defs: { 4901 main: { 4902 type: 'procedure', 4903 description: 4904 'Mutes a thread preventing notifications from the thread and any of its children. Mutes are private in Bluesky. Requires auth.', 4905 input: { 4906 encoding: 'application/json', 4907 schema: { 4908 type: 'object', 4909 required: ['root'], 4910 properties: { 4911 root: { 4912 type: 'string', 4913 format: 'at-uri', 4914 }, 4915 }, 4916 }, 4917 }, 4918 }, 4919 }, 4920 }, 4921 AppBskyGraphSearchStarterPacks: { 4922 lexicon: 1, 4923 id: 'app.bsky.graph.searchStarterPacks', 4924 defs: { 4925 main: { 4926 type: 'query', 4927 description: 4928 'Find starter packs matching search criteria. Does not require auth.', 4929 parameters: { 4930 type: 'params', 4931 required: ['q'], 4932 properties: { 4933 q: { 4934 type: 'string', 4935 description: 4936 'Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.', 4937 }, 4938 limit: { 4939 type: 'integer', 4940 minimum: 1, 4941 maximum: 100, 4942 default: 25, 4943 }, 4944 cursor: { 4945 type: 'string', 4946 }, 4947 }, 4948 }, 4949 output: { 4950 encoding: 'application/json', 4951 schema: { 4952 type: 'object', 4953 required: ['starterPacks'], 4954 properties: { 4955 cursor: { 4956 type: 'string', 4957 }, 4958 starterPacks: { 4959 type: 'array', 4960 items: { 4961 type: 'ref', 4962 ref: 'lex:app.bsky.graph.defs#starterPackViewBasic', 4963 }, 4964 }, 4965 }, 4966 }, 4967 }, 4968 }, 4969 }, 4970 }, 4971 AppBskyGraphStarterpack: { 4972 lexicon: 1, 4973 id: 'app.bsky.graph.starterpack', 4974 defs: { 4975 main: { 4976 type: 'record', 4977 description: 4978 'Record defining a starter pack of actors and feeds for new users.', 4979 key: 'tid', 4980 record: { 4981 type: 'object', 4982 required: ['name', 'list', 'createdAt'], 4983 properties: { 4984 name: { 4985 type: 'string', 4986 maxGraphemes: 50, 4987 maxLength: 500, 4988 minLength: 1, 4989 description: 'Display name for starter pack; can not be empty.', 4990 }, 4991 description: { 4992 type: 'string', 4993 maxGraphemes: 300, 4994 maxLength: 3000, 4995 }, 4996 descriptionFacets: { 4997 type: 'array', 4998 items: { 4999 type: 'ref', 5000 ref: 'lex:app.bsky.richtext.facet', 5001 }, 5002 }, 5003 list: { 5004 type: 'string', 5005 format: 'at-uri', 5006 description: 'Reference (AT-URI) to the list record.', 5007 }, 5008 feeds: { 5009 type: 'array', 5010 maxLength: 3, 5011 items: { 5012 type: 'ref', 5013 ref: 'lex:app.bsky.graph.starterpack#feedItem', 5014 }, 5015 }, 5016 createdAt: { 5017 type: 'string', 5018 format: 'datetime', 5019 }, 5020 }, 5021 }, 5022 }, 5023 feedItem: { 5024 type: 'object', 5025 required: ['uri'], 5026 properties: { 5027 uri: { 5028 type: 'string', 5029 format: 'at-uri', 5030 }, 5031 }, 5032 }, 5033 }, 5034 }, 5035 AppBskyGraphUnmuteActor: { 5036 lexicon: 1, 5037 id: 'app.bsky.graph.unmuteActor', 5038 defs: { 5039 main: { 5040 type: 'procedure', 5041 description: 'Unmutes the specified account. Requires auth.', 5042 input: { 5043 encoding: 'application/json', 5044 schema: { 5045 type: 'object', 5046 required: ['actor'], 5047 properties: { 5048 actor: { 5049 type: 'string', 5050 format: 'at-identifier', 5051 }, 5052 }, 5053 }, 5054 }, 5055 }, 5056 }, 5057 }, 5058 AppBskyGraphUnmuteActorList: { 5059 lexicon: 1, 5060 id: 'app.bsky.graph.unmuteActorList', 5061 defs: { 5062 main: { 5063 type: 'procedure', 5064 description: 'Unmutes the specified list of accounts. Requires auth.', 5065 input: { 5066 encoding: 'application/json', 5067 schema: { 5068 type: 'object', 5069 required: ['list'], 5070 properties: { 5071 list: { 5072 type: 'string', 5073 format: 'at-uri', 5074 }, 5075 }, 5076 }, 5077 }, 5078 }, 5079 }, 5080 }, 5081 AppBskyGraphUnmuteThread: { 5082 lexicon: 1, 5083 id: 'app.bsky.graph.unmuteThread', 5084 defs: { 5085 main: { 5086 type: 'procedure', 5087 description: 'Unmutes the specified thread. Requires auth.', 5088 input: { 5089 encoding: 'application/json', 5090 schema: { 5091 type: 'object', 5092 required: ['root'], 5093 properties: { 5094 root: { 5095 type: 'string', 5096 format: 'at-uri', 5097 }, 5098 }, 5099 }, 5100 }, 5101 }, 5102 }, 5103 }, 5104 AppBskyGraphVerification: { 5105 lexicon: 1, 5106 id: 'app.bsky.graph.verification', 5107 defs: { 5108 main: { 5109 type: 'record', 5110 description: 5111 'Record declaring a verification relationship between two accounts. Verifications are only considered valid by an app if issued by an account the app considers trusted.', 5112 key: 'tid', 5113 record: { 5114 type: 'object', 5115 required: ['subject', 'handle', 'displayName', 'createdAt'], 5116 properties: { 5117 subject: { 5118 description: 'DID of the subject the verification applies to.', 5119 type: 'string', 5120 format: 'did', 5121 }, 5122 handle: { 5123 description: 5124 'Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.', 5125 type: 'string', 5126 format: 'handle', 5127 }, 5128 displayName: { 5129 description: 5130 'Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying.', 5131 type: 'string', 5132 }, 5133 createdAt: { 5134 description: 'Date of when the verification was created.', 5135 type: 'string', 5136 format: 'datetime', 5137 }, 5138 }, 5139 }, 5140 }, 5141 }, 5142 }, 5143 AppBskyLabelerDefs: { 5144 lexicon: 1, 5145 id: 'app.bsky.labeler.defs', 5146 defs: { 5147 labelerView: { 5148 type: 'object', 5149 required: ['uri', 'cid', 'creator', 'indexedAt'], 5150 properties: { 5151 uri: { 5152 type: 'string', 5153 format: 'at-uri', 5154 }, 5155 cid: { 5156 type: 'string', 5157 format: 'cid', 5158 }, 5159 creator: { 5160 type: 'ref', 5161 ref: 'lex:app.bsky.actor.defs#profileView', 5162 }, 5163 likeCount: { 5164 type: 'integer', 5165 minimum: 0, 5166 }, 5167 viewer: { 5168 type: 'ref', 5169 ref: 'lex:app.bsky.labeler.defs#labelerViewerState', 5170 }, 5171 indexedAt: { 5172 type: 'string', 5173 format: 'datetime', 5174 }, 5175 labels: { 5176 type: 'array', 5177 items: { 5178 type: 'ref', 5179 ref: 'lex:com.atproto.label.defs#label', 5180 }, 5181 }, 5182 }, 5183 }, 5184 labelerViewDetailed: { 5185 type: 'object', 5186 required: ['uri', 'cid', 'creator', 'policies', 'indexedAt'], 5187 properties: { 5188 uri: { 5189 type: 'string', 5190 format: 'at-uri', 5191 }, 5192 cid: { 5193 type: 'string', 5194 format: 'cid', 5195 }, 5196 creator: { 5197 type: 'ref', 5198 ref: 'lex:app.bsky.actor.defs#profileView', 5199 }, 5200 policies: { 5201 type: 'ref', 5202 ref: 'lex:app.bsky.labeler.defs#labelerPolicies', 5203 }, 5204 likeCount: { 5205 type: 'integer', 5206 minimum: 0, 5207 }, 5208 viewer: { 5209 type: 'ref', 5210 ref: 'lex:app.bsky.labeler.defs#labelerViewerState', 5211 }, 5212 indexedAt: { 5213 type: 'string', 5214 format: 'datetime', 5215 }, 5216 labels: { 5217 type: 'array', 5218 items: { 5219 type: 'ref', 5220 ref: 'lex:com.atproto.label.defs#label', 5221 }, 5222 }, 5223 reasonTypes: { 5224 description: 5225 "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.", 5226 type: 'array', 5227 items: { 5228 type: 'ref', 5229 ref: 'lex:com.atproto.moderation.defs#reasonType', 5230 }, 5231 }, 5232 subjectTypes: { 5233 description: 5234 'The set of subject types (account, record, etc) this service accepts reports on.', 5235 type: 'array', 5236 items: { 5237 type: 'ref', 5238 ref: 'lex:com.atproto.moderation.defs#subjectType', 5239 }, 5240 }, 5241 subjectCollections: { 5242 type: 'array', 5243 description: 5244 '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.', 5245 items: { 5246 type: 'string', 5247 format: 'nsid', 5248 }, 5249 }, 5250 }, 5251 }, 5252 labelerViewerState: { 5253 type: 'object', 5254 properties: { 5255 like: { 5256 type: 'string', 5257 format: 'at-uri', 5258 }, 5259 }, 5260 }, 5261 labelerPolicies: { 5262 type: 'object', 5263 required: ['labelValues'], 5264 properties: { 5265 labelValues: { 5266 type: 'array', 5267 description: 5268 'The label values which this labeler publishes. May include global or custom labels.', 5269 items: { 5270 type: 'ref', 5271 ref: 'lex:com.atproto.label.defs#labelValue', 5272 }, 5273 }, 5274 labelValueDefinitions: { 5275 type: 'array', 5276 description: 5277 'Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.', 5278 items: { 5279 type: 'ref', 5280 ref: 'lex:com.atproto.label.defs#labelValueDefinition', 5281 }, 5282 }, 5283 }, 5284 }, 5285 }, 5286 }, 5287 AppBskyLabelerGetServices: { 5288 lexicon: 1, 5289 id: 'app.bsky.labeler.getServices', 5290 defs: { 5291 main: { 5292 type: 'query', 5293 description: 'Get information about a list of labeler services.', 5294 parameters: { 5295 type: 'params', 5296 required: ['dids'], 5297 properties: { 5298 dids: { 5299 type: 'array', 5300 items: { 5301 type: 'string', 5302 format: 'did', 5303 }, 5304 }, 5305 detailed: { 5306 type: 'boolean', 5307 default: false, 5308 }, 5309 }, 5310 }, 5311 output: { 5312 encoding: 'application/json', 5313 schema: { 5314 type: 'object', 5315 required: ['views'], 5316 properties: { 5317 views: { 5318 type: 'array', 5319 items: { 5320 type: 'union', 5321 refs: [ 5322 'lex:app.bsky.labeler.defs#labelerView', 5323 'lex:app.bsky.labeler.defs#labelerViewDetailed', 5324 ], 5325 }, 5326 }, 5327 }, 5328 }, 5329 }, 5330 }, 5331 }, 5332 }, 5333 AppBskyLabelerService: { 5334 lexicon: 1, 5335 id: 'app.bsky.labeler.service', 5336 defs: { 5337 main: { 5338 type: 'record', 5339 description: 'A declaration of the existence of labeler service.', 5340 key: 'literal:self', 5341 record: { 5342 type: 'object', 5343 required: ['policies', 'createdAt'], 5344 properties: { 5345 policies: { 5346 type: 'ref', 5347 ref: 'lex:app.bsky.labeler.defs#labelerPolicies', 5348 }, 5349 labels: { 5350 type: 'union', 5351 refs: ['lex:com.atproto.label.defs#selfLabels'], 5352 }, 5353 createdAt: { 5354 type: 'string', 5355 format: 'datetime', 5356 }, 5357 reasonTypes: { 5358 description: 5359 "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.", 5360 type: 'array', 5361 items: { 5362 type: 'ref', 5363 ref: 'lex:com.atproto.moderation.defs#reasonType', 5364 }, 5365 }, 5366 subjectTypes: { 5367 description: 5368 'The set of subject types (account, record, etc) this service accepts reports on.', 5369 type: 'array', 5370 items: { 5371 type: 'ref', 5372 ref: 'lex:com.atproto.moderation.defs#subjectType', 5373 }, 5374 }, 5375 subjectCollections: { 5376 type: 'array', 5377 description: 5378 '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.', 5379 items: { 5380 type: 'string', 5381 format: 'nsid', 5382 }, 5383 }, 5384 }, 5385 }, 5386 }, 5387 }, 5388 }, 5389 AppBskyNotificationDeclaration: { 5390 lexicon: 1, 5391 id: 'app.bsky.notification.declaration', 5392 defs: { 5393 main: { 5394 type: 'record', 5395 description: 5396 "A declaration of the user's choices related to notifications that can be produced by them.", 5397 key: 'literal:self', 5398 record: { 5399 type: 'object', 5400 required: ['allowSubscriptions'], 5401 properties: { 5402 allowSubscriptions: { 5403 type: 'string', 5404 description: 5405 "A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.", 5406 knownValues: ['followers', 'mutuals', 'none'], 5407 }, 5408 }, 5409 }, 5410 }, 5411 }, 5412 }, 5413 AppBskyNotificationDefs: { 5414 lexicon: 1, 5415 id: 'app.bsky.notification.defs', 5416 defs: { 5417 recordDeleted: { 5418 type: 'object', 5419 properties: {}, 5420 }, 5421 chatPreference: { 5422 type: 'object', 5423 required: ['include', 'push'], 5424 properties: { 5425 include: { 5426 type: 'string', 5427 knownValues: ['all', 'accepted'], 5428 }, 5429 push: { 5430 type: 'boolean', 5431 }, 5432 }, 5433 }, 5434 filterablePreference: { 5435 type: 'object', 5436 required: ['include', 'list', 'push'], 5437 properties: { 5438 include: { 5439 type: 'string', 5440 knownValues: ['all', 'follows'], 5441 }, 5442 list: { 5443 type: 'boolean', 5444 }, 5445 push: { 5446 type: 'boolean', 5447 }, 5448 }, 5449 }, 5450 preference: { 5451 type: 'object', 5452 required: ['list', 'push'], 5453 properties: { 5454 list: { 5455 type: 'boolean', 5456 }, 5457 push: { 5458 type: 'boolean', 5459 }, 5460 }, 5461 }, 5462 preferences: { 5463 type: 'object', 5464 required: [ 5465 'chat', 5466 'follow', 5467 'like', 5468 'likeViaRepost', 5469 'mention', 5470 'quote', 5471 'reply', 5472 'repost', 5473 'repostViaRepost', 5474 'starterpackJoined', 5475 'subscribedPost', 5476 'unverified', 5477 'verified', 5478 ], 5479 properties: { 5480 chat: { 5481 type: 'ref', 5482 ref: 'lex:app.bsky.notification.defs#chatPreference', 5483 }, 5484 follow: { 5485 type: 'ref', 5486 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5487 }, 5488 like: { 5489 type: 'ref', 5490 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5491 }, 5492 likeViaRepost: { 5493 type: 'ref', 5494 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5495 }, 5496 mention: { 5497 type: 'ref', 5498 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5499 }, 5500 quote: { 5501 type: 'ref', 5502 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5503 }, 5504 reply: { 5505 type: 'ref', 5506 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5507 }, 5508 repost: { 5509 type: 'ref', 5510 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5511 }, 5512 repostViaRepost: { 5513 type: 'ref', 5514 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5515 }, 5516 starterpackJoined: { 5517 type: 'ref', 5518 ref: 'lex:app.bsky.notification.defs#preference', 5519 }, 5520 subscribedPost: { 5521 type: 'ref', 5522 ref: 'lex:app.bsky.notification.defs#preference', 5523 }, 5524 unverified: { 5525 type: 'ref', 5526 ref: 'lex:app.bsky.notification.defs#preference', 5527 }, 5528 verified: { 5529 type: 'ref', 5530 ref: 'lex:app.bsky.notification.defs#preference', 5531 }, 5532 }, 5533 }, 5534 activitySubscription: { 5535 type: 'object', 5536 required: ['post', 'reply'], 5537 properties: { 5538 post: { 5539 type: 'boolean', 5540 }, 5541 reply: { 5542 type: 'boolean', 5543 }, 5544 }, 5545 }, 5546 subjectActivitySubscription: { 5547 description: 5548 'Object used to store activity subscription data in stash.', 5549 type: 'object', 5550 required: ['subject', 'activitySubscription'], 5551 properties: { 5552 subject: { 5553 type: 'string', 5554 format: 'did', 5555 }, 5556 activitySubscription: { 5557 type: 'ref', 5558 ref: 'lex:app.bsky.notification.defs#activitySubscription', 5559 }, 5560 }, 5561 }, 5562 }, 5563 }, 5564 AppBskyNotificationGetPreferences: { 5565 lexicon: 1, 5566 id: 'app.bsky.notification.getPreferences', 5567 defs: { 5568 main: { 5569 type: 'query', 5570 description: 5571 'Get notification-related preferences for an account. Requires auth.', 5572 parameters: { 5573 type: 'params', 5574 properties: {}, 5575 }, 5576 output: { 5577 encoding: 'application/json', 5578 schema: { 5579 type: 'object', 5580 required: ['preferences'], 5581 properties: { 5582 preferences: { 5583 type: 'ref', 5584 ref: 'lex:app.bsky.notification.defs#preferences', 5585 }, 5586 }, 5587 }, 5588 }, 5589 }, 5590 }, 5591 }, 5592 AppBskyNotificationGetUnreadCount: { 5593 lexicon: 1, 5594 id: 'app.bsky.notification.getUnreadCount', 5595 defs: { 5596 main: { 5597 type: 'query', 5598 description: 5599 'Count the number of unread notifications for the requesting account. Requires auth.', 5600 parameters: { 5601 type: 'params', 5602 properties: { 5603 priority: { 5604 type: 'boolean', 5605 }, 5606 seenAt: { 5607 type: 'string', 5608 format: 'datetime', 5609 }, 5610 }, 5611 }, 5612 output: { 5613 encoding: 'application/json', 5614 schema: { 5615 type: 'object', 5616 required: ['count'], 5617 properties: { 5618 count: { 5619 type: 'integer', 5620 }, 5621 }, 5622 }, 5623 }, 5624 }, 5625 }, 5626 }, 5627 AppBskyNotificationListActivitySubscriptions: { 5628 lexicon: 1, 5629 id: 'app.bsky.notification.listActivitySubscriptions', 5630 defs: { 5631 main: { 5632 type: 'query', 5633 description: 5634 'Enumerate all accounts to which the requesting account is subscribed to receive notifications for. Requires auth.', 5635 parameters: { 5636 type: 'params', 5637 properties: { 5638 limit: { 5639 type: 'integer', 5640 minimum: 1, 5641 maximum: 100, 5642 default: 50, 5643 }, 5644 cursor: { 5645 type: 'string', 5646 }, 5647 }, 5648 }, 5649 output: { 5650 encoding: 'application/json', 5651 schema: { 5652 type: 'object', 5653 required: ['subscriptions'], 5654 properties: { 5655 cursor: { 5656 type: 'string', 5657 }, 5658 subscriptions: { 5659 type: 'array', 5660 items: { 5661 type: 'ref', 5662 ref: 'lex:app.bsky.actor.defs#profileView', 5663 }, 5664 }, 5665 }, 5666 }, 5667 }, 5668 }, 5669 }, 5670 }, 5671 AppBskyNotificationListNotifications: { 5672 lexicon: 1, 5673 id: 'app.bsky.notification.listNotifications', 5674 defs: { 5675 main: { 5676 type: 'query', 5677 description: 5678 'Enumerate notifications for the requesting account. Requires auth.', 5679 parameters: { 5680 type: 'params', 5681 properties: { 5682 reasons: { 5683 description: 'Notification reasons to include in response.', 5684 type: 'array', 5685 items: { 5686 type: 'string', 5687 description: 5688 'A reason that matches the reason property of #notification.', 5689 }, 5690 }, 5691 limit: { 5692 type: 'integer', 5693 minimum: 1, 5694 maximum: 100, 5695 default: 50, 5696 }, 5697 priority: { 5698 type: 'boolean', 5699 }, 5700 cursor: { 5701 type: 'string', 5702 }, 5703 seenAt: { 5704 type: 'string', 5705 format: 'datetime', 5706 }, 5707 }, 5708 }, 5709 output: { 5710 encoding: 'application/json', 5711 schema: { 5712 type: 'object', 5713 required: ['notifications'], 5714 properties: { 5715 cursor: { 5716 type: 'string', 5717 }, 5718 notifications: { 5719 type: 'array', 5720 items: { 5721 type: 'ref', 5722 ref: 'lex:app.bsky.notification.listNotifications#notification', 5723 }, 5724 }, 5725 priority: { 5726 type: 'boolean', 5727 }, 5728 seenAt: { 5729 type: 'string', 5730 format: 'datetime', 5731 }, 5732 }, 5733 }, 5734 }, 5735 }, 5736 notification: { 5737 type: 'object', 5738 required: [ 5739 'uri', 5740 'cid', 5741 'author', 5742 'reason', 5743 'record', 5744 'isRead', 5745 'indexedAt', 5746 ], 5747 properties: { 5748 uri: { 5749 type: 'string', 5750 format: 'at-uri', 5751 }, 5752 cid: { 5753 type: 'string', 5754 format: 'cid', 5755 }, 5756 author: { 5757 type: 'ref', 5758 ref: 'lex:app.bsky.actor.defs#profileView', 5759 }, 5760 reason: { 5761 type: 'string', 5762 description: 5763 'The reason why this notification was delivered - e.g. your post was liked, or you received a new follower.', 5764 knownValues: [ 5765 'like', 5766 'repost', 5767 'follow', 5768 'mention', 5769 'reply', 5770 'quote', 5771 'starterpack-joined', 5772 'verified', 5773 'unverified', 5774 'like-via-repost', 5775 'repost-via-repost', 5776 'subscribed-post', 5777 ], 5778 }, 5779 reasonSubject: { 5780 type: 'string', 5781 format: 'at-uri', 5782 }, 5783 record: { 5784 type: 'unknown', 5785 }, 5786 isRead: { 5787 type: 'boolean', 5788 }, 5789 indexedAt: { 5790 type: 'string', 5791 format: 'datetime', 5792 }, 5793 labels: { 5794 type: 'array', 5795 items: { 5796 type: 'ref', 5797 ref: 'lex:com.atproto.label.defs#label', 5798 }, 5799 }, 5800 }, 5801 }, 5802 }, 5803 }, 5804 AppBskyNotificationPutActivitySubscription: { 5805 lexicon: 1, 5806 id: 'app.bsky.notification.putActivitySubscription', 5807 defs: { 5808 main: { 5809 type: 'procedure', 5810 description: 5811 'Puts an activity subscription entry. The key should be omitted for creation and provided for updates. Requires auth.', 5812 input: { 5813 encoding: 'application/json', 5814 schema: { 5815 type: 'object', 5816 required: ['subject', 'activitySubscription'], 5817 properties: { 5818 subject: { 5819 type: 'string', 5820 format: 'did', 5821 }, 5822 activitySubscription: { 5823 type: 'ref', 5824 ref: 'lex:app.bsky.notification.defs#activitySubscription', 5825 }, 5826 }, 5827 }, 5828 }, 5829 output: { 5830 encoding: 'application/json', 5831 schema: { 5832 type: 'object', 5833 required: ['subject'], 5834 properties: { 5835 subject: { 5836 type: 'string', 5837 format: 'did', 5838 }, 5839 activitySubscription: { 5840 type: 'ref', 5841 ref: 'lex:app.bsky.notification.defs#activitySubscription', 5842 }, 5843 }, 5844 }, 5845 }, 5846 }, 5847 }, 5848 }, 5849 AppBskyNotificationPutPreferences: { 5850 lexicon: 1, 5851 id: 'app.bsky.notification.putPreferences', 5852 defs: { 5853 main: { 5854 type: 'procedure', 5855 description: 5856 'Set notification-related preferences for an account. Requires auth.', 5857 input: { 5858 encoding: 'application/json', 5859 schema: { 5860 type: 'object', 5861 required: ['priority'], 5862 properties: { 5863 priority: { 5864 type: 'boolean', 5865 }, 5866 }, 5867 }, 5868 }, 5869 }, 5870 }, 5871 }, 5872 AppBskyNotificationPutPreferencesV2: { 5873 lexicon: 1, 5874 id: 'app.bsky.notification.putPreferencesV2', 5875 defs: { 5876 main: { 5877 type: 'procedure', 5878 description: 5879 'Set notification-related preferences for an account. Requires auth.', 5880 input: { 5881 encoding: 'application/json', 5882 schema: { 5883 type: 'object', 5884 properties: { 5885 chat: { 5886 type: 'ref', 5887 ref: 'lex:app.bsky.notification.defs#chatPreference', 5888 }, 5889 follow: { 5890 type: 'ref', 5891 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5892 }, 5893 like: { 5894 type: 'ref', 5895 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5896 }, 5897 likeViaRepost: { 5898 type: 'ref', 5899 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5900 }, 5901 mention: { 5902 type: 'ref', 5903 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5904 }, 5905 quote: { 5906 type: 'ref', 5907 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5908 }, 5909 reply: { 5910 type: 'ref', 5911 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5912 }, 5913 repost: { 5914 type: 'ref', 5915 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5916 }, 5917 repostViaRepost: { 5918 type: 'ref', 5919 ref: 'lex:app.bsky.notification.defs#filterablePreference', 5920 }, 5921 starterpackJoined: { 5922 type: 'ref', 5923 ref: 'lex:app.bsky.notification.defs#preference', 5924 }, 5925 subscribedPost: { 5926 type: 'ref', 5927 ref: 'lex:app.bsky.notification.defs#preference', 5928 }, 5929 unverified: { 5930 type: 'ref', 5931 ref: 'lex:app.bsky.notification.defs#preference', 5932 }, 5933 verified: { 5934 type: 'ref', 5935 ref: 'lex:app.bsky.notification.defs#preference', 5936 }, 5937 }, 5938 }, 5939 }, 5940 output: { 5941 encoding: 'application/json', 5942 schema: { 5943 type: 'object', 5944 required: ['preferences'], 5945 properties: { 5946 preferences: { 5947 type: 'ref', 5948 ref: 'lex:app.bsky.notification.defs#preferences', 5949 }, 5950 }, 5951 }, 5952 }, 5953 }, 5954 }, 5955 }, 5956 AppBskyNotificationRegisterPush: { 5957 lexicon: 1, 5958 id: 'app.bsky.notification.registerPush', 5959 defs: { 5960 main: { 5961 type: 'procedure', 5962 description: 5963 'Register to receive push notifications, via a specified service, for the requesting account. Requires auth.', 5964 input: { 5965 encoding: 'application/json', 5966 schema: { 5967 type: 'object', 5968 required: ['serviceDid', 'token', 'platform', 'appId'], 5969 properties: { 5970 serviceDid: { 5971 type: 'string', 5972 format: 'did', 5973 }, 5974 token: { 5975 type: 'string', 5976 }, 5977 platform: { 5978 type: 'string', 5979 knownValues: ['ios', 'android', 'web'], 5980 }, 5981 appId: { 5982 type: 'string', 5983 }, 5984 ageRestricted: { 5985 type: 'boolean', 5986 description: 'Set to true when the actor is age restricted', 5987 }, 5988 }, 5989 }, 5990 }, 5991 }, 5992 }, 5993 }, 5994 AppBskyNotificationUnregisterPush: { 5995 lexicon: 1, 5996 id: 'app.bsky.notification.unregisterPush', 5997 defs: { 5998 main: { 5999 type: 'procedure', 6000 description: 6001 'The inverse of registerPush - inform a specified service that push notifications should no longer be sent to the given token for the requesting account. Requires auth.', 6002 input: { 6003 encoding: 'application/json', 6004 schema: { 6005 type: 'object', 6006 required: ['serviceDid', 'token', 'platform', 'appId'], 6007 properties: { 6008 serviceDid: { 6009 type: 'string', 6010 format: 'did', 6011 }, 6012 token: { 6013 type: 'string', 6014 }, 6015 platform: { 6016 type: 'string', 6017 knownValues: ['ios', 'android', 'web'], 6018 }, 6019 appId: { 6020 type: 'string', 6021 }, 6022 }, 6023 }, 6024 }, 6025 }, 6026 }, 6027 }, 6028 AppBskyNotificationUpdateSeen: { 6029 lexicon: 1, 6030 id: 'app.bsky.notification.updateSeen', 6031 defs: { 6032 main: { 6033 type: 'procedure', 6034 description: 6035 'Notify server that the requesting account has seen notifications. Requires auth.', 6036 input: { 6037 encoding: 'application/json', 6038 schema: { 6039 type: 'object', 6040 required: ['seenAt'], 6041 properties: { 6042 seenAt: { 6043 type: 'string', 6044 format: 'datetime', 6045 }, 6046 }, 6047 }, 6048 }, 6049 }, 6050 }, 6051 }, 6052 AppBskyRichtextFacet: { 6053 lexicon: 1, 6054 id: 'app.bsky.richtext.facet', 6055 defs: { 6056 main: { 6057 type: 'object', 6058 description: 'Annotation of a sub-string within rich text.', 6059 required: ['index', 'features'], 6060 properties: { 6061 index: { 6062 type: 'ref', 6063 ref: 'lex:app.bsky.richtext.facet#byteSlice', 6064 }, 6065 features: { 6066 type: 'array', 6067 items: { 6068 type: 'union', 6069 refs: [ 6070 'lex:app.bsky.richtext.facet#mention', 6071 'lex:app.bsky.richtext.facet#link', 6072 'lex:app.bsky.richtext.facet#tag', 6073 ], 6074 }, 6075 }, 6076 }, 6077 }, 6078 mention: { 6079 type: 'object', 6080 description: 6081 "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.", 6082 required: ['did'], 6083 properties: { 6084 did: { 6085 type: 'string', 6086 format: 'did', 6087 }, 6088 }, 6089 }, 6090 link: { 6091 type: 'object', 6092 description: 6093 'Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.', 6094 required: ['uri'], 6095 properties: { 6096 uri: { 6097 type: 'string', 6098 format: 'uri', 6099 }, 6100 }, 6101 }, 6102 tag: { 6103 type: 'object', 6104 description: 6105 "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').", 6106 required: ['tag'], 6107 properties: { 6108 tag: { 6109 type: 'string', 6110 maxLength: 640, 6111 maxGraphemes: 64, 6112 }, 6113 }, 6114 }, 6115 byteSlice: { 6116 type: 'object', 6117 description: 6118 '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.', 6119 required: ['byteStart', 'byteEnd'], 6120 properties: { 6121 byteStart: { 6122 type: 'integer', 6123 minimum: 0, 6124 }, 6125 byteEnd: { 6126 type: 'integer', 6127 minimum: 0, 6128 }, 6129 }, 6130 }, 6131 }, 6132 }, 6133 AppBskyUnspeccedDefs: { 6134 lexicon: 1, 6135 id: 'app.bsky.unspecced.defs', 6136 defs: { 6137 skeletonSearchPost: { 6138 type: 'object', 6139 required: ['uri'], 6140 properties: { 6141 uri: { 6142 type: 'string', 6143 format: 'at-uri', 6144 }, 6145 }, 6146 }, 6147 skeletonSearchActor: { 6148 type: 'object', 6149 required: ['did'], 6150 properties: { 6151 did: { 6152 type: 'string', 6153 format: 'did', 6154 }, 6155 }, 6156 }, 6157 skeletonSearchStarterPack: { 6158 type: 'object', 6159 required: ['uri'], 6160 properties: { 6161 uri: { 6162 type: 'string', 6163 format: 'at-uri', 6164 }, 6165 }, 6166 }, 6167 trendingTopic: { 6168 type: 'object', 6169 required: ['topic', 'link'], 6170 properties: { 6171 topic: { 6172 type: 'string', 6173 }, 6174 displayName: { 6175 type: 'string', 6176 }, 6177 description: { 6178 type: 'string', 6179 }, 6180 link: { 6181 type: 'string', 6182 }, 6183 }, 6184 }, 6185 skeletonTrend: { 6186 type: 'object', 6187 required: [ 6188 'topic', 6189 'displayName', 6190 'link', 6191 'startedAt', 6192 'postCount', 6193 'dids', 6194 ], 6195 properties: { 6196 topic: { 6197 type: 'string', 6198 }, 6199 displayName: { 6200 type: 'string', 6201 }, 6202 link: { 6203 type: 'string', 6204 }, 6205 startedAt: { 6206 type: 'string', 6207 format: 'datetime', 6208 }, 6209 postCount: { 6210 type: 'integer', 6211 }, 6212 status: { 6213 type: 'string', 6214 knownValues: ['hot'], 6215 }, 6216 category: { 6217 type: 'string', 6218 }, 6219 dids: { 6220 type: 'array', 6221 items: { 6222 type: 'string', 6223 format: 'did', 6224 }, 6225 }, 6226 }, 6227 }, 6228 trendView: { 6229 type: 'object', 6230 required: [ 6231 'topic', 6232 'displayName', 6233 'link', 6234 'startedAt', 6235 'postCount', 6236 'actors', 6237 ], 6238 properties: { 6239 topic: { 6240 type: 'string', 6241 }, 6242 displayName: { 6243 type: 'string', 6244 }, 6245 link: { 6246 type: 'string', 6247 }, 6248 startedAt: { 6249 type: 'string', 6250 format: 'datetime', 6251 }, 6252 postCount: { 6253 type: 'integer', 6254 }, 6255 status: { 6256 type: 'string', 6257 knownValues: ['hot'], 6258 }, 6259 category: { 6260 type: 'string', 6261 }, 6262 actors: { 6263 type: 'array', 6264 items: { 6265 type: 'ref', 6266 ref: 'lex:app.bsky.actor.defs#profileViewBasic', 6267 }, 6268 }, 6269 }, 6270 }, 6271 threadItemPost: { 6272 type: 'object', 6273 required: [ 6274 'post', 6275 'moreParents', 6276 'moreReplies', 6277 'opThread', 6278 'hiddenByThreadgate', 6279 'mutedByViewer', 6280 ], 6281 properties: { 6282 post: { 6283 type: 'ref', 6284 ref: 'lex:app.bsky.feed.defs#postView', 6285 }, 6286 moreParents: { 6287 type: 'boolean', 6288 description: 6289 'This post has more parents that were not present in the response. This is just a boolean, without the number of parents.', 6290 }, 6291 moreReplies: { 6292 type: 'integer', 6293 description: 6294 'This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate.', 6295 }, 6296 opThread: { 6297 type: 'boolean', 6298 description: 6299 'This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread.', 6300 }, 6301 hiddenByThreadgate: { 6302 type: 'boolean', 6303 description: 6304 'The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread.', 6305 }, 6306 mutedByViewer: { 6307 type: 'boolean', 6308 description: 6309 'This is by an account muted by the viewer requesting it.', 6310 }, 6311 }, 6312 }, 6313 threadItemNoUnauthenticated: { 6314 type: 'object', 6315 properties: {}, 6316 }, 6317 threadItemNotFound: { 6318 type: 'object', 6319 properties: {}, 6320 }, 6321 threadItemBlocked: { 6322 type: 'object', 6323 required: ['author'], 6324 properties: { 6325 author: { 6326 type: 'ref', 6327 ref: 'lex:app.bsky.feed.defs#blockedAuthor', 6328 }, 6329 }, 6330 }, 6331 ageAssuranceState: { 6332 type: 'object', 6333 description: 6334 'The computed state of the age assurance process, returned to the user in question on certain authenticated requests.', 6335 required: ['status'], 6336 properties: { 6337 lastInitiatedAt: { 6338 type: 'string', 6339 format: 'datetime', 6340 description: 'The timestamp when this state was last updated.', 6341 }, 6342 status: { 6343 type: 'string', 6344 description: 'The status of the age assurance process.', 6345 knownValues: ['unknown', 'pending', 'assured', 'blocked'], 6346 }, 6347 }, 6348 }, 6349 ageAssuranceEvent: { 6350 type: 'object', 6351 description: 'Object used to store age assurance data in stash.', 6352 required: ['createdAt', 'status', 'attemptId'], 6353 properties: { 6354 createdAt: { 6355 type: 'string', 6356 format: 'datetime', 6357 description: 'The date and time of this write operation.', 6358 }, 6359 status: { 6360 type: 'string', 6361 description: 'The status of the age assurance process.', 6362 knownValues: ['unknown', 'pending', 'assured'], 6363 }, 6364 attemptId: { 6365 type: 'string', 6366 description: 6367 'The unique identifier for this instance of the age assurance flow, in UUID format.', 6368 }, 6369 email: { 6370 type: 'string', 6371 description: 'The email used for AA.', 6372 }, 6373 initIp: { 6374 type: 'string', 6375 description: 'The IP address used when initiating the AA flow.', 6376 }, 6377 initUa: { 6378 type: 'string', 6379 description: 'The user agent used when initiating the AA flow.', 6380 }, 6381 completeIp: { 6382 type: 'string', 6383 description: 'The IP address used when completing the AA flow.', 6384 }, 6385 completeUa: { 6386 type: 'string', 6387 description: 'The user agent used when completing the AA flow.', 6388 }, 6389 }, 6390 }, 6391 }, 6392 }, 6393 AppBskyUnspeccedGetAgeAssuranceState: { 6394 lexicon: 1, 6395 id: 'app.bsky.unspecced.getAgeAssuranceState', 6396 defs: { 6397 main: { 6398 type: 'query', 6399 description: 6400 'Returns the current state of the age assurance process for an account. This is used to check if the user has completed age assurance or if further action is required.', 6401 output: { 6402 encoding: 'application/json', 6403 schema: { 6404 type: 'ref', 6405 ref: 'lex:app.bsky.unspecced.defs#ageAssuranceState', 6406 }, 6407 }, 6408 }, 6409 }, 6410 }, 6411 AppBskyUnspeccedGetConfig: { 6412 lexicon: 1, 6413 id: 'app.bsky.unspecced.getConfig', 6414 defs: { 6415 main: { 6416 type: 'query', 6417 description: 'Get miscellaneous runtime configuration.', 6418 output: { 6419 encoding: 'application/json', 6420 schema: { 6421 type: 'object', 6422 required: [], 6423 properties: { 6424 checkEmailConfirmed: { 6425 type: 'boolean', 6426 }, 6427 liveNow: { 6428 type: 'array', 6429 items: { 6430 type: 'ref', 6431 ref: 'lex:app.bsky.unspecced.getConfig#liveNowConfig', 6432 }, 6433 }, 6434 }, 6435 }, 6436 }, 6437 }, 6438 liveNowConfig: { 6439 type: 'object', 6440 required: ['did', 'domains'], 6441 properties: { 6442 did: { 6443 type: 'string', 6444 format: 'did', 6445 }, 6446 domains: { 6447 type: 'array', 6448 items: { 6449 type: 'string', 6450 }, 6451 }, 6452 }, 6453 }, 6454 }, 6455 }, 6456 AppBskyUnspeccedGetPopularFeedGenerators: { 6457 lexicon: 1, 6458 id: 'app.bsky.unspecced.getPopularFeedGenerators', 6459 defs: { 6460 main: { 6461 type: 'query', 6462 description: 'An unspecced view of globally popular feed generators.', 6463 parameters: { 6464 type: 'params', 6465 properties: { 6466 limit: { 6467 type: 'integer', 6468 minimum: 1, 6469 maximum: 100, 6470 default: 50, 6471 }, 6472 cursor: { 6473 type: 'string', 6474 }, 6475 query: { 6476 type: 'string', 6477 }, 6478 }, 6479 }, 6480 output: { 6481 encoding: 'application/json', 6482 schema: { 6483 type: 'object', 6484 required: ['feeds'], 6485 properties: { 6486 cursor: { 6487 type: 'string', 6488 }, 6489 feeds: { 6490 type: 'array', 6491 items: { 6492 type: 'ref', 6493 ref: 'lex:app.bsky.feed.defs#generatorView', 6494 }, 6495 }, 6496 }, 6497 }, 6498 }, 6499 }, 6500 }, 6501 }, 6502 AppBskyUnspeccedGetPostThreadOtherV2: { 6503 lexicon: 1, 6504 id: 'app.bsky.unspecced.getPostThreadOtherV2', 6505 defs: { 6506 main: { 6507 type: 'query', 6508 description: 6509 "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get additional posts under a thread e.g. replies hidden by threadgate. Based on an anchor post at any depth of the tree, returns top-level replies below that anchor. It does not include ancestors nor the anchor itself. This should be called after exhausting `app.bsky.unspecced.getPostThreadV2`. Does not require auth, but additional metadata and filtering will be applied for authed requests.", 6510 parameters: { 6511 type: 'params', 6512 required: ['anchor'], 6513 properties: { 6514 anchor: { 6515 type: 'string', 6516 format: 'at-uri', 6517 description: 6518 'Reference (AT-URI) to post record. This is the anchor post.', 6519 }, 6520 prioritizeFollowedUsers: { 6521 type: 'boolean', 6522 description: 6523 'Whether to prioritize posts from followed users. It only has effect when the user is authenticated.', 6524 default: false, 6525 }, 6526 }, 6527 }, 6528 output: { 6529 encoding: 'application/json', 6530 schema: { 6531 type: 'object', 6532 required: ['thread'], 6533 properties: { 6534 thread: { 6535 type: 'array', 6536 description: 6537 'A flat list of other thread items. The depth of each item is indicated by the depth property inside the item.', 6538 items: { 6539 type: 'ref', 6540 ref: 'lex:app.bsky.unspecced.getPostThreadOtherV2#threadItem', 6541 }, 6542 }, 6543 }, 6544 }, 6545 }, 6546 }, 6547 threadItem: { 6548 type: 'object', 6549 required: ['uri', 'depth', 'value'], 6550 properties: { 6551 uri: { 6552 type: 'string', 6553 format: 'at-uri', 6554 }, 6555 depth: { 6556 type: 'integer', 6557 description: 6558 'The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths.', 6559 }, 6560 value: { 6561 type: 'union', 6562 refs: ['lex:app.bsky.unspecced.defs#threadItemPost'], 6563 }, 6564 }, 6565 }, 6566 }, 6567 }, 6568 AppBskyUnspeccedGetPostThreadV2: { 6569 lexicon: 1, 6570 id: 'app.bsky.unspecced.getPostThreadV2', 6571 defs: { 6572 main: { 6573 type: 'query', 6574 description: 6575 "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get posts in a thread. It is based in an anchor post at any depth of the tree, and returns posts above it (recursively resolving the parent, without further branching to their replies) and below it (recursive replies, with branching to their replies). Does not require auth, but additional metadata and filtering will be applied for authed requests.", 6576 parameters: { 6577 type: 'params', 6578 required: ['anchor'], 6579 properties: { 6580 anchor: { 6581 type: 'string', 6582 format: 'at-uri', 6583 description: 6584 'Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post.', 6585 }, 6586 above: { 6587 type: 'boolean', 6588 description: 'Whether to include parents above the anchor.', 6589 default: true, 6590 }, 6591 below: { 6592 type: 'integer', 6593 description: 6594 'How many levels of replies to include below the anchor.', 6595 default: 6, 6596 minimum: 0, 6597 maximum: 20, 6598 }, 6599 branchingFactor: { 6600 type: 'integer', 6601 description: 6602 'Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated).', 6603 default: 10, 6604 minimum: 0, 6605 maximum: 100, 6606 }, 6607 prioritizeFollowedUsers: { 6608 type: 'boolean', 6609 description: 6610 'Whether to prioritize posts from followed users. It only has effect when the user is authenticated.', 6611 default: false, 6612 }, 6613 sort: { 6614 type: 'string', 6615 description: 'Sorting for the thread replies.', 6616 knownValues: ['newest', 'oldest', 'top'], 6617 default: 'oldest', 6618 }, 6619 }, 6620 }, 6621 output: { 6622 encoding: 'application/json', 6623 schema: { 6624 type: 'object', 6625 required: ['thread', 'hasOtherReplies'], 6626 properties: { 6627 thread: { 6628 type: 'array', 6629 description: 6630 'A flat list of thread items. The depth of each item is indicated by the depth property inside the item.', 6631 items: { 6632 type: 'ref', 6633 ref: 'lex:app.bsky.unspecced.getPostThreadV2#threadItem', 6634 }, 6635 }, 6636 threadgate: { 6637 type: 'ref', 6638 ref: 'lex:app.bsky.feed.defs#threadgateView', 6639 }, 6640 hasOtherReplies: { 6641 type: 'boolean', 6642 description: 6643 'Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them.', 6644 }, 6645 }, 6646 }, 6647 }, 6648 }, 6649 threadItem: { 6650 type: 'object', 6651 required: ['uri', 'depth', 'value'], 6652 properties: { 6653 uri: { 6654 type: 'string', 6655 format: 'at-uri', 6656 }, 6657 depth: { 6658 type: 'integer', 6659 description: 6660 'The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths.', 6661 }, 6662 value: { 6663 type: 'union', 6664 refs: [ 6665 'lex:app.bsky.unspecced.defs#threadItemPost', 6666 'lex:app.bsky.unspecced.defs#threadItemNoUnauthenticated', 6667 'lex:app.bsky.unspecced.defs#threadItemNotFound', 6668 'lex:app.bsky.unspecced.defs#threadItemBlocked', 6669 ], 6670 }, 6671 }, 6672 }, 6673 }, 6674 }, 6675 AppBskyUnspeccedGetSuggestedFeeds: { 6676 lexicon: 1, 6677 id: 'app.bsky.unspecced.getSuggestedFeeds', 6678 defs: { 6679 main: { 6680 type: 'query', 6681 description: 'Get a list of suggested feeds', 6682 parameters: { 6683 type: 'params', 6684 properties: { 6685 limit: { 6686 type: 'integer', 6687 minimum: 1, 6688 maximum: 25, 6689 default: 10, 6690 }, 6691 }, 6692 }, 6693 output: { 6694 encoding: 'application/json', 6695 schema: { 6696 type: 'object', 6697 required: ['feeds'], 6698 properties: { 6699 feeds: { 6700 type: 'array', 6701 items: { 6702 type: 'ref', 6703 ref: 'lex:app.bsky.feed.defs#generatorView', 6704 }, 6705 }, 6706 }, 6707 }, 6708 }, 6709 }, 6710 }, 6711 }, 6712 AppBskyUnspeccedGetSuggestedFeedsSkeleton: { 6713 lexicon: 1, 6714 id: 'app.bsky.unspecced.getSuggestedFeedsSkeleton', 6715 defs: { 6716 main: { 6717 type: 'query', 6718 description: 6719 'Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds', 6720 parameters: { 6721 type: 'params', 6722 properties: { 6723 viewer: { 6724 type: 'string', 6725 format: 'did', 6726 description: 6727 'DID of the account making the request (not included for public/unauthenticated queries).', 6728 }, 6729 limit: { 6730 type: 'integer', 6731 minimum: 1, 6732 maximum: 25, 6733 default: 10, 6734 }, 6735 }, 6736 }, 6737 output: { 6738 encoding: 'application/json', 6739 schema: { 6740 type: 'object', 6741 required: ['feeds'], 6742 properties: { 6743 feeds: { 6744 type: 'array', 6745 items: { 6746 type: 'string', 6747 format: 'at-uri', 6748 }, 6749 }, 6750 }, 6751 }, 6752 }, 6753 }, 6754 }, 6755 }, 6756 AppBskyUnspeccedGetSuggestedStarterPacks: { 6757 lexicon: 1, 6758 id: 'app.bsky.unspecced.getSuggestedStarterPacks', 6759 defs: { 6760 main: { 6761 type: 'query', 6762 description: 'Get a list of suggested starterpacks', 6763 parameters: { 6764 type: 'params', 6765 properties: { 6766 limit: { 6767 type: 'integer', 6768 minimum: 1, 6769 maximum: 25, 6770 default: 10, 6771 }, 6772 }, 6773 }, 6774 output: { 6775 encoding: 'application/json', 6776 schema: { 6777 type: 'object', 6778 required: ['starterPacks'], 6779 properties: { 6780 starterPacks: { 6781 type: 'array', 6782 items: { 6783 type: 'ref', 6784 ref: 'lex:app.bsky.graph.defs#starterPackView', 6785 }, 6786 }, 6787 }, 6788 }, 6789 }, 6790 }, 6791 }, 6792 }, 6793 AppBskyUnspeccedGetSuggestedStarterPacksSkeleton: { 6794 lexicon: 1, 6795 id: 'app.bsky.unspecced.getSuggestedStarterPacksSkeleton', 6796 defs: { 6797 main: { 6798 type: 'query', 6799 description: 6800 'Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks', 6801 parameters: { 6802 type: 'params', 6803 properties: { 6804 viewer: { 6805 type: 'string', 6806 format: 'did', 6807 description: 6808 'DID of the account making the request (not included for public/unauthenticated queries).', 6809 }, 6810 limit: { 6811 type: 'integer', 6812 minimum: 1, 6813 maximum: 25, 6814 default: 10, 6815 }, 6816 }, 6817 }, 6818 output: { 6819 encoding: 'application/json', 6820 schema: { 6821 type: 'object', 6822 required: ['starterPacks'], 6823 properties: { 6824 starterPacks: { 6825 type: 'array', 6826 items: { 6827 type: 'string', 6828 format: 'at-uri', 6829 }, 6830 }, 6831 }, 6832 }, 6833 }, 6834 }, 6835 }, 6836 }, 6837 AppBskyUnspeccedGetSuggestedUsers: { 6838 lexicon: 1, 6839 id: 'app.bsky.unspecced.getSuggestedUsers', 6840 defs: { 6841 main: { 6842 type: 'query', 6843 description: 'Get a list of suggested users', 6844 parameters: { 6845 type: 'params', 6846 properties: { 6847 category: { 6848 type: 'string', 6849 description: 'Category of users to get suggestions for.', 6850 }, 6851 limit: { 6852 type: 'integer', 6853 minimum: 1, 6854 maximum: 50, 6855 default: 25, 6856 }, 6857 }, 6858 }, 6859 output: { 6860 encoding: 'application/json', 6861 schema: { 6862 type: 'object', 6863 required: ['actors'], 6864 properties: { 6865 actors: { 6866 type: 'array', 6867 items: { 6868 type: 'ref', 6869 ref: 'lex:app.bsky.actor.defs#profileView', 6870 }, 6871 }, 6872 }, 6873 }, 6874 }, 6875 }, 6876 }, 6877 }, 6878 AppBskyUnspeccedGetSuggestedUsersSkeleton: { 6879 lexicon: 1, 6880 id: 'app.bsky.unspecced.getSuggestedUsersSkeleton', 6881 defs: { 6882 main: { 6883 type: 'query', 6884 description: 6885 'Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers', 6886 parameters: { 6887 type: 'params', 6888 properties: { 6889 viewer: { 6890 type: 'string', 6891 format: 'did', 6892 description: 6893 'DID of the account making the request (not included for public/unauthenticated queries).', 6894 }, 6895 category: { 6896 type: 'string', 6897 description: 'Category of users to get suggestions for.', 6898 }, 6899 limit: { 6900 type: 'integer', 6901 minimum: 1, 6902 maximum: 50, 6903 default: 25, 6904 }, 6905 }, 6906 }, 6907 output: { 6908 encoding: 'application/json', 6909 schema: { 6910 type: 'object', 6911 required: ['dids'], 6912 properties: { 6913 dids: { 6914 type: 'array', 6915 items: { 6916 type: 'string', 6917 format: 'did', 6918 }, 6919 }, 6920 }, 6921 }, 6922 }, 6923 }, 6924 }, 6925 }, 6926 AppBskyUnspeccedGetSuggestionsSkeleton: { 6927 lexicon: 1, 6928 id: 'app.bsky.unspecced.getSuggestionsSkeleton', 6929 defs: { 6930 main: { 6931 type: 'query', 6932 description: 6933 'Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions', 6934 parameters: { 6935 type: 'params', 6936 properties: { 6937 viewer: { 6938 type: 'string', 6939 format: 'did', 6940 description: 6941 'DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.', 6942 }, 6943 limit: { 6944 type: 'integer', 6945 minimum: 1, 6946 maximum: 100, 6947 default: 50, 6948 }, 6949 cursor: { 6950 type: 'string', 6951 }, 6952 relativeToDid: { 6953 type: 'string', 6954 format: 'did', 6955 description: 6956 'DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.', 6957 }, 6958 }, 6959 }, 6960 output: { 6961 encoding: 'application/json', 6962 schema: { 6963 type: 'object', 6964 required: ['actors'], 6965 properties: { 6966 cursor: { 6967 type: 'string', 6968 }, 6969 actors: { 6970 type: 'array', 6971 items: { 6972 type: 'ref', 6973 ref: 'lex:app.bsky.unspecced.defs#skeletonSearchActor', 6974 }, 6975 }, 6976 relativeToDid: { 6977 type: 'string', 6978 format: 'did', 6979 description: 6980 'DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer.', 6981 }, 6982 recId: { 6983 type: 'integer', 6984 description: 6985 'Snowflake for this recommendation, use when submitting recommendation events.', 6986 }, 6987 }, 6988 }, 6989 }, 6990 }, 6991 }, 6992 }, 6993 AppBskyUnspeccedGetTaggedSuggestions: { 6994 lexicon: 1, 6995 id: 'app.bsky.unspecced.getTaggedSuggestions', 6996 defs: { 6997 main: { 6998 type: 'query', 6999 description: 7000 'Get a list of suggestions (feeds and users) tagged with categories', 7001 parameters: { 7002 type: 'params', 7003 properties: {}, 7004 }, 7005 output: { 7006 encoding: 'application/json', 7007 schema: { 7008 type: 'object', 7009 required: ['suggestions'], 7010 properties: { 7011 suggestions: { 7012 type: 'array', 7013 items: { 7014 type: 'ref', 7015 ref: 'lex:app.bsky.unspecced.getTaggedSuggestions#suggestion', 7016 }, 7017 }, 7018 }, 7019 }, 7020 }, 7021 }, 7022 suggestion: { 7023 type: 'object', 7024 required: ['tag', 'subjectType', 'subject'], 7025 properties: { 7026 tag: { 7027 type: 'string', 7028 }, 7029 subjectType: { 7030 type: 'string', 7031 knownValues: ['actor', 'feed'], 7032 }, 7033 subject: { 7034 type: 'string', 7035 format: 'uri', 7036 }, 7037 }, 7038 }, 7039 }, 7040 }, 7041 AppBskyUnspeccedGetTrendingTopics: { 7042 lexicon: 1, 7043 id: 'app.bsky.unspecced.getTrendingTopics', 7044 defs: { 7045 main: { 7046 type: 'query', 7047 description: 'Get a list of trending topics', 7048 parameters: { 7049 type: 'params', 7050 properties: { 7051 viewer: { 7052 type: 'string', 7053 format: 'did', 7054 description: 7055 'DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.', 7056 }, 7057 limit: { 7058 type: 'integer', 7059 minimum: 1, 7060 maximum: 25, 7061 default: 10, 7062 }, 7063 }, 7064 }, 7065 output: { 7066 encoding: 'application/json', 7067 schema: { 7068 type: 'object', 7069 required: ['topics', 'suggested'], 7070 properties: { 7071 topics: { 7072 type: 'array', 7073 items: { 7074 type: 'ref', 7075 ref: 'lex:app.bsky.unspecced.defs#trendingTopic', 7076 }, 7077 }, 7078 suggested: { 7079 type: 'array', 7080 items: { 7081 type: 'ref', 7082 ref: 'lex:app.bsky.unspecced.defs#trendingTopic', 7083 }, 7084 }, 7085 }, 7086 }, 7087 }, 7088 }, 7089 }, 7090 }, 7091 AppBskyUnspeccedGetTrends: { 7092 lexicon: 1, 7093 id: 'app.bsky.unspecced.getTrends', 7094 defs: { 7095 main: { 7096 type: 'query', 7097 description: 'Get the current trends on the network', 7098 parameters: { 7099 type: 'params', 7100 properties: { 7101 limit: { 7102 type: 'integer', 7103 minimum: 1, 7104 maximum: 25, 7105 default: 10, 7106 }, 7107 }, 7108 }, 7109 output: { 7110 encoding: 'application/json', 7111 schema: { 7112 type: 'object', 7113 required: ['trends'], 7114 properties: { 7115 trends: { 7116 type: 'array', 7117 items: { 7118 type: 'ref', 7119 ref: 'lex:app.bsky.unspecced.defs#trendView', 7120 }, 7121 }, 7122 }, 7123 }, 7124 }, 7125 }, 7126 }, 7127 }, 7128 AppBskyUnspeccedGetTrendsSkeleton: { 7129 lexicon: 1, 7130 id: 'app.bsky.unspecced.getTrendsSkeleton', 7131 defs: { 7132 main: { 7133 type: 'query', 7134 description: 7135 'Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends', 7136 parameters: { 7137 type: 'params', 7138 properties: { 7139 viewer: { 7140 type: 'string', 7141 format: 'did', 7142 description: 7143 'DID of the account making the request (not included for public/unauthenticated queries).', 7144 }, 7145 limit: { 7146 type: 'integer', 7147 minimum: 1, 7148 maximum: 25, 7149 default: 10, 7150 }, 7151 }, 7152 }, 7153 output: { 7154 encoding: 'application/json', 7155 schema: { 7156 type: 'object', 7157 required: ['trends'], 7158 properties: { 7159 trends: { 7160 type: 'array', 7161 items: { 7162 type: 'ref', 7163 ref: 'lex:app.bsky.unspecced.defs#skeletonTrend', 7164 }, 7165 }, 7166 }, 7167 }, 7168 }, 7169 }, 7170 }, 7171 }, 7172 AppBskyUnspeccedInitAgeAssurance: { 7173 lexicon: 1, 7174 id: 'app.bsky.unspecced.initAgeAssurance', 7175 defs: { 7176 main: { 7177 type: 'procedure', 7178 description: 7179 "Initiate age assurance for an account. This is a one-time action that will start the process of verifying the user's age.", 7180 input: { 7181 encoding: 'application/json', 7182 schema: { 7183 type: 'object', 7184 required: ['email', 'language', 'countryCode'], 7185 properties: { 7186 email: { 7187 type: 'string', 7188 description: 7189 "The user's email address to receive assurance instructions.", 7190 }, 7191 language: { 7192 type: 'string', 7193 description: 7194 "The user's preferred language for communication during the assurance process.", 7195 }, 7196 countryCode: { 7197 type: 'string', 7198 description: 7199 "An ISO 3166-1 alpha-2 code of the user's location.", 7200 }, 7201 }, 7202 }, 7203 }, 7204 output: { 7205 encoding: 'application/json', 7206 schema: { 7207 type: 'ref', 7208 ref: 'lex:app.bsky.unspecced.defs#ageAssuranceState', 7209 }, 7210 }, 7211 errors: [ 7212 { 7213 name: 'InvalidEmail', 7214 }, 7215 { 7216 name: 'DidTooLong', 7217 }, 7218 { 7219 name: 'InvalidInitiation', 7220 }, 7221 ], 7222 }, 7223 }, 7224 }, 7225 AppBskyUnspeccedSearchActorsSkeleton: { 7226 lexicon: 1, 7227 id: 'app.bsky.unspecced.searchActorsSkeleton', 7228 defs: { 7229 main: { 7230 type: 'query', 7231 description: 'Backend Actors (profile) search, returns only skeleton.', 7232 parameters: { 7233 type: 'params', 7234 required: ['q'], 7235 properties: { 7236 q: { 7237 type: 'string', 7238 description: 7239 'Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax.', 7240 }, 7241 viewer: { 7242 type: 'string', 7243 format: 'did', 7244 description: 7245 'DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.', 7246 }, 7247 typeahead: { 7248 type: 'boolean', 7249 description: "If true, acts as fast/simple 'typeahead' query.", 7250 }, 7251 limit: { 7252 type: 'integer', 7253 minimum: 1, 7254 maximum: 100, 7255 default: 25, 7256 }, 7257 cursor: { 7258 type: 'string', 7259 description: 7260 'Optional pagination mechanism; may not necessarily allow scrolling through entire result set.', 7261 }, 7262 }, 7263 }, 7264 output: { 7265 encoding: 'application/json', 7266 schema: { 7267 type: 'object', 7268 required: ['actors'], 7269 properties: { 7270 cursor: { 7271 type: 'string', 7272 }, 7273 hitsTotal: { 7274 type: 'integer', 7275 description: 7276 'Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.', 7277 }, 7278 actors: { 7279 type: 'array', 7280 items: { 7281 type: 'ref', 7282 ref: 'lex:app.bsky.unspecced.defs#skeletonSearchActor', 7283 }, 7284 }, 7285 }, 7286 }, 7287 }, 7288 errors: [ 7289 { 7290 name: 'BadQueryString', 7291 }, 7292 ], 7293 }, 7294 }, 7295 }, 7296 AppBskyUnspeccedSearchPostsSkeleton: { 7297 lexicon: 1, 7298 id: 'app.bsky.unspecced.searchPostsSkeleton', 7299 defs: { 7300 main: { 7301 type: 'query', 7302 description: 'Backend Posts search, returns only skeleton', 7303 parameters: { 7304 type: 'params', 7305 required: ['q'], 7306 properties: { 7307 q: { 7308 type: 'string', 7309 description: 7310 'Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.', 7311 }, 7312 sort: { 7313 type: 'string', 7314 knownValues: ['top', 'latest'], 7315 default: 'latest', 7316 description: 'Specifies the ranking order of results.', 7317 }, 7318 since: { 7319 type: 'string', 7320 description: 7321 "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).", 7322 }, 7323 until: { 7324 type: 'string', 7325 description: 7326 "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).", 7327 }, 7328 mentions: { 7329 type: 'string', 7330 format: 'at-identifier', 7331 description: 7332 'Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.', 7333 }, 7334 author: { 7335 type: 'string', 7336 format: 'at-identifier', 7337 description: 7338 'Filter to posts by the given account. Handles are resolved to DID before query-time.', 7339 }, 7340 lang: { 7341 type: 'string', 7342 format: 'language', 7343 description: 7344 'Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.', 7345 }, 7346 domain: { 7347 type: 'string', 7348 description: 7349 'Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.', 7350 }, 7351 url: { 7352 type: 'string', 7353 format: 'uri', 7354 description: 7355 'Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.', 7356 }, 7357 tag: { 7358 type: 'array', 7359 items: { 7360 type: 'string', 7361 maxLength: 640, 7362 maxGraphemes: 64, 7363 }, 7364 description: 7365 "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.", 7366 }, 7367 viewer: { 7368 type: 'string', 7369 format: 'did', 7370 description: 7371 "DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.", 7372 }, 7373 limit: { 7374 type: 'integer', 7375 minimum: 1, 7376 maximum: 100, 7377 default: 25, 7378 }, 7379 cursor: { 7380 type: 'string', 7381 description: 7382 'Optional pagination mechanism; may not necessarily allow scrolling through entire result set.', 7383 }, 7384 }, 7385 }, 7386 output: { 7387 encoding: 'application/json', 7388 schema: { 7389 type: 'object', 7390 required: ['posts'], 7391 properties: { 7392 cursor: { 7393 type: 'string', 7394 }, 7395 hitsTotal: { 7396 type: 'integer', 7397 description: 7398 'Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.', 7399 }, 7400 posts: { 7401 type: 'array', 7402 items: { 7403 type: 'ref', 7404 ref: 'lex:app.bsky.unspecced.defs#skeletonSearchPost', 7405 }, 7406 }, 7407 }, 7408 }, 7409 }, 7410 errors: [ 7411 { 7412 name: 'BadQueryString', 7413 }, 7414 ], 7415 }, 7416 }, 7417 }, 7418 AppBskyUnspeccedSearchStarterPacksSkeleton: { 7419 lexicon: 1, 7420 id: 'app.bsky.unspecced.searchStarterPacksSkeleton', 7421 defs: { 7422 main: { 7423 type: 'query', 7424 description: 'Backend Starter Pack search, returns only skeleton.', 7425 parameters: { 7426 type: 'params', 7427 required: ['q'], 7428 properties: { 7429 q: { 7430 type: 'string', 7431 description: 7432 'Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.', 7433 }, 7434 viewer: { 7435 type: 'string', 7436 format: 'did', 7437 description: 7438 'DID of the account making the request (not included for public/unauthenticated queries).', 7439 }, 7440 limit: { 7441 type: 'integer', 7442 minimum: 1, 7443 maximum: 100, 7444 default: 25, 7445 }, 7446 cursor: { 7447 type: 'string', 7448 description: 7449 'Optional pagination mechanism; may not necessarily allow scrolling through entire result set.', 7450 }, 7451 }, 7452 }, 7453 output: { 7454 encoding: 'application/json', 7455 schema: { 7456 type: 'object', 7457 required: ['starterPacks'], 7458 properties: { 7459 cursor: { 7460 type: 'string', 7461 }, 7462 hitsTotal: { 7463 type: 'integer', 7464 description: 7465 'Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.', 7466 }, 7467 starterPacks: { 7468 type: 'array', 7469 items: { 7470 type: 'ref', 7471 ref: 'lex:app.bsky.unspecced.defs#skeletonSearchStarterPack', 7472 }, 7473 }, 7474 }, 7475 }, 7476 }, 7477 errors: [ 7478 { 7479 name: 'BadQueryString', 7480 }, 7481 ], 7482 }, 7483 }, 7484 }, 7485 AppBskyVideoDefs: { 7486 lexicon: 1, 7487 id: 'app.bsky.video.defs', 7488 defs: { 7489 jobStatus: { 7490 type: 'object', 7491 required: ['jobId', 'did', 'state'], 7492 properties: { 7493 jobId: { 7494 type: 'string', 7495 }, 7496 did: { 7497 type: 'string', 7498 format: 'did', 7499 }, 7500 state: { 7501 type: 'string', 7502 description: 7503 'The state of the video processing job. All values not listed as a known value indicate that the job is in process.', 7504 knownValues: ['JOB_STATE_COMPLETED', 'JOB_STATE_FAILED'], 7505 }, 7506 progress: { 7507 type: 'integer', 7508 minimum: 0, 7509 maximum: 100, 7510 description: 'Progress within the current processing state.', 7511 }, 7512 blob: { 7513 type: 'blob', 7514 }, 7515 error: { 7516 type: 'string', 7517 }, 7518 message: { 7519 type: 'string', 7520 }, 7521 }, 7522 }, 7523 }, 7524 }, 7525 AppBskyVideoGetJobStatus: { 7526 lexicon: 1, 7527 id: 'app.bsky.video.getJobStatus', 7528 defs: { 7529 main: { 7530 type: 'query', 7531 description: 'Get status details for a video processing job.', 7532 parameters: { 7533 type: 'params', 7534 required: ['jobId'], 7535 properties: { 7536 jobId: { 7537 type: 'string', 7538 }, 7539 }, 7540 }, 7541 output: { 7542 encoding: 'application/json', 7543 schema: { 7544 type: 'object', 7545 required: ['jobStatus'], 7546 properties: { 7547 jobStatus: { 7548 type: 'ref', 7549 ref: 'lex:app.bsky.video.defs#jobStatus', 7550 }, 7551 }, 7552 }, 7553 }, 7554 }, 7555 }, 7556 }, 7557 AppBskyVideoGetUploadLimits: { 7558 lexicon: 1, 7559 id: 'app.bsky.video.getUploadLimits', 7560 defs: { 7561 main: { 7562 type: 'query', 7563 description: 'Get video upload limits for the authenticated user.', 7564 output: { 7565 encoding: 'application/json', 7566 schema: { 7567 type: 'object', 7568 required: ['canUpload'], 7569 properties: { 7570 canUpload: { 7571 type: 'boolean', 7572 }, 7573 remainingDailyVideos: { 7574 type: 'integer', 7575 }, 7576 remainingDailyBytes: { 7577 type: 'integer', 7578 }, 7579 message: { 7580 type: 'string', 7581 }, 7582 error: { 7583 type: 'string', 7584 }, 7585 }, 7586 }, 7587 }, 7588 }, 7589 }, 7590 }, 7591 AppBskyVideoUploadVideo: { 7592 lexicon: 1, 7593 id: 'app.bsky.video.uploadVideo', 7594 defs: { 7595 main: { 7596 type: 'procedure', 7597 description: 'Upload a video to be processed then stored on the PDS.', 7598 input: { 7599 encoding: 'video/mp4', 7600 }, 7601 output: { 7602 encoding: 'application/json', 7603 schema: { 7604 type: 'object', 7605 required: ['jobStatus'], 7606 properties: { 7607 jobStatus: { 7608 type: 'ref', 7609 ref: 'lex:app.bsky.video.defs#jobStatus', 7610 }, 7611 }, 7612 }, 7613 }, 7614 }, 7615 }, 7616 }, 7617 ChatBskyActorDeclaration: { 7618 lexicon: 1, 7619 id: 'chat.bsky.actor.declaration', 7620 defs: { 7621 main: { 7622 type: 'record', 7623 description: 'A declaration of a Bluesky chat account.', 7624 key: 'literal:self', 7625 record: { 7626 type: 'object', 7627 required: ['allowIncoming'], 7628 properties: { 7629 allowIncoming: { 7630 type: 'string', 7631 knownValues: ['all', 'none', 'following'], 7632 }, 7633 }, 7634 }, 7635 }, 7636 }, 7637 }, 7638 ChatBskyActorDefs: { 7639 lexicon: 1, 7640 id: 'chat.bsky.actor.defs', 7641 defs: { 7642 profileViewBasic: { 7643 type: 'object', 7644 required: ['did', 'handle'], 7645 properties: { 7646 did: { 7647 type: 'string', 7648 format: 'did', 7649 }, 7650 handle: { 7651 type: 'string', 7652 format: 'handle', 7653 }, 7654 displayName: { 7655 type: 'string', 7656 maxGraphemes: 64, 7657 maxLength: 640, 7658 }, 7659 avatar: { 7660 type: 'string', 7661 format: 'uri', 7662 }, 7663 associated: { 7664 type: 'ref', 7665 ref: 'lex:app.bsky.actor.defs#profileAssociated', 7666 }, 7667 viewer: { 7668 type: 'ref', 7669 ref: 'lex:app.bsky.actor.defs#viewerState', 7670 }, 7671 labels: { 7672 type: 'array', 7673 items: { 7674 type: 'ref', 7675 ref: 'lex:com.atproto.label.defs#label', 7676 }, 7677 }, 7678 chatDisabled: { 7679 type: 'boolean', 7680 description: 7681 'Set to true when the actor cannot actively participate in conversations', 7682 }, 7683 verification: { 7684 type: 'ref', 7685 ref: 'lex:app.bsky.actor.defs#verificationState', 7686 }, 7687 }, 7688 }, 7689 }, 7690 }, 7691 ChatBskyActorDeleteAccount: { 7692 lexicon: 1, 7693 id: 'chat.bsky.actor.deleteAccount', 7694 defs: { 7695 main: { 7696 type: 'procedure', 7697 output: { 7698 encoding: 'application/json', 7699 schema: { 7700 type: 'object', 7701 properties: {}, 7702 }, 7703 }, 7704 }, 7705 }, 7706 }, 7707 ChatBskyActorExportAccountData: { 7708 lexicon: 1, 7709 id: 'chat.bsky.actor.exportAccountData', 7710 defs: { 7711 main: { 7712 type: 'query', 7713 output: { 7714 encoding: 'application/jsonl', 7715 }, 7716 }, 7717 }, 7718 }, 7719 ChatBskyConvoAcceptConvo: { 7720 lexicon: 1, 7721 id: 'chat.bsky.convo.acceptConvo', 7722 defs: { 7723 main: { 7724 type: 'procedure', 7725 input: { 7726 encoding: 'application/json', 7727 schema: { 7728 type: 'object', 7729 required: ['convoId'], 7730 properties: { 7731 convoId: { 7732 type: 'string', 7733 }, 7734 }, 7735 }, 7736 }, 7737 output: { 7738 encoding: 'application/json', 7739 schema: { 7740 type: 'object', 7741 properties: { 7742 rev: { 7743 description: 7744 'Rev when the convo was accepted. If not present, the convo was already accepted.', 7745 type: 'string', 7746 }, 7747 }, 7748 }, 7749 }, 7750 }, 7751 }, 7752 }, 7753 ChatBskyConvoAddReaction: { 7754 lexicon: 1, 7755 id: 'chat.bsky.convo.addReaction', 7756 defs: { 7757 main: { 7758 type: 'procedure', 7759 description: 7760 'Adds an emoji reaction to a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in a single reaction.', 7761 input: { 7762 encoding: 'application/json', 7763 schema: { 7764 type: 'object', 7765 required: ['convoId', 'messageId', 'value'], 7766 properties: { 7767 convoId: { 7768 type: 'string', 7769 }, 7770 messageId: { 7771 type: 'string', 7772 }, 7773 value: { 7774 type: 'string', 7775 minLength: 1, 7776 maxLength: 64, 7777 minGraphemes: 1, 7778 maxGraphemes: 1, 7779 }, 7780 }, 7781 }, 7782 }, 7783 output: { 7784 encoding: 'application/json', 7785 schema: { 7786 type: 'object', 7787 required: ['message'], 7788 properties: { 7789 message: { 7790 type: 'ref', 7791 ref: 'lex:chat.bsky.convo.defs#messageView', 7792 }, 7793 }, 7794 }, 7795 }, 7796 errors: [ 7797 { 7798 name: 'ReactionMessageDeleted', 7799 description: 7800 'Indicates that the message has been deleted and reactions can no longer be added/removed.', 7801 }, 7802 { 7803 name: 'ReactionLimitReached', 7804 description: 7805 "Indicates that the message has the maximum number of reactions allowed for a single user, and the requested reaction wasn't yet present. If it was already present, the request will not fail since it is idempotent.", 7806 }, 7807 { 7808 name: 'ReactionInvalidValue', 7809 description: 7810 'Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji.', 7811 }, 7812 ], 7813 }, 7814 }, 7815 }, 7816 ChatBskyConvoDefs: { 7817 lexicon: 1, 7818 id: 'chat.bsky.convo.defs', 7819 defs: { 7820 messageRef: { 7821 type: 'object', 7822 required: ['did', 'messageId', 'convoId'], 7823 properties: { 7824 did: { 7825 type: 'string', 7826 format: 'did', 7827 }, 7828 convoId: { 7829 type: 'string', 7830 }, 7831 messageId: { 7832 type: 'string', 7833 }, 7834 }, 7835 }, 7836 messageInput: { 7837 type: 'object', 7838 required: ['text'], 7839 properties: { 7840 text: { 7841 type: 'string', 7842 maxLength: 10000, 7843 maxGraphemes: 1000, 7844 }, 7845 facets: { 7846 type: 'array', 7847 description: 'Annotations of text (mentions, URLs, hashtags, etc)', 7848 items: { 7849 type: 'ref', 7850 ref: 'lex:app.bsky.richtext.facet', 7851 }, 7852 }, 7853 embed: { 7854 type: 'union', 7855 refs: ['lex:app.bsky.embed.record'], 7856 }, 7857 }, 7858 }, 7859 messageView: { 7860 type: 'object', 7861 required: ['id', 'rev', 'text', 'sender', 'sentAt'], 7862 properties: { 7863 id: { 7864 type: 'string', 7865 }, 7866 rev: { 7867 type: 'string', 7868 }, 7869 text: { 7870 type: 'string', 7871 maxLength: 10000, 7872 maxGraphemes: 1000, 7873 }, 7874 facets: { 7875 type: 'array', 7876 description: 'Annotations of text (mentions, URLs, hashtags, etc)', 7877 items: { 7878 type: 'ref', 7879 ref: 'lex:app.bsky.richtext.facet', 7880 }, 7881 }, 7882 embed: { 7883 type: 'union', 7884 refs: ['lex:app.bsky.embed.record#view'], 7885 }, 7886 reactions: { 7887 type: 'array', 7888 description: 7889 'Reactions to this message, in ascending order of creation time.', 7890 items: { 7891 type: 'ref', 7892 ref: 'lex:chat.bsky.convo.defs#reactionView', 7893 }, 7894 }, 7895 sender: { 7896 type: 'ref', 7897 ref: 'lex:chat.bsky.convo.defs#messageViewSender', 7898 }, 7899 sentAt: { 7900 type: 'string', 7901 format: 'datetime', 7902 }, 7903 }, 7904 }, 7905 deletedMessageView: { 7906 type: 'object', 7907 required: ['id', 'rev', 'sender', 'sentAt'], 7908 properties: { 7909 id: { 7910 type: 'string', 7911 }, 7912 rev: { 7913 type: 'string', 7914 }, 7915 sender: { 7916 type: 'ref', 7917 ref: 'lex:chat.bsky.convo.defs#messageViewSender', 7918 }, 7919 sentAt: { 7920 type: 'string', 7921 format: 'datetime', 7922 }, 7923 }, 7924 }, 7925 messageViewSender: { 7926 type: 'object', 7927 required: ['did'], 7928 properties: { 7929 did: { 7930 type: 'string', 7931 format: 'did', 7932 }, 7933 }, 7934 }, 7935 reactionView: { 7936 type: 'object', 7937 required: ['value', 'sender', 'createdAt'], 7938 properties: { 7939 value: { 7940 type: 'string', 7941 }, 7942 sender: { 7943 type: 'ref', 7944 ref: 'lex:chat.bsky.convo.defs#reactionViewSender', 7945 }, 7946 createdAt: { 7947 type: 'string', 7948 format: 'datetime', 7949 }, 7950 }, 7951 }, 7952 reactionViewSender: { 7953 type: 'object', 7954 required: ['did'], 7955 properties: { 7956 did: { 7957 type: 'string', 7958 format: 'did', 7959 }, 7960 }, 7961 }, 7962 messageAndReactionView: { 7963 type: 'object', 7964 required: ['message', 'reaction'], 7965 properties: { 7966 message: { 7967 type: 'ref', 7968 ref: 'lex:chat.bsky.convo.defs#messageView', 7969 }, 7970 reaction: { 7971 type: 'ref', 7972 ref: 'lex:chat.bsky.convo.defs#reactionView', 7973 }, 7974 }, 7975 }, 7976 convoView: { 7977 type: 'object', 7978 required: ['id', 'rev', 'members', 'muted', 'unreadCount'], 7979 properties: { 7980 id: { 7981 type: 'string', 7982 }, 7983 rev: { 7984 type: 'string', 7985 }, 7986 members: { 7987 type: 'array', 7988 items: { 7989 type: 'ref', 7990 ref: 'lex:chat.bsky.actor.defs#profileViewBasic', 7991 }, 7992 }, 7993 lastMessage: { 7994 type: 'union', 7995 refs: [ 7996 'lex:chat.bsky.convo.defs#messageView', 7997 'lex:chat.bsky.convo.defs#deletedMessageView', 7998 ], 7999 }, 8000 lastReaction: { 8001 type: 'union', 8002 refs: ['lex:chat.bsky.convo.defs#messageAndReactionView'], 8003 }, 8004 muted: { 8005 type: 'boolean', 8006 }, 8007 status: { 8008 type: 'string', 8009 knownValues: ['request', 'accepted'], 8010 }, 8011 unreadCount: { 8012 type: 'integer', 8013 }, 8014 }, 8015 }, 8016 logBeginConvo: { 8017 type: 'object', 8018 required: ['rev', 'convoId'], 8019 properties: { 8020 rev: { 8021 type: 'string', 8022 }, 8023 convoId: { 8024 type: 'string', 8025 }, 8026 }, 8027 }, 8028 logAcceptConvo: { 8029 type: 'object', 8030 required: ['rev', 'convoId'], 8031 properties: { 8032 rev: { 8033 type: 'string', 8034 }, 8035 convoId: { 8036 type: 'string', 8037 }, 8038 }, 8039 }, 8040 logLeaveConvo: { 8041 type: 'object', 8042 required: ['rev', 'convoId'], 8043 properties: { 8044 rev: { 8045 type: 'string', 8046 }, 8047 convoId: { 8048 type: 'string', 8049 }, 8050 }, 8051 }, 8052 logMuteConvo: { 8053 type: 'object', 8054 required: ['rev', 'convoId'], 8055 properties: { 8056 rev: { 8057 type: 'string', 8058 }, 8059 convoId: { 8060 type: 'string', 8061 }, 8062 }, 8063 }, 8064 logUnmuteConvo: { 8065 type: 'object', 8066 required: ['rev', 'convoId'], 8067 properties: { 8068 rev: { 8069 type: 'string', 8070 }, 8071 convoId: { 8072 type: 'string', 8073 }, 8074 }, 8075 }, 8076 logCreateMessage: { 8077 type: 'object', 8078 required: ['rev', 'convoId', 'message'], 8079 properties: { 8080 rev: { 8081 type: 'string', 8082 }, 8083 convoId: { 8084 type: 'string', 8085 }, 8086 message: { 8087 type: 'union', 8088 refs: [ 8089 'lex:chat.bsky.convo.defs#messageView', 8090 'lex:chat.bsky.convo.defs#deletedMessageView', 8091 ], 8092 }, 8093 }, 8094 }, 8095 logDeleteMessage: { 8096 type: 'object', 8097 required: ['rev', 'convoId', 'message'], 8098 properties: { 8099 rev: { 8100 type: 'string', 8101 }, 8102 convoId: { 8103 type: 'string', 8104 }, 8105 message: { 8106 type: 'union', 8107 refs: [ 8108 'lex:chat.bsky.convo.defs#messageView', 8109 'lex:chat.bsky.convo.defs#deletedMessageView', 8110 ], 8111 }, 8112 }, 8113 }, 8114 logReadMessage: { 8115 type: 'object', 8116 required: ['rev', 'convoId', 'message'], 8117 properties: { 8118 rev: { 8119 type: 'string', 8120 }, 8121 convoId: { 8122 type: 'string', 8123 }, 8124 message: { 8125 type: 'union', 8126 refs: [ 8127 'lex:chat.bsky.convo.defs#messageView', 8128 'lex:chat.bsky.convo.defs#deletedMessageView', 8129 ], 8130 }, 8131 }, 8132 }, 8133 logAddReaction: { 8134 type: 'object', 8135 required: ['rev', 'convoId', 'message', 'reaction'], 8136 properties: { 8137 rev: { 8138 type: 'string', 8139 }, 8140 convoId: { 8141 type: 'string', 8142 }, 8143 message: { 8144 type: 'union', 8145 refs: [ 8146 'lex:chat.bsky.convo.defs#messageView', 8147 'lex:chat.bsky.convo.defs#deletedMessageView', 8148 ], 8149 }, 8150 reaction: { 8151 type: 'ref', 8152 ref: 'lex:chat.bsky.convo.defs#reactionView', 8153 }, 8154 }, 8155 }, 8156 logRemoveReaction: { 8157 type: 'object', 8158 required: ['rev', 'convoId', 'message', 'reaction'], 8159 properties: { 8160 rev: { 8161 type: 'string', 8162 }, 8163 convoId: { 8164 type: 'string', 8165 }, 8166 message: { 8167 type: 'union', 8168 refs: [ 8169 'lex:chat.bsky.convo.defs#messageView', 8170 'lex:chat.bsky.convo.defs#deletedMessageView', 8171 ], 8172 }, 8173 reaction: { 8174 type: 'ref', 8175 ref: 'lex:chat.bsky.convo.defs#reactionView', 8176 }, 8177 }, 8178 }, 8179 }, 8180 }, 8181 ChatBskyConvoDeleteMessageForSelf: { 8182 lexicon: 1, 8183 id: 'chat.bsky.convo.deleteMessageForSelf', 8184 defs: { 8185 main: { 8186 type: 'procedure', 8187 input: { 8188 encoding: 'application/json', 8189 schema: { 8190 type: 'object', 8191 required: ['convoId', 'messageId'], 8192 properties: { 8193 convoId: { 8194 type: 'string', 8195 }, 8196 messageId: { 8197 type: 'string', 8198 }, 8199 }, 8200 }, 8201 }, 8202 output: { 8203 encoding: 'application/json', 8204 schema: { 8205 type: 'ref', 8206 ref: 'lex:chat.bsky.convo.defs#deletedMessageView', 8207 }, 8208 }, 8209 }, 8210 }, 8211 }, 8212 ChatBskyConvoGetConvo: { 8213 lexicon: 1, 8214 id: 'chat.bsky.convo.getConvo', 8215 defs: { 8216 main: { 8217 type: 'query', 8218 parameters: { 8219 type: 'params', 8220 required: ['convoId'], 8221 properties: { 8222 convoId: { 8223 type: 'string', 8224 }, 8225 }, 8226 }, 8227 output: { 8228 encoding: 'application/json', 8229 schema: { 8230 type: 'object', 8231 required: ['convo'], 8232 properties: { 8233 convo: { 8234 type: 'ref', 8235 ref: 'lex:chat.bsky.convo.defs#convoView', 8236 }, 8237 }, 8238 }, 8239 }, 8240 }, 8241 }, 8242 }, 8243 ChatBskyConvoGetConvoAvailability: { 8244 lexicon: 1, 8245 id: 'chat.bsky.convo.getConvoAvailability', 8246 defs: { 8247 main: { 8248 type: 'query', 8249 description: 8250 'Get whether the requester and the other members can chat. If an existing convo is found for these members, it is returned.', 8251 parameters: { 8252 type: 'params', 8253 required: ['members'], 8254 properties: { 8255 members: { 8256 type: 'array', 8257 minLength: 1, 8258 maxLength: 10, 8259 items: { 8260 type: 'string', 8261 format: 'did', 8262 }, 8263 }, 8264 }, 8265 }, 8266 output: { 8267 encoding: 'application/json', 8268 schema: { 8269 type: 'object', 8270 required: ['canChat'], 8271 properties: { 8272 canChat: { 8273 type: 'boolean', 8274 }, 8275 convo: { 8276 type: 'ref', 8277 ref: 'lex:chat.bsky.convo.defs#convoView', 8278 }, 8279 }, 8280 }, 8281 }, 8282 }, 8283 }, 8284 }, 8285 ChatBskyConvoGetConvoForMembers: { 8286 lexicon: 1, 8287 id: 'chat.bsky.convo.getConvoForMembers', 8288 defs: { 8289 main: { 8290 type: 'query', 8291 parameters: { 8292 type: 'params', 8293 required: ['members'], 8294 properties: { 8295 members: { 8296 type: 'array', 8297 minLength: 1, 8298 maxLength: 10, 8299 items: { 8300 type: 'string', 8301 format: 'did', 8302 }, 8303 }, 8304 }, 8305 }, 8306 output: { 8307 encoding: 'application/json', 8308 schema: { 8309 type: 'object', 8310 required: ['convo'], 8311 properties: { 8312 convo: { 8313 type: 'ref', 8314 ref: 'lex:chat.bsky.convo.defs#convoView', 8315 }, 8316 }, 8317 }, 8318 }, 8319 }, 8320 }, 8321 }, 8322 ChatBskyConvoGetLog: { 8323 lexicon: 1, 8324 id: 'chat.bsky.convo.getLog', 8325 defs: { 8326 main: { 8327 type: 'query', 8328 parameters: { 8329 type: 'params', 8330 required: [], 8331 properties: { 8332 cursor: { 8333 type: 'string', 8334 }, 8335 }, 8336 }, 8337 output: { 8338 encoding: 'application/json', 8339 schema: { 8340 type: 'object', 8341 required: ['logs'], 8342 properties: { 8343 cursor: { 8344 type: 'string', 8345 }, 8346 logs: { 8347 type: 'array', 8348 items: { 8349 type: 'union', 8350 refs: [ 8351 'lex:chat.bsky.convo.defs#logBeginConvo', 8352 'lex:chat.bsky.convo.defs#logAcceptConvo', 8353 'lex:chat.bsky.convo.defs#logLeaveConvo', 8354 'lex:chat.bsky.convo.defs#logMuteConvo', 8355 'lex:chat.bsky.convo.defs#logUnmuteConvo', 8356 'lex:chat.bsky.convo.defs#logCreateMessage', 8357 'lex:chat.bsky.convo.defs#logDeleteMessage', 8358 'lex:chat.bsky.convo.defs#logReadMessage', 8359 'lex:chat.bsky.convo.defs#logAddReaction', 8360 'lex:chat.bsky.convo.defs#logRemoveReaction', 8361 ], 8362 }, 8363 }, 8364 }, 8365 }, 8366 }, 8367 }, 8368 }, 8369 }, 8370 ChatBskyConvoGetMessages: { 8371 lexicon: 1, 8372 id: 'chat.bsky.convo.getMessages', 8373 defs: { 8374 main: { 8375 type: 'query', 8376 parameters: { 8377 type: 'params', 8378 required: ['convoId'], 8379 properties: { 8380 convoId: { 8381 type: 'string', 8382 }, 8383 limit: { 8384 type: 'integer', 8385 minimum: 1, 8386 maximum: 100, 8387 default: 50, 8388 }, 8389 cursor: { 8390 type: 'string', 8391 }, 8392 }, 8393 }, 8394 output: { 8395 encoding: 'application/json', 8396 schema: { 8397 type: 'object', 8398 required: ['messages'], 8399 properties: { 8400 cursor: { 8401 type: 'string', 8402 }, 8403 messages: { 8404 type: 'array', 8405 items: { 8406 type: 'union', 8407 refs: [ 8408 'lex:chat.bsky.convo.defs#messageView', 8409 'lex:chat.bsky.convo.defs#deletedMessageView', 8410 ], 8411 }, 8412 }, 8413 }, 8414 }, 8415 }, 8416 }, 8417 }, 8418 }, 8419 ChatBskyConvoLeaveConvo: { 8420 lexicon: 1, 8421 id: 'chat.bsky.convo.leaveConvo', 8422 defs: { 8423 main: { 8424 type: 'procedure', 8425 input: { 8426 encoding: 'application/json', 8427 schema: { 8428 type: 'object', 8429 required: ['convoId'], 8430 properties: { 8431 convoId: { 8432 type: 'string', 8433 }, 8434 }, 8435 }, 8436 }, 8437 output: { 8438 encoding: 'application/json', 8439 schema: { 8440 type: 'object', 8441 required: ['convoId', 'rev'], 8442 properties: { 8443 convoId: { 8444 type: 'string', 8445 }, 8446 rev: { 8447 type: 'string', 8448 }, 8449 }, 8450 }, 8451 }, 8452 }, 8453 }, 8454 }, 8455 ChatBskyConvoListConvos: { 8456 lexicon: 1, 8457 id: 'chat.bsky.convo.listConvos', 8458 defs: { 8459 main: { 8460 type: 'query', 8461 parameters: { 8462 type: 'params', 8463 properties: { 8464 limit: { 8465 type: 'integer', 8466 minimum: 1, 8467 maximum: 100, 8468 default: 50, 8469 }, 8470 cursor: { 8471 type: 'string', 8472 }, 8473 readState: { 8474 type: 'string', 8475 knownValues: ['unread'], 8476 }, 8477 status: { 8478 type: 'string', 8479 knownValues: ['request', 'accepted'], 8480 }, 8481 }, 8482 }, 8483 output: { 8484 encoding: 'application/json', 8485 schema: { 8486 type: 'object', 8487 required: ['convos'], 8488 properties: { 8489 cursor: { 8490 type: 'string', 8491 }, 8492 convos: { 8493 type: 'array', 8494 items: { 8495 type: 'ref', 8496 ref: 'lex:chat.bsky.convo.defs#convoView', 8497 }, 8498 }, 8499 }, 8500 }, 8501 }, 8502 }, 8503 }, 8504 }, 8505 ChatBskyConvoMuteConvo: { 8506 lexicon: 1, 8507 id: 'chat.bsky.convo.muteConvo', 8508 defs: { 8509 main: { 8510 type: 'procedure', 8511 input: { 8512 encoding: 'application/json', 8513 schema: { 8514 type: 'object', 8515 required: ['convoId'], 8516 properties: { 8517 convoId: { 8518 type: 'string', 8519 }, 8520 }, 8521 }, 8522 }, 8523 output: { 8524 encoding: 'application/json', 8525 schema: { 8526 type: 'object', 8527 required: ['convo'], 8528 properties: { 8529 convo: { 8530 type: 'ref', 8531 ref: 'lex:chat.bsky.convo.defs#convoView', 8532 }, 8533 }, 8534 }, 8535 }, 8536 }, 8537 }, 8538 }, 8539 ChatBskyConvoRemoveReaction: { 8540 lexicon: 1, 8541 id: 'chat.bsky.convo.removeReaction', 8542 defs: { 8543 main: { 8544 type: 'procedure', 8545 description: 8546 "Removes an emoji reaction from a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in that reaction not being present, even if it already wasn't.", 8547 input: { 8548 encoding: 'application/json', 8549 schema: { 8550 type: 'object', 8551 required: ['convoId', 'messageId', 'value'], 8552 properties: { 8553 convoId: { 8554 type: 'string', 8555 }, 8556 messageId: { 8557 type: 'string', 8558 }, 8559 value: { 8560 type: 'string', 8561 minLength: 1, 8562 maxLength: 64, 8563 minGraphemes: 1, 8564 maxGraphemes: 1, 8565 }, 8566 }, 8567 }, 8568 }, 8569 output: { 8570 encoding: 'application/json', 8571 schema: { 8572 type: 'object', 8573 required: ['message'], 8574 properties: { 8575 message: { 8576 type: 'ref', 8577 ref: 'lex:chat.bsky.convo.defs#messageView', 8578 }, 8579 }, 8580 }, 8581 }, 8582 errors: [ 8583 { 8584 name: 'ReactionMessageDeleted', 8585 description: 8586 'Indicates that the message has been deleted and reactions can no longer be added/removed.', 8587 }, 8588 { 8589 name: 'ReactionInvalidValue', 8590 description: 8591 'Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji.', 8592 }, 8593 ], 8594 }, 8595 }, 8596 }, 8597 ChatBskyConvoSendMessage: { 8598 lexicon: 1, 8599 id: 'chat.bsky.convo.sendMessage', 8600 defs: { 8601 main: { 8602 type: 'procedure', 8603 input: { 8604 encoding: 'application/json', 8605 schema: { 8606 type: 'object', 8607 required: ['convoId', 'message'], 8608 properties: { 8609 convoId: { 8610 type: 'string', 8611 }, 8612 message: { 8613 type: 'ref', 8614 ref: 'lex:chat.bsky.convo.defs#messageInput', 8615 }, 8616 }, 8617 }, 8618 }, 8619 output: { 8620 encoding: 'application/json', 8621 schema: { 8622 type: 'ref', 8623 ref: 'lex:chat.bsky.convo.defs#messageView', 8624 }, 8625 }, 8626 }, 8627 }, 8628 }, 8629 ChatBskyConvoSendMessageBatch: { 8630 lexicon: 1, 8631 id: 'chat.bsky.convo.sendMessageBatch', 8632 defs: { 8633 main: { 8634 type: 'procedure', 8635 input: { 8636 encoding: 'application/json', 8637 schema: { 8638 type: 'object', 8639 required: ['items'], 8640 properties: { 8641 items: { 8642 type: 'array', 8643 maxLength: 100, 8644 items: { 8645 type: 'ref', 8646 ref: 'lex:chat.bsky.convo.sendMessageBatch#batchItem', 8647 }, 8648 }, 8649 }, 8650 }, 8651 }, 8652 output: { 8653 encoding: 'application/json', 8654 schema: { 8655 type: 'object', 8656 required: ['items'], 8657 properties: { 8658 items: { 8659 type: 'array', 8660 items: { 8661 type: 'ref', 8662 ref: 'lex:chat.bsky.convo.defs#messageView', 8663 }, 8664 }, 8665 }, 8666 }, 8667 }, 8668 }, 8669 batchItem: { 8670 type: 'object', 8671 required: ['convoId', 'message'], 8672 properties: { 8673 convoId: { 8674 type: 'string', 8675 }, 8676 message: { 8677 type: 'ref', 8678 ref: 'lex:chat.bsky.convo.defs#messageInput', 8679 }, 8680 }, 8681 }, 8682 }, 8683 }, 8684 ChatBskyConvoUnmuteConvo: { 8685 lexicon: 1, 8686 id: 'chat.bsky.convo.unmuteConvo', 8687 defs: { 8688 main: { 8689 type: 'procedure', 8690 input: { 8691 encoding: 'application/json', 8692 schema: { 8693 type: 'object', 8694 required: ['convoId'], 8695 properties: { 8696 convoId: { 8697 type: 'string', 8698 }, 8699 }, 8700 }, 8701 }, 8702 output: { 8703 encoding: 'application/json', 8704 schema: { 8705 type: 'object', 8706 required: ['convo'], 8707 properties: { 8708 convo: { 8709 type: 'ref', 8710 ref: 'lex:chat.bsky.convo.defs#convoView', 8711 }, 8712 }, 8713 }, 8714 }, 8715 }, 8716 }, 8717 }, 8718 ChatBskyConvoUpdateAllRead: { 8719 lexicon: 1, 8720 id: 'chat.bsky.convo.updateAllRead', 8721 defs: { 8722 main: { 8723 type: 'procedure', 8724 input: { 8725 encoding: 'application/json', 8726 schema: { 8727 type: 'object', 8728 properties: { 8729 status: { 8730 type: 'string', 8731 knownValues: ['request', 'accepted'], 8732 }, 8733 }, 8734 }, 8735 }, 8736 output: { 8737 encoding: 'application/json', 8738 schema: { 8739 type: 'object', 8740 required: ['updatedCount'], 8741 properties: { 8742 updatedCount: { 8743 description: 'The count of updated convos.', 8744 type: 'integer', 8745 }, 8746 }, 8747 }, 8748 }, 8749 }, 8750 }, 8751 }, 8752 ChatBskyConvoUpdateRead: { 8753 lexicon: 1, 8754 id: 'chat.bsky.convo.updateRead', 8755 defs: { 8756 main: { 8757 type: 'procedure', 8758 input: { 8759 encoding: 'application/json', 8760 schema: { 8761 type: 'object', 8762 required: ['convoId'], 8763 properties: { 8764 convoId: { 8765 type: 'string', 8766 }, 8767 messageId: { 8768 type: 'string', 8769 }, 8770 }, 8771 }, 8772 }, 8773 output: { 8774 encoding: 'application/json', 8775 schema: { 8776 type: 'object', 8777 required: ['convo'], 8778 properties: { 8779 convo: { 8780 type: 'ref', 8781 ref: 'lex:chat.bsky.convo.defs#convoView', 8782 }, 8783 }, 8784 }, 8785 }, 8786 }, 8787 }, 8788 }, 8789 ChatBskyModerationGetActorMetadata: { 8790 lexicon: 1, 8791 id: 'chat.bsky.moderation.getActorMetadata', 8792 defs: { 8793 main: { 8794 type: 'query', 8795 parameters: { 8796 type: 'params', 8797 required: ['actor'], 8798 properties: { 8799 actor: { 8800 type: 'string', 8801 format: 'did', 8802 }, 8803 }, 8804 }, 8805 output: { 8806 encoding: 'application/json', 8807 schema: { 8808 type: 'object', 8809 required: ['day', 'month', 'all'], 8810 properties: { 8811 day: { 8812 type: 'ref', 8813 ref: 'lex:chat.bsky.moderation.getActorMetadata#metadata', 8814 }, 8815 month: { 8816 type: 'ref', 8817 ref: 'lex:chat.bsky.moderation.getActorMetadata#metadata', 8818 }, 8819 all: { 8820 type: 'ref', 8821 ref: 'lex:chat.bsky.moderation.getActorMetadata#metadata', 8822 }, 8823 }, 8824 }, 8825 }, 8826 }, 8827 metadata: { 8828 type: 'object', 8829 required: [ 8830 'messagesSent', 8831 'messagesReceived', 8832 'convos', 8833 'convosStarted', 8834 ], 8835 properties: { 8836 messagesSent: { 8837 type: 'integer', 8838 }, 8839 messagesReceived: { 8840 type: 'integer', 8841 }, 8842 convos: { 8843 type: 'integer', 8844 }, 8845 convosStarted: { 8846 type: 'integer', 8847 }, 8848 }, 8849 }, 8850 }, 8851 }, 8852 ChatBskyModerationGetMessageContext: { 8853 lexicon: 1, 8854 id: 'chat.bsky.moderation.getMessageContext', 8855 defs: { 8856 main: { 8857 type: 'query', 8858 parameters: { 8859 type: 'params', 8860 required: ['messageId'], 8861 properties: { 8862 convoId: { 8863 type: 'string', 8864 description: 8865 'Conversation that the message is from. NOTE: this field will eventually be required.', 8866 }, 8867 messageId: { 8868 type: 'string', 8869 }, 8870 before: { 8871 type: 'integer', 8872 default: 5, 8873 }, 8874 after: { 8875 type: 'integer', 8876 default: 5, 8877 }, 8878 }, 8879 }, 8880 output: { 8881 encoding: 'application/json', 8882 schema: { 8883 type: 'object', 8884 required: ['messages'], 8885 properties: { 8886 messages: { 8887 type: 'array', 8888 items: { 8889 type: 'union', 8890 refs: [ 8891 'lex:chat.bsky.convo.defs#messageView', 8892 'lex:chat.bsky.convo.defs#deletedMessageView', 8893 ], 8894 }, 8895 }, 8896 }, 8897 }, 8898 }, 8899 }, 8900 }, 8901 }, 8902 ChatBskyModerationUpdateActorAccess: { 8903 lexicon: 1, 8904 id: 'chat.bsky.moderation.updateActorAccess', 8905 defs: { 8906 main: { 8907 type: 'procedure', 8908 input: { 8909 encoding: 'application/json', 8910 schema: { 8911 type: 'object', 8912 required: ['actor', 'allowAccess'], 8913 properties: { 8914 actor: { 8915 type: 'string', 8916 format: 'did', 8917 }, 8918 allowAccess: { 8919 type: 'boolean', 8920 }, 8921 ref: { 8922 type: 'string', 8923 }, 8924 }, 8925 }, 8926 }, 8927 }, 8928 }, 8929 }, 8930 ComAtprotoAdminDefs: { 8931 lexicon: 1, 8932 id: 'com.atproto.admin.defs', 8933 defs: { 8934 statusAttr: { 8935 type: 'object', 8936 required: ['applied'], 8937 properties: { 8938 applied: { 8939 type: 'boolean', 8940 }, 8941 ref: { 8942 type: 'string', 8943 }, 8944 }, 8945 }, 8946 accountView: { 8947 type: 'object', 8948 required: ['did', 'handle', 'indexedAt'], 8949 properties: { 8950 did: { 8951 type: 'string', 8952 format: 'did', 8953 }, 8954 handle: { 8955 type: 'string', 8956 format: 'handle', 8957 }, 8958 email: { 8959 type: 'string', 8960 }, 8961 relatedRecords: { 8962 type: 'array', 8963 items: { 8964 type: 'unknown', 8965 }, 8966 }, 8967 indexedAt: { 8968 type: 'string', 8969 format: 'datetime', 8970 }, 8971 invitedBy: { 8972 type: 'ref', 8973 ref: 'lex:com.atproto.server.defs#inviteCode', 8974 }, 8975 invites: { 8976 type: 'array', 8977 items: { 8978 type: 'ref', 8979 ref: 'lex:com.atproto.server.defs#inviteCode', 8980 }, 8981 }, 8982 invitesDisabled: { 8983 type: 'boolean', 8984 }, 8985 emailConfirmedAt: { 8986 type: 'string', 8987 format: 'datetime', 8988 }, 8989 inviteNote: { 8990 type: 'string', 8991 }, 8992 deactivatedAt: { 8993 type: 'string', 8994 format: 'datetime', 8995 }, 8996 threatSignatures: { 8997 type: 'array', 8998 items: { 8999 type: 'ref', 9000 ref: 'lex:com.atproto.admin.defs#threatSignature', 9001 }, 9002 }, 9003 }, 9004 }, 9005 repoRef: { 9006 type: 'object', 9007 required: ['did'], 9008 properties: { 9009 did: { 9010 type: 'string', 9011 format: 'did', 9012 }, 9013 }, 9014 }, 9015 repoBlobRef: { 9016 type: 'object', 9017 required: ['did', 'cid'], 9018 properties: { 9019 did: { 9020 type: 'string', 9021 format: 'did', 9022 }, 9023 cid: { 9024 type: 'string', 9025 format: 'cid', 9026 }, 9027 recordUri: { 9028 type: 'string', 9029 format: 'at-uri', 9030 }, 9031 }, 9032 }, 9033 threatSignature: { 9034 type: 'object', 9035 required: ['property', 'value'], 9036 properties: { 9037 property: { 9038 type: 'string', 9039 }, 9040 value: { 9041 type: 'string', 9042 }, 9043 }, 9044 }, 9045 }, 9046 }, 9047 ComAtprotoAdminDeleteAccount: { 9048 lexicon: 1, 9049 id: 'com.atproto.admin.deleteAccount', 9050 defs: { 9051 main: { 9052 type: 'procedure', 9053 description: 'Delete a user account as an administrator.', 9054 input: { 9055 encoding: 'application/json', 9056 schema: { 9057 type: 'object', 9058 required: ['did'], 9059 properties: { 9060 did: { 9061 type: 'string', 9062 format: 'did', 9063 }, 9064 }, 9065 }, 9066 }, 9067 }, 9068 }, 9069 }, 9070 ComAtprotoAdminDisableAccountInvites: { 9071 lexicon: 1, 9072 id: 'com.atproto.admin.disableAccountInvites', 9073 defs: { 9074 main: { 9075 type: 'procedure', 9076 description: 9077 'Disable an account from receiving new invite codes, but does not invalidate existing codes.', 9078 input: { 9079 encoding: 'application/json', 9080 schema: { 9081 type: 'object', 9082 required: ['account'], 9083 properties: { 9084 account: { 9085 type: 'string', 9086 format: 'did', 9087 }, 9088 note: { 9089 type: 'string', 9090 description: 'Optional reason for disabled invites.', 9091 }, 9092 }, 9093 }, 9094 }, 9095 }, 9096 }, 9097 }, 9098 ComAtprotoAdminDisableInviteCodes: { 9099 lexicon: 1, 9100 id: 'com.atproto.admin.disableInviteCodes', 9101 defs: { 9102 main: { 9103 type: 'procedure', 9104 description: 9105 'Disable some set of codes and/or all codes associated with a set of users.', 9106 input: { 9107 encoding: 'application/json', 9108 schema: { 9109 type: 'object', 9110 properties: { 9111 codes: { 9112 type: 'array', 9113 items: { 9114 type: 'string', 9115 }, 9116 }, 9117 accounts: { 9118 type: 'array', 9119 items: { 9120 type: 'string', 9121 }, 9122 }, 9123 }, 9124 }, 9125 }, 9126 }, 9127 }, 9128 }, 9129 ComAtprotoAdminEnableAccountInvites: { 9130 lexicon: 1, 9131 id: 'com.atproto.admin.enableAccountInvites', 9132 defs: { 9133 main: { 9134 type: 'procedure', 9135 description: "Re-enable an account's ability to receive invite codes.", 9136 input: { 9137 encoding: 'application/json', 9138 schema: { 9139 type: 'object', 9140 required: ['account'], 9141 properties: { 9142 account: { 9143 type: 'string', 9144 format: 'did', 9145 }, 9146 note: { 9147 type: 'string', 9148 description: 'Optional reason for enabled invites.', 9149 }, 9150 }, 9151 }, 9152 }, 9153 }, 9154 }, 9155 }, 9156 ComAtprotoAdminGetAccountInfo: { 9157 lexicon: 1, 9158 id: 'com.atproto.admin.getAccountInfo', 9159 defs: { 9160 main: { 9161 type: 'query', 9162 description: 'Get details about an account.', 9163 parameters: { 9164 type: 'params', 9165 required: ['did'], 9166 properties: { 9167 did: { 9168 type: 'string', 9169 format: 'did', 9170 }, 9171 }, 9172 }, 9173 output: { 9174 encoding: 'application/json', 9175 schema: { 9176 type: 'ref', 9177 ref: 'lex:com.atproto.admin.defs#accountView', 9178 }, 9179 }, 9180 }, 9181 }, 9182 }, 9183 ComAtprotoAdminGetAccountInfos: { 9184 lexicon: 1, 9185 id: 'com.atproto.admin.getAccountInfos', 9186 defs: { 9187 main: { 9188 type: 'query', 9189 description: 'Get details about some accounts.', 9190 parameters: { 9191 type: 'params', 9192 required: ['dids'], 9193 properties: { 9194 dids: { 9195 type: 'array', 9196 items: { 9197 type: 'string', 9198 format: 'did', 9199 }, 9200 }, 9201 }, 9202 }, 9203 output: { 9204 encoding: 'application/json', 9205 schema: { 9206 type: 'object', 9207 required: ['infos'], 9208 properties: { 9209 infos: { 9210 type: 'array', 9211 items: { 9212 type: 'ref', 9213 ref: 'lex:com.atproto.admin.defs#accountView', 9214 }, 9215 }, 9216 }, 9217 }, 9218 }, 9219 }, 9220 }, 9221 }, 9222 ComAtprotoAdminGetInviteCodes: { 9223 lexicon: 1, 9224 id: 'com.atproto.admin.getInviteCodes', 9225 defs: { 9226 main: { 9227 type: 'query', 9228 description: 'Get an admin view of invite codes.', 9229 parameters: { 9230 type: 'params', 9231 properties: { 9232 sort: { 9233 type: 'string', 9234 knownValues: ['recent', 'usage'], 9235 default: 'recent', 9236 }, 9237 limit: { 9238 type: 'integer', 9239 minimum: 1, 9240 maximum: 500, 9241 default: 100, 9242 }, 9243 cursor: { 9244 type: 'string', 9245 }, 9246 }, 9247 }, 9248 output: { 9249 encoding: 'application/json', 9250 schema: { 9251 type: 'object', 9252 required: ['codes'], 9253 properties: { 9254 cursor: { 9255 type: 'string', 9256 }, 9257 codes: { 9258 type: 'array', 9259 items: { 9260 type: 'ref', 9261 ref: 'lex:com.atproto.server.defs#inviteCode', 9262 }, 9263 }, 9264 }, 9265 }, 9266 }, 9267 }, 9268 }, 9269 }, 9270 ComAtprotoAdminGetSubjectStatus: { 9271 lexicon: 1, 9272 id: 'com.atproto.admin.getSubjectStatus', 9273 defs: { 9274 main: { 9275 type: 'query', 9276 description: 9277 'Get the service-specific admin status of a subject (account, record, or blob).', 9278 parameters: { 9279 type: 'params', 9280 properties: { 9281 did: { 9282 type: 'string', 9283 format: 'did', 9284 }, 9285 uri: { 9286 type: 'string', 9287 format: 'at-uri', 9288 }, 9289 blob: { 9290 type: 'string', 9291 format: 'cid', 9292 }, 9293 }, 9294 }, 9295 output: { 9296 encoding: 'application/json', 9297 schema: { 9298 type: 'object', 9299 required: ['subject'], 9300 properties: { 9301 subject: { 9302 type: 'union', 9303 refs: [ 9304 'lex:com.atproto.admin.defs#repoRef', 9305 'lex:com.atproto.repo.strongRef', 9306 'lex:com.atproto.admin.defs#repoBlobRef', 9307 ], 9308 }, 9309 takedown: { 9310 type: 'ref', 9311 ref: 'lex:com.atproto.admin.defs#statusAttr', 9312 }, 9313 deactivated: { 9314 type: 'ref', 9315 ref: 'lex:com.atproto.admin.defs#statusAttr', 9316 }, 9317 }, 9318 }, 9319 }, 9320 }, 9321 }, 9322 }, 9323 ComAtprotoAdminSearchAccounts: { 9324 lexicon: 1, 9325 id: 'com.atproto.admin.searchAccounts', 9326 defs: { 9327 main: { 9328 type: 'query', 9329 description: 'Get list of accounts that matches your search query.', 9330 parameters: { 9331 type: 'params', 9332 properties: { 9333 email: { 9334 type: 'string', 9335 }, 9336 cursor: { 9337 type: 'string', 9338 }, 9339 limit: { 9340 type: 'integer', 9341 minimum: 1, 9342 maximum: 100, 9343 default: 50, 9344 }, 9345 }, 9346 }, 9347 output: { 9348 encoding: 'application/json', 9349 schema: { 9350 type: 'object', 9351 required: ['accounts'], 9352 properties: { 9353 cursor: { 9354 type: 'string', 9355 }, 9356 accounts: { 9357 type: 'array', 9358 items: { 9359 type: 'ref', 9360 ref: 'lex:com.atproto.admin.defs#accountView', 9361 }, 9362 }, 9363 }, 9364 }, 9365 }, 9366 }, 9367 }, 9368 }, 9369 ComAtprotoAdminSendEmail: { 9370 lexicon: 1, 9371 id: 'com.atproto.admin.sendEmail', 9372 defs: { 9373 main: { 9374 type: 'procedure', 9375 description: "Send email to a user's account email address.", 9376 input: { 9377 encoding: 'application/json', 9378 schema: { 9379 type: 'object', 9380 required: ['recipientDid', 'content', 'senderDid'], 9381 properties: { 9382 recipientDid: { 9383 type: 'string', 9384 format: 'did', 9385 }, 9386 content: { 9387 type: 'string', 9388 }, 9389 subject: { 9390 type: 'string', 9391 }, 9392 senderDid: { 9393 type: 'string', 9394 format: 'did', 9395 }, 9396 comment: { 9397 type: 'string', 9398 description: 9399 "Additional comment by the sender that won't be used in the email itself but helpful to provide more context for moderators/reviewers", 9400 }, 9401 }, 9402 }, 9403 }, 9404 output: { 9405 encoding: 'application/json', 9406 schema: { 9407 type: 'object', 9408 required: ['sent'], 9409 properties: { 9410 sent: { 9411 type: 'boolean', 9412 }, 9413 }, 9414 }, 9415 }, 9416 }, 9417 }, 9418 }, 9419 ComAtprotoAdminUpdateAccountEmail: { 9420 lexicon: 1, 9421 id: 'com.atproto.admin.updateAccountEmail', 9422 defs: { 9423 main: { 9424 type: 'procedure', 9425 description: "Administrative action to update an account's email.", 9426 input: { 9427 encoding: 'application/json', 9428 schema: { 9429 type: 'object', 9430 required: ['account', 'email'], 9431 properties: { 9432 account: { 9433 type: 'string', 9434 format: 'at-identifier', 9435 description: 'The handle or DID of the repo.', 9436 }, 9437 email: { 9438 type: 'string', 9439 }, 9440 }, 9441 }, 9442 }, 9443 }, 9444 }, 9445 }, 9446 ComAtprotoAdminUpdateAccountHandle: { 9447 lexicon: 1, 9448 id: 'com.atproto.admin.updateAccountHandle', 9449 defs: { 9450 main: { 9451 type: 'procedure', 9452 description: "Administrative action to update an account's handle.", 9453 input: { 9454 encoding: 'application/json', 9455 schema: { 9456 type: 'object', 9457 required: ['did', 'handle'], 9458 properties: { 9459 did: { 9460 type: 'string', 9461 format: 'did', 9462 }, 9463 handle: { 9464 type: 'string', 9465 format: 'handle', 9466 }, 9467 }, 9468 }, 9469 }, 9470 }, 9471 }, 9472 }, 9473 ComAtprotoAdminUpdateAccountPassword: { 9474 lexicon: 1, 9475 id: 'com.atproto.admin.updateAccountPassword', 9476 defs: { 9477 main: { 9478 type: 'procedure', 9479 description: 9480 'Update the password for a user account as an administrator.', 9481 input: { 9482 encoding: 'application/json', 9483 schema: { 9484 type: 'object', 9485 required: ['did', 'password'], 9486 properties: { 9487 did: { 9488 type: 'string', 9489 format: 'did', 9490 }, 9491 password: { 9492 type: 'string', 9493 }, 9494 }, 9495 }, 9496 }, 9497 }, 9498 }, 9499 }, 9500 ComAtprotoAdminUpdateAccountSigningKey: { 9501 lexicon: 1, 9502 id: 'com.atproto.admin.updateAccountSigningKey', 9503 defs: { 9504 main: { 9505 type: 'procedure', 9506 description: 9507 "Administrative action to update an account's signing key in their Did document.", 9508 input: { 9509 encoding: 'application/json', 9510 schema: { 9511 type: 'object', 9512 required: ['did', 'signingKey'], 9513 properties: { 9514 did: { 9515 type: 'string', 9516 format: 'did', 9517 }, 9518 signingKey: { 9519 type: 'string', 9520 format: 'did', 9521 description: 'Did-key formatted public key', 9522 }, 9523 }, 9524 }, 9525 }, 9526 }, 9527 }, 9528 }, 9529 ComAtprotoAdminUpdateSubjectStatus: { 9530 lexicon: 1, 9531 id: 'com.atproto.admin.updateSubjectStatus', 9532 defs: { 9533 main: { 9534 type: 'procedure', 9535 description: 9536 'Update the service-specific admin status of a subject (account, record, or blob).', 9537 input: { 9538 encoding: 'application/json', 9539 schema: { 9540 type: 'object', 9541 required: ['subject'], 9542 properties: { 9543 subject: { 9544 type: 'union', 9545 refs: [ 9546 'lex:com.atproto.admin.defs#repoRef', 9547 'lex:com.atproto.repo.strongRef', 9548 'lex:com.atproto.admin.defs#repoBlobRef', 9549 ], 9550 }, 9551 takedown: { 9552 type: 'ref', 9553 ref: 'lex:com.atproto.admin.defs#statusAttr', 9554 }, 9555 deactivated: { 9556 type: 'ref', 9557 ref: 'lex:com.atproto.admin.defs#statusAttr', 9558 }, 9559 }, 9560 }, 9561 }, 9562 output: { 9563 encoding: 'application/json', 9564 schema: { 9565 type: 'object', 9566 required: ['subject'], 9567 properties: { 9568 subject: { 9569 type: 'union', 9570 refs: [ 9571 'lex:com.atproto.admin.defs#repoRef', 9572 'lex:com.atproto.repo.strongRef', 9573 'lex:com.atproto.admin.defs#repoBlobRef', 9574 ], 9575 }, 9576 takedown: { 9577 type: 'ref', 9578 ref: 'lex:com.atproto.admin.defs#statusAttr', 9579 }, 9580 }, 9581 }, 9582 }, 9583 }, 9584 }, 9585 }, 9586 ComAtprotoIdentityDefs: { 9587 lexicon: 1, 9588 id: 'com.atproto.identity.defs', 9589 defs: { 9590 identityInfo: { 9591 type: 'object', 9592 required: ['did', 'handle', 'didDoc'], 9593 properties: { 9594 did: { 9595 type: 'string', 9596 format: 'did', 9597 }, 9598 handle: { 9599 type: 'string', 9600 format: 'handle', 9601 description: 9602 "The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.", 9603 }, 9604 didDoc: { 9605 type: 'unknown', 9606 description: 'The complete DID document for the identity.', 9607 }, 9608 }, 9609 }, 9610 }, 9611 }, 9612 ComAtprotoIdentityGetRecommendedDidCredentials: { 9613 lexicon: 1, 9614 id: 'com.atproto.identity.getRecommendedDidCredentials', 9615 defs: { 9616 main: { 9617 type: 'query', 9618 description: 9619 'Describe the credentials that should be included in the DID doc of an account that is migrating to this service.', 9620 output: { 9621 encoding: 'application/json', 9622 schema: { 9623 type: 'object', 9624 properties: { 9625 rotationKeys: { 9626 description: 9627 'Recommended rotation keys for PLC dids. Should be undefined (or ignored) for did:webs.', 9628 type: 'array', 9629 items: { 9630 type: 'string', 9631 }, 9632 }, 9633 alsoKnownAs: { 9634 type: 'array', 9635 items: { 9636 type: 'string', 9637 }, 9638 }, 9639 verificationMethods: { 9640 type: 'unknown', 9641 }, 9642 services: { 9643 type: 'unknown', 9644 }, 9645 }, 9646 }, 9647 }, 9648 }, 9649 }, 9650 }, 9651 ComAtprotoIdentityRefreshIdentity: { 9652 lexicon: 1, 9653 id: 'com.atproto.identity.refreshIdentity', 9654 defs: { 9655 main: { 9656 type: 'procedure', 9657 description: 9658 'Request that the server re-resolve an identity (DID and handle). The server may ignore this request, or require authentication, depending on the role, implementation, and policy of the server.', 9659 input: { 9660 encoding: 'application/json', 9661 schema: { 9662 type: 'object', 9663 required: ['identifier'], 9664 properties: { 9665 identifier: { 9666 type: 'string', 9667 format: 'at-identifier', 9668 }, 9669 }, 9670 }, 9671 }, 9672 output: { 9673 encoding: 'application/json', 9674 schema: { 9675 type: 'ref', 9676 ref: 'lex:com.atproto.identity.defs#identityInfo', 9677 }, 9678 }, 9679 errors: [ 9680 { 9681 name: 'HandleNotFound', 9682 description: 9683 'The resolution process confirmed that the handle does not resolve to any DID.', 9684 }, 9685 { 9686 name: 'DidNotFound', 9687 description: 9688 'The DID resolution process confirmed that there is no current DID.', 9689 }, 9690 { 9691 name: 'DidDeactivated', 9692 description: 9693 'The DID previously existed, but has been deactivated.', 9694 }, 9695 ], 9696 }, 9697 }, 9698 }, 9699 ComAtprotoIdentityRequestPlcOperationSignature: { 9700 lexicon: 1, 9701 id: 'com.atproto.identity.requestPlcOperationSignature', 9702 defs: { 9703 main: { 9704 type: 'procedure', 9705 description: 9706 'Request an email with a code to in order to request a signed PLC operation. Requires Auth.', 9707 }, 9708 }, 9709 }, 9710 ComAtprotoIdentityResolveDid: { 9711 lexicon: 1, 9712 id: 'com.atproto.identity.resolveDid', 9713 defs: { 9714 main: { 9715 type: 'query', 9716 description: 9717 'Resolves DID to DID document. Does not bi-directionally verify handle.', 9718 parameters: { 9719 type: 'params', 9720 required: ['did'], 9721 properties: { 9722 did: { 9723 type: 'string', 9724 format: 'did', 9725 description: 'DID to resolve.', 9726 }, 9727 }, 9728 }, 9729 output: { 9730 encoding: 'application/json', 9731 schema: { 9732 type: 'object', 9733 required: ['didDoc'], 9734 properties: { 9735 didDoc: { 9736 type: 'unknown', 9737 description: 'The complete DID document for the identity.', 9738 }, 9739 }, 9740 }, 9741 }, 9742 errors: [ 9743 { 9744 name: 'DidNotFound', 9745 description: 9746 'The DID resolution process confirmed that there is no current DID.', 9747 }, 9748 { 9749 name: 'DidDeactivated', 9750 description: 9751 'The DID previously existed, but has been deactivated.', 9752 }, 9753 ], 9754 }, 9755 }, 9756 }, 9757 ComAtprotoIdentityResolveHandle: { 9758 lexicon: 1, 9759 id: 'com.atproto.identity.resolveHandle', 9760 defs: { 9761 main: { 9762 type: 'query', 9763 description: 9764 'Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.', 9765 parameters: { 9766 type: 'params', 9767 required: ['handle'], 9768 properties: { 9769 handle: { 9770 type: 'string', 9771 format: 'handle', 9772 description: 'The handle to resolve.', 9773 }, 9774 }, 9775 }, 9776 output: { 9777 encoding: 'application/json', 9778 schema: { 9779 type: 'object', 9780 required: ['did'], 9781 properties: { 9782 did: { 9783 type: 'string', 9784 format: 'did', 9785 }, 9786 }, 9787 }, 9788 }, 9789 errors: [ 9790 { 9791 name: 'HandleNotFound', 9792 description: 9793 'The resolution process confirmed that the handle does not resolve to any DID.', 9794 }, 9795 ], 9796 }, 9797 }, 9798 }, 9799 ComAtprotoIdentityResolveIdentity: { 9800 lexicon: 1, 9801 id: 'com.atproto.identity.resolveIdentity', 9802 defs: { 9803 main: { 9804 type: 'query', 9805 description: 9806 'Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).', 9807 parameters: { 9808 type: 'params', 9809 required: ['identifier'], 9810 properties: { 9811 identifier: { 9812 type: 'string', 9813 format: 'at-identifier', 9814 description: 'Handle or DID to resolve.', 9815 }, 9816 }, 9817 }, 9818 output: { 9819 encoding: 'application/json', 9820 schema: { 9821 type: 'ref', 9822 ref: 'lex:com.atproto.identity.defs#identityInfo', 9823 }, 9824 }, 9825 errors: [ 9826 { 9827 name: 'HandleNotFound', 9828 description: 9829 'The resolution process confirmed that the handle does not resolve to any DID.', 9830 }, 9831 { 9832 name: 'DidNotFound', 9833 description: 9834 'The DID resolution process confirmed that there is no current DID.', 9835 }, 9836 { 9837 name: 'DidDeactivated', 9838 description: 9839 'The DID previously existed, but has been deactivated.', 9840 }, 9841 ], 9842 }, 9843 }, 9844 }, 9845 ComAtprotoIdentitySignPlcOperation: { 9846 lexicon: 1, 9847 id: 'com.atproto.identity.signPlcOperation', 9848 defs: { 9849 main: { 9850 type: 'procedure', 9851 description: 9852 "Signs a PLC operation to update some value(s) in the requesting DID's document.", 9853 input: { 9854 encoding: 'application/json', 9855 schema: { 9856 type: 'object', 9857 properties: { 9858 token: { 9859 description: 9860 'A token received through com.atproto.identity.requestPlcOperationSignature', 9861 type: 'string', 9862 }, 9863 rotationKeys: { 9864 type: 'array', 9865 items: { 9866 type: 'string', 9867 }, 9868 }, 9869 alsoKnownAs: { 9870 type: 'array', 9871 items: { 9872 type: 'string', 9873 }, 9874 }, 9875 verificationMethods: { 9876 type: 'unknown', 9877 }, 9878 services: { 9879 type: 'unknown', 9880 }, 9881 }, 9882 }, 9883 }, 9884 output: { 9885 encoding: 'application/json', 9886 schema: { 9887 type: 'object', 9888 required: ['operation'], 9889 properties: { 9890 operation: { 9891 type: 'unknown', 9892 description: 'A signed DID PLC operation.', 9893 }, 9894 }, 9895 }, 9896 }, 9897 }, 9898 }, 9899 }, 9900 ComAtprotoIdentitySubmitPlcOperation: { 9901 lexicon: 1, 9902 id: 'com.atproto.identity.submitPlcOperation', 9903 defs: { 9904 main: { 9905 type: 'procedure', 9906 description: 9907 "Validates a PLC operation to ensure that it doesn't violate a service's constraints or get the identity into a bad state, then submits it to the PLC registry", 9908 input: { 9909 encoding: 'application/json', 9910 schema: { 9911 type: 'object', 9912 required: ['operation'], 9913 properties: { 9914 operation: { 9915 type: 'unknown', 9916 }, 9917 }, 9918 }, 9919 }, 9920 }, 9921 }, 9922 }, 9923 ComAtprotoIdentityUpdateHandle: { 9924 lexicon: 1, 9925 id: 'com.atproto.identity.updateHandle', 9926 defs: { 9927 main: { 9928 type: 'procedure', 9929 description: 9930 "Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary. Implemented by PDS, and requires auth.", 9931 input: { 9932 encoding: 'application/json', 9933 schema: { 9934 type: 'object', 9935 required: ['handle'], 9936 properties: { 9937 handle: { 9938 type: 'string', 9939 format: 'handle', 9940 description: 'The new handle.', 9941 }, 9942 }, 9943 }, 9944 }, 9945 }, 9946 }, 9947 }, 9948 ComAtprotoLabelDefs: { 9949 lexicon: 1, 9950 id: 'com.atproto.label.defs', 9951 defs: { 9952 label: { 9953 type: 'object', 9954 description: 9955 'Metadata tag on an atproto resource (eg, repo or record).', 9956 required: ['src', 'uri', 'val', 'cts'], 9957 properties: { 9958 ver: { 9959 type: 'integer', 9960 description: 'The AT Protocol version of the label object.', 9961 }, 9962 src: { 9963 type: 'string', 9964 format: 'did', 9965 description: 'DID of the actor who created this label.', 9966 }, 9967 uri: { 9968 type: 'string', 9969 format: 'uri', 9970 description: 9971 'AT URI of the record, repository (account), or other resource that this label applies to.', 9972 }, 9973 cid: { 9974 type: 'string', 9975 format: 'cid', 9976 description: 9977 "Optionally, CID specifying the specific version of 'uri' resource this label applies to.", 9978 }, 9979 val: { 9980 type: 'string', 9981 maxLength: 128, 9982 description: 9983 'The short string name of the value or type of this label.', 9984 }, 9985 neg: { 9986 type: 'boolean', 9987 description: 9988 'If true, this is a negation label, overwriting a previous label.', 9989 }, 9990 cts: { 9991 type: 'string', 9992 format: 'datetime', 9993 description: 'Timestamp when this label was created.', 9994 }, 9995 exp: { 9996 type: 'string', 9997 format: 'datetime', 9998 description: 9999 'Timestamp at which this label expires (no longer applies).', 10000 }, 10001 sig: { 10002 type: 'bytes', 10003 description: 'Signature of dag-cbor encoded label.', 10004 }, 10005 }, 10006 }, 10007 selfLabels: { 10008 type: 'object', 10009 description: 10010 'Metadata tags on an atproto record, published by the author within the record.', 10011 required: ['values'], 10012 properties: { 10013 values: { 10014 type: 'array', 10015 items: { 10016 type: 'ref', 10017 ref: 'lex:com.atproto.label.defs#selfLabel', 10018 }, 10019 maxLength: 10, 10020 }, 10021 }, 10022 }, 10023 selfLabel: { 10024 type: 'object', 10025 description: 10026 'Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.', 10027 required: ['val'], 10028 properties: { 10029 val: { 10030 type: 'string', 10031 maxLength: 128, 10032 description: 10033 'The short string name of the value or type of this label.', 10034 }, 10035 }, 10036 }, 10037 labelValueDefinition: { 10038 type: 'object', 10039 description: 10040 'Declares a label value and its expected interpretations and behaviors.', 10041 required: ['identifier', 'severity', 'blurs', 'locales'], 10042 properties: { 10043 identifier: { 10044 type: 'string', 10045 description: 10046 "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", 10047 maxLength: 100, 10048 maxGraphemes: 100, 10049 }, 10050 severity: { 10051 type: 'string', 10052 description: 10053 "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", 10054 knownValues: ['inform', 'alert', 'none'], 10055 }, 10056 blurs: { 10057 type: 'string', 10058 description: 10059 "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", 10060 knownValues: ['content', 'media', 'none'], 10061 }, 10062 defaultSetting: { 10063 type: 'string', 10064 description: 'The default setting for this label.', 10065 knownValues: ['ignore', 'warn', 'hide'], 10066 default: 'warn', 10067 }, 10068 adultOnly: { 10069 type: 'boolean', 10070 description: 10071 'Does the user need to have adult content enabled in order to configure this label?', 10072 }, 10073 locales: { 10074 type: 'array', 10075 items: { 10076 type: 'ref', 10077 ref: 'lex:com.atproto.label.defs#labelValueDefinitionStrings', 10078 }, 10079 }, 10080 }, 10081 }, 10082 labelValueDefinitionStrings: { 10083 type: 'object', 10084 description: 10085 'Strings which describe the label in the UI, localized into a specific language.', 10086 required: ['lang', 'name', 'description'], 10087 properties: { 10088 lang: { 10089 type: 'string', 10090 description: 10091 'The code of the language these strings are written in.', 10092 format: 'language', 10093 }, 10094 name: { 10095 type: 'string', 10096 description: 'A short human-readable name for the label.', 10097 maxGraphemes: 64, 10098 maxLength: 640, 10099 }, 10100 description: { 10101 type: 'string', 10102 description: 10103 'A longer description of what the label means and why it might be applied.', 10104 maxGraphemes: 10000, 10105 maxLength: 100000, 10106 }, 10107 }, 10108 }, 10109 labelValue: { 10110 type: 'string', 10111 knownValues: [ 10112 '!hide', 10113 '!no-promote', 10114 '!warn', 10115 '!no-unauthenticated', 10116 'dmca-violation', 10117 'doxxing', 10118 'porn', 10119 'sexual', 10120 'nudity', 10121 'nsfl', 10122 'gore', 10123 ], 10124 }, 10125 }, 10126 }, 10127 ComAtprotoLabelQueryLabels: { 10128 lexicon: 1, 10129 id: 'com.atproto.label.queryLabels', 10130 defs: { 10131 main: { 10132 type: 'query', 10133 description: 10134 'Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth.', 10135 parameters: { 10136 type: 'params', 10137 required: ['uriPatterns'], 10138 properties: { 10139 uriPatterns: { 10140 type: 'array', 10141 items: { 10142 type: 'string', 10143 }, 10144 description: 10145 "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.", 10146 }, 10147 sources: { 10148 type: 'array', 10149 items: { 10150 type: 'string', 10151 format: 'did', 10152 }, 10153 description: 10154 'Optional list of label sources (DIDs) to filter on.', 10155 }, 10156 limit: { 10157 type: 'integer', 10158 minimum: 1, 10159 maximum: 250, 10160 default: 50, 10161 }, 10162 cursor: { 10163 type: 'string', 10164 }, 10165 }, 10166 }, 10167 output: { 10168 encoding: 'application/json', 10169 schema: { 10170 type: 'object', 10171 required: ['labels'], 10172 properties: { 10173 cursor: { 10174 type: 'string', 10175 }, 10176 labels: { 10177 type: 'array', 10178 items: { 10179 type: 'ref', 10180 ref: 'lex:com.atproto.label.defs#label', 10181 }, 10182 }, 10183 }, 10184 }, 10185 }, 10186 }, 10187 }, 10188 }, 10189 ComAtprotoLabelSubscribeLabels: { 10190 lexicon: 1, 10191 id: 'com.atproto.label.subscribeLabels', 10192 defs: { 10193 main: { 10194 type: 'subscription', 10195 description: 10196 'Subscribe to stream of labels (and negations). Public endpoint implemented by mod services. Uses same sequencing scheme as repo event stream.', 10197 parameters: { 10198 type: 'params', 10199 properties: { 10200 cursor: { 10201 type: 'integer', 10202 description: 'The last known event seq number to backfill from.', 10203 }, 10204 }, 10205 }, 10206 message: { 10207 schema: { 10208 type: 'union', 10209 refs: [ 10210 'lex:com.atproto.label.subscribeLabels#labels', 10211 'lex:com.atproto.label.subscribeLabels#info', 10212 ], 10213 }, 10214 }, 10215 errors: [ 10216 { 10217 name: 'FutureCursor', 10218 }, 10219 ], 10220 }, 10221 labels: { 10222 type: 'object', 10223 required: ['seq', 'labels'], 10224 properties: { 10225 seq: { 10226 type: 'integer', 10227 }, 10228 labels: { 10229 type: 'array', 10230 items: { 10231 type: 'ref', 10232 ref: 'lex:com.atproto.label.defs#label', 10233 }, 10234 }, 10235 }, 10236 }, 10237 info: { 10238 type: 'object', 10239 required: ['name'], 10240 properties: { 10241 name: { 10242 type: 'string', 10243 knownValues: ['OutdatedCursor'], 10244 }, 10245 message: { 10246 type: 'string', 10247 }, 10248 }, 10249 }, 10250 }, 10251 }, 10252 ComAtprotoLexiconSchema: { 10253 lexicon: 1, 10254 id: 'com.atproto.lexicon.schema', 10255 defs: { 10256 main: { 10257 type: 'record', 10258 description: 10259 "Representation of Lexicon schemas themselves, when published as atproto records. Note that the schema language is not defined in Lexicon; this meta schema currently only includes a single version field ('lexicon'). See the atproto specifications for description of the other expected top-level fields ('id', 'defs', etc).", 10260 key: 'nsid', 10261 record: { 10262 type: 'object', 10263 required: ['lexicon'], 10264 properties: { 10265 lexicon: { 10266 type: 'integer', 10267 description: 10268 "Indicates the 'version' of the Lexicon language. Must be '1' for the current atproto/Lexicon schema system.", 10269 }, 10270 }, 10271 }, 10272 }, 10273 }, 10274 }, 10275 ComAtprotoModerationCreateReport: { 10276 lexicon: 1, 10277 id: 'com.atproto.moderation.createReport', 10278 defs: { 10279 main: { 10280 type: 'procedure', 10281 description: 10282 'Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.', 10283 input: { 10284 encoding: 'application/json', 10285 schema: { 10286 type: 'object', 10287 required: ['reasonType', 'subject'], 10288 properties: { 10289 reasonType: { 10290 type: 'ref', 10291 description: 10292 'Indicates the broad category of violation the report is for.', 10293 ref: 'lex:com.atproto.moderation.defs#reasonType', 10294 }, 10295 reason: { 10296 type: 'string', 10297 maxGraphemes: 2000, 10298 maxLength: 20000, 10299 description: 10300 'Additional context about the content and violation.', 10301 }, 10302 subject: { 10303 type: 'union', 10304 refs: [ 10305 'lex:com.atproto.admin.defs#repoRef', 10306 'lex:com.atproto.repo.strongRef', 10307 ], 10308 }, 10309 modTool: { 10310 type: 'ref', 10311 ref: 'lex:com.atproto.moderation.createReport#modTool', 10312 }, 10313 }, 10314 }, 10315 }, 10316 output: { 10317 encoding: 'application/json', 10318 schema: { 10319 type: 'object', 10320 required: [ 10321 'id', 10322 'reasonType', 10323 'subject', 10324 'reportedBy', 10325 'createdAt', 10326 ], 10327 properties: { 10328 id: { 10329 type: 'integer', 10330 }, 10331 reasonType: { 10332 type: 'ref', 10333 ref: 'lex:com.atproto.moderation.defs#reasonType', 10334 }, 10335 reason: { 10336 type: 'string', 10337 maxGraphemes: 2000, 10338 maxLength: 20000, 10339 }, 10340 subject: { 10341 type: 'union', 10342 refs: [ 10343 'lex:com.atproto.admin.defs#repoRef', 10344 'lex:com.atproto.repo.strongRef', 10345 ], 10346 }, 10347 reportedBy: { 10348 type: 'string', 10349 format: 'did', 10350 }, 10351 createdAt: { 10352 type: 'string', 10353 format: 'datetime', 10354 }, 10355 }, 10356 }, 10357 }, 10358 }, 10359 modTool: { 10360 type: 'object', 10361 description: 10362 'Moderation tool information for tracing the source of the action', 10363 required: ['name'], 10364 properties: { 10365 name: { 10366 type: 'string', 10367 description: 10368 "Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome')", 10369 }, 10370 meta: { 10371 type: 'unknown', 10372 description: 'Additional arbitrary metadata about the source', 10373 }, 10374 }, 10375 }, 10376 }, 10377 }, 10378 ComAtprotoModerationDefs: { 10379 lexicon: 1, 10380 id: 'com.atproto.moderation.defs', 10381 defs: { 10382 reasonType: { 10383 type: 'string', 10384 knownValues: [ 10385 'com.atproto.moderation.defs#reasonSpam', 10386 'com.atproto.moderation.defs#reasonViolation', 10387 'com.atproto.moderation.defs#reasonMisleading', 10388 'com.atproto.moderation.defs#reasonSexual', 10389 'com.atproto.moderation.defs#reasonRude', 10390 'com.atproto.moderation.defs#reasonOther', 10391 'com.atproto.moderation.defs#reasonAppeal', 10392 ], 10393 }, 10394 reasonSpam: { 10395 type: 'token', 10396 description: 'Spam: frequent unwanted promotion, replies, mentions', 10397 }, 10398 reasonViolation: { 10399 type: 'token', 10400 description: 'Direct violation of server rules, laws, terms of service', 10401 }, 10402 reasonMisleading: { 10403 type: 'token', 10404 description: 'Misleading identity, affiliation, or content', 10405 }, 10406 reasonSexual: { 10407 type: 'token', 10408 description: 'Unwanted or mislabeled sexual content', 10409 }, 10410 reasonRude: { 10411 type: 'token', 10412 description: 10413 'Rude, harassing, explicit, or otherwise unwelcoming behavior', 10414 }, 10415 reasonOther: { 10416 type: 'token', 10417 description: 'Other: reports not falling under another report category', 10418 }, 10419 reasonAppeal: { 10420 type: 'token', 10421 description: 'Appeal: appeal a previously taken moderation action', 10422 }, 10423 subjectType: { 10424 type: 'string', 10425 description: 'Tag describing a type of subject that might be reported.', 10426 knownValues: ['account', 'record', 'chat'], 10427 }, 10428 }, 10429 }, 10430 ComAtprotoRepoApplyWrites: { 10431 lexicon: 1, 10432 id: 'com.atproto.repo.applyWrites', 10433 defs: { 10434 main: { 10435 type: 'procedure', 10436 description: 10437 'Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.', 10438 input: { 10439 encoding: 'application/json', 10440 schema: { 10441 type: 'object', 10442 required: ['repo', 'writes'], 10443 properties: { 10444 repo: { 10445 type: 'string', 10446 format: 'at-identifier', 10447 description: 10448 'The handle or DID of the repo (aka, current account).', 10449 }, 10450 validate: { 10451 type: 'boolean', 10452 description: 10453 "Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons.", 10454 }, 10455 writes: { 10456 type: 'array', 10457 items: { 10458 type: 'union', 10459 refs: [ 10460 'lex:com.atproto.repo.applyWrites#create', 10461 'lex:com.atproto.repo.applyWrites#update', 10462 'lex:com.atproto.repo.applyWrites#delete', 10463 ], 10464 closed: true, 10465 }, 10466 }, 10467 swapCommit: { 10468 type: 'string', 10469 description: 10470 'If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.', 10471 format: 'cid', 10472 }, 10473 }, 10474 }, 10475 }, 10476 output: { 10477 encoding: 'application/json', 10478 schema: { 10479 type: 'object', 10480 required: [], 10481 properties: { 10482 commit: { 10483 type: 'ref', 10484 ref: 'lex:com.atproto.repo.defs#commitMeta', 10485 }, 10486 results: { 10487 type: 'array', 10488 items: { 10489 type: 'union', 10490 refs: [ 10491 'lex:com.atproto.repo.applyWrites#createResult', 10492 'lex:com.atproto.repo.applyWrites#updateResult', 10493 'lex:com.atproto.repo.applyWrites#deleteResult', 10494 ], 10495 closed: true, 10496 }, 10497 }, 10498 }, 10499 }, 10500 }, 10501 errors: [ 10502 { 10503 name: 'InvalidSwap', 10504 description: 10505 "Indicates that the 'swapCommit' parameter did not match current commit.", 10506 }, 10507 ], 10508 }, 10509 create: { 10510 type: 'object', 10511 description: 'Operation which creates a new record.', 10512 required: ['collection', 'value'], 10513 properties: { 10514 collection: { 10515 type: 'string', 10516 format: 'nsid', 10517 }, 10518 rkey: { 10519 type: 'string', 10520 maxLength: 512, 10521 format: 'record-key', 10522 description: 10523 'NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility.', 10524 }, 10525 value: { 10526 type: 'unknown', 10527 }, 10528 }, 10529 }, 10530 update: { 10531 type: 'object', 10532 description: 'Operation which updates an existing record.', 10533 required: ['collection', 'rkey', 'value'], 10534 properties: { 10535 collection: { 10536 type: 'string', 10537 format: 'nsid', 10538 }, 10539 rkey: { 10540 type: 'string', 10541 format: 'record-key', 10542 }, 10543 value: { 10544 type: 'unknown', 10545 }, 10546 }, 10547 }, 10548 delete: { 10549 type: 'object', 10550 description: 'Operation which deletes an existing record.', 10551 required: ['collection', 'rkey'], 10552 properties: { 10553 collection: { 10554 type: 'string', 10555 format: 'nsid', 10556 }, 10557 rkey: { 10558 type: 'string', 10559 format: 'record-key', 10560 }, 10561 }, 10562 }, 10563 createResult: { 10564 type: 'object', 10565 required: ['uri', 'cid'], 10566 properties: { 10567 uri: { 10568 type: 'string', 10569 format: 'at-uri', 10570 }, 10571 cid: { 10572 type: 'string', 10573 format: 'cid', 10574 }, 10575 validationStatus: { 10576 type: 'string', 10577 knownValues: ['valid', 'unknown'], 10578 }, 10579 }, 10580 }, 10581 updateResult: { 10582 type: 'object', 10583 required: ['uri', 'cid'], 10584 properties: { 10585 uri: { 10586 type: 'string', 10587 format: 'at-uri', 10588 }, 10589 cid: { 10590 type: 'string', 10591 format: 'cid', 10592 }, 10593 validationStatus: { 10594 type: 'string', 10595 knownValues: ['valid', 'unknown'], 10596 }, 10597 }, 10598 }, 10599 deleteResult: { 10600 type: 'object', 10601 required: [], 10602 properties: {}, 10603 }, 10604 }, 10605 }, 10606 ComAtprotoRepoCreateRecord: { 10607 lexicon: 1, 10608 id: 'com.atproto.repo.createRecord', 10609 defs: { 10610 main: { 10611 type: 'procedure', 10612 description: 10613 'Create a single new repository record. Requires auth, implemented by PDS.', 10614 input: { 10615 encoding: 'application/json', 10616 schema: { 10617 type: 'object', 10618 required: ['repo', 'collection', 'record'], 10619 properties: { 10620 repo: { 10621 type: 'string', 10622 format: 'at-identifier', 10623 description: 10624 'The handle or DID of the repo (aka, current account).', 10625 }, 10626 collection: { 10627 type: 'string', 10628 format: 'nsid', 10629 description: 'The NSID of the record collection.', 10630 }, 10631 rkey: { 10632 type: 'string', 10633 format: 'record-key', 10634 description: 'The Record Key.', 10635 maxLength: 512, 10636 }, 10637 validate: { 10638 type: 'boolean', 10639 description: 10640 "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.", 10641 }, 10642 record: { 10643 type: 'unknown', 10644 description: 'The record itself. Must contain a $type field.', 10645 }, 10646 swapCommit: { 10647 type: 'string', 10648 format: 'cid', 10649 description: 10650 'Compare and swap with the previous commit by CID.', 10651 }, 10652 }, 10653 }, 10654 }, 10655 output: { 10656 encoding: 'application/json', 10657 schema: { 10658 type: 'object', 10659 required: ['uri', 'cid'], 10660 properties: { 10661 uri: { 10662 type: 'string', 10663 format: 'at-uri', 10664 }, 10665 cid: { 10666 type: 'string', 10667 format: 'cid', 10668 }, 10669 commit: { 10670 type: 'ref', 10671 ref: 'lex:com.atproto.repo.defs#commitMeta', 10672 }, 10673 validationStatus: { 10674 type: 'string', 10675 knownValues: ['valid', 'unknown'], 10676 }, 10677 }, 10678 }, 10679 }, 10680 errors: [ 10681 { 10682 name: 'InvalidSwap', 10683 description: 10684 "Indicates that 'swapCommit' didn't match current repo commit.", 10685 }, 10686 ], 10687 }, 10688 }, 10689 }, 10690 ComAtprotoRepoDefs: { 10691 lexicon: 1, 10692 id: 'com.atproto.repo.defs', 10693 defs: { 10694 commitMeta: { 10695 type: 'object', 10696 required: ['cid', 'rev'], 10697 properties: { 10698 cid: { 10699 type: 'string', 10700 format: 'cid', 10701 }, 10702 rev: { 10703 type: 'string', 10704 format: 'tid', 10705 }, 10706 }, 10707 }, 10708 }, 10709 }, 10710 ComAtprotoRepoDeleteRecord: { 10711 lexicon: 1, 10712 id: 'com.atproto.repo.deleteRecord', 10713 defs: { 10714 main: { 10715 type: 'procedure', 10716 description: 10717 "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.", 10718 input: { 10719 encoding: 'application/json', 10720 schema: { 10721 type: 'object', 10722 required: ['repo', 'collection', 'rkey'], 10723 properties: { 10724 repo: { 10725 type: 'string', 10726 format: 'at-identifier', 10727 description: 10728 'The handle or DID of the repo (aka, current account).', 10729 }, 10730 collection: { 10731 type: 'string', 10732 format: 'nsid', 10733 description: 'The NSID of the record collection.', 10734 }, 10735 rkey: { 10736 type: 'string', 10737 format: 'record-key', 10738 description: 'The Record Key.', 10739 }, 10740 swapRecord: { 10741 type: 'string', 10742 format: 'cid', 10743 description: 10744 'Compare and swap with the previous record by CID.', 10745 }, 10746 swapCommit: { 10747 type: 'string', 10748 format: 'cid', 10749 description: 10750 'Compare and swap with the previous commit by CID.', 10751 }, 10752 }, 10753 }, 10754 }, 10755 output: { 10756 encoding: 'application/json', 10757 schema: { 10758 type: 'object', 10759 properties: { 10760 commit: { 10761 type: 'ref', 10762 ref: 'lex:com.atproto.repo.defs#commitMeta', 10763 }, 10764 }, 10765 }, 10766 }, 10767 errors: [ 10768 { 10769 name: 'InvalidSwap', 10770 }, 10771 ], 10772 }, 10773 }, 10774 }, 10775 ComAtprotoRepoDescribeRepo: { 10776 lexicon: 1, 10777 id: 'com.atproto.repo.describeRepo', 10778 defs: { 10779 main: { 10780 type: 'query', 10781 description: 10782 'Get information about an account and repository, including the list of collections. Does not require auth.', 10783 parameters: { 10784 type: 'params', 10785 required: ['repo'], 10786 properties: { 10787 repo: { 10788 type: 'string', 10789 format: 'at-identifier', 10790 description: 'The handle or DID of the repo.', 10791 }, 10792 }, 10793 }, 10794 output: { 10795 encoding: 'application/json', 10796 schema: { 10797 type: 'object', 10798 required: [ 10799 'handle', 10800 'did', 10801 'didDoc', 10802 'collections', 10803 'handleIsCorrect', 10804 ], 10805 properties: { 10806 handle: { 10807 type: 'string', 10808 format: 'handle', 10809 }, 10810 did: { 10811 type: 'string', 10812 format: 'did', 10813 }, 10814 didDoc: { 10815 type: 'unknown', 10816 description: 'The complete DID document for this account.', 10817 }, 10818 collections: { 10819 type: 'array', 10820 description: 10821 'List of all the collections (NSIDs) for which this repo contains at least one record.', 10822 items: { 10823 type: 'string', 10824 format: 'nsid', 10825 }, 10826 }, 10827 handleIsCorrect: { 10828 type: 'boolean', 10829 description: 10830 'Indicates if handle is currently valid (resolves bi-directionally)', 10831 }, 10832 }, 10833 }, 10834 }, 10835 }, 10836 }, 10837 }, 10838 ComAtprotoRepoGetRecord: { 10839 lexicon: 1, 10840 id: 'com.atproto.repo.getRecord', 10841 defs: { 10842 main: { 10843 type: 'query', 10844 description: 10845 'Get a single record from a repository. Does not require auth.', 10846 parameters: { 10847 type: 'params', 10848 required: ['repo', 'collection', 'rkey'], 10849 properties: { 10850 repo: { 10851 type: 'string', 10852 format: 'at-identifier', 10853 description: 'The handle or DID of the repo.', 10854 }, 10855 collection: { 10856 type: 'string', 10857 format: 'nsid', 10858 description: 'The NSID of the record collection.', 10859 }, 10860 rkey: { 10861 type: 'string', 10862 description: 'The Record Key.', 10863 format: 'record-key', 10864 }, 10865 cid: { 10866 type: 'string', 10867 format: 'cid', 10868 description: 10869 'The CID of the version of the record. If not specified, then return the most recent version.', 10870 }, 10871 }, 10872 }, 10873 output: { 10874 encoding: 'application/json', 10875 schema: { 10876 type: 'object', 10877 required: ['uri', 'value'], 10878 properties: { 10879 uri: { 10880 type: 'string', 10881 format: 'at-uri', 10882 }, 10883 cid: { 10884 type: 'string', 10885 format: 'cid', 10886 }, 10887 value: { 10888 type: 'unknown', 10889 }, 10890 }, 10891 }, 10892 }, 10893 errors: [ 10894 { 10895 name: 'RecordNotFound', 10896 }, 10897 ], 10898 }, 10899 }, 10900 }, 10901 ComAtprotoRepoImportRepo: { 10902 lexicon: 1, 10903 id: 'com.atproto.repo.importRepo', 10904 defs: { 10905 main: { 10906 type: 'procedure', 10907 description: 10908 'Import a repo in the form of a CAR file. Requires Content-Length HTTP header to be set.', 10909 input: { 10910 encoding: 'application/vnd.ipld.car', 10911 }, 10912 }, 10913 }, 10914 }, 10915 ComAtprotoRepoListMissingBlobs: { 10916 lexicon: 1, 10917 id: 'com.atproto.repo.listMissingBlobs', 10918 defs: { 10919 main: { 10920 type: 'query', 10921 description: 10922 'Returns a list of missing blobs for the requesting account. Intended to be used in the account migration flow.', 10923 parameters: { 10924 type: 'params', 10925 properties: { 10926 limit: { 10927 type: 'integer', 10928 minimum: 1, 10929 maximum: 1000, 10930 default: 500, 10931 }, 10932 cursor: { 10933 type: 'string', 10934 }, 10935 }, 10936 }, 10937 output: { 10938 encoding: 'application/json', 10939 schema: { 10940 type: 'object', 10941 required: ['blobs'], 10942 properties: { 10943 cursor: { 10944 type: 'string', 10945 }, 10946 blobs: { 10947 type: 'array', 10948 items: { 10949 type: 'ref', 10950 ref: 'lex:com.atproto.repo.listMissingBlobs#recordBlob', 10951 }, 10952 }, 10953 }, 10954 }, 10955 }, 10956 }, 10957 recordBlob: { 10958 type: 'object', 10959 required: ['cid', 'recordUri'], 10960 properties: { 10961 cid: { 10962 type: 'string', 10963 format: 'cid', 10964 }, 10965 recordUri: { 10966 type: 'string', 10967 format: 'at-uri', 10968 }, 10969 }, 10970 }, 10971 }, 10972 }, 10973 ComAtprotoRepoListRecords: { 10974 lexicon: 1, 10975 id: 'com.atproto.repo.listRecords', 10976 defs: { 10977 main: { 10978 type: 'query', 10979 description: 10980 'List a range of records in a repository, matching a specific collection. Does not require auth.', 10981 parameters: { 10982 type: 'params', 10983 required: ['repo', 'collection'], 10984 properties: { 10985 repo: { 10986 type: 'string', 10987 format: 'at-identifier', 10988 description: 'The handle or DID of the repo.', 10989 }, 10990 collection: { 10991 type: 'string', 10992 format: 'nsid', 10993 description: 'The NSID of the record type.', 10994 }, 10995 limit: { 10996 type: 'integer', 10997 minimum: 1, 10998 maximum: 100, 10999 default: 50, 11000 description: 'The number of records to return.', 11001 }, 11002 cursor: { 11003 type: 'string', 11004 }, 11005 reverse: { 11006 type: 'boolean', 11007 description: 'Flag to reverse the order of the returned records.', 11008 }, 11009 }, 11010 }, 11011 output: { 11012 encoding: 'application/json', 11013 schema: { 11014 type: 'object', 11015 required: ['records'], 11016 properties: { 11017 cursor: { 11018 type: 'string', 11019 }, 11020 records: { 11021 type: 'array', 11022 items: { 11023 type: 'ref', 11024 ref: 'lex:com.atproto.repo.listRecords#record', 11025 }, 11026 }, 11027 }, 11028 }, 11029 }, 11030 }, 11031 record: { 11032 type: 'object', 11033 required: ['uri', 'cid', 'value'], 11034 properties: { 11035 uri: { 11036 type: 'string', 11037 format: 'at-uri', 11038 }, 11039 cid: { 11040 type: 'string', 11041 format: 'cid', 11042 }, 11043 value: { 11044 type: 'unknown', 11045 }, 11046 }, 11047 }, 11048 }, 11049 }, 11050 ComAtprotoRepoPutRecord: { 11051 lexicon: 1, 11052 id: 'com.atproto.repo.putRecord', 11053 defs: { 11054 main: { 11055 type: 'procedure', 11056 description: 11057 'Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS.', 11058 input: { 11059 encoding: 'application/json', 11060 schema: { 11061 type: 'object', 11062 required: ['repo', 'collection', 'rkey', 'record'], 11063 nullable: ['swapRecord'], 11064 properties: { 11065 repo: { 11066 type: 'string', 11067 format: 'at-identifier', 11068 description: 11069 'The handle or DID of the repo (aka, current account).', 11070 }, 11071 collection: { 11072 type: 'string', 11073 format: 'nsid', 11074 description: 'The NSID of the record collection.', 11075 }, 11076 rkey: { 11077 type: 'string', 11078 format: 'record-key', 11079 description: 'The Record Key.', 11080 maxLength: 512, 11081 }, 11082 validate: { 11083 type: 'boolean', 11084 description: 11085 "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.", 11086 }, 11087 record: { 11088 type: 'unknown', 11089 description: 'The record to write.', 11090 }, 11091 swapRecord: { 11092 type: 'string', 11093 format: 'cid', 11094 description: 11095 'Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation', 11096 }, 11097 swapCommit: { 11098 type: 'string', 11099 format: 'cid', 11100 description: 11101 'Compare and swap with the previous commit by CID.', 11102 }, 11103 }, 11104 }, 11105 }, 11106 output: { 11107 encoding: 'application/json', 11108 schema: { 11109 type: 'object', 11110 required: ['uri', 'cid'], 11111 properties: { 11112 uri: { 11113 type: 'string', 11114 format: 'at-uri', 11115 }, 11116 cid: { 11117 type: 'string', 11118 format: 'cid', 11119 }, 11120 commit: { 11121 type: 'ref', 11122 ref: 'lex:com.atproto.repo.defs#commitMeta', 11123 }, 11124 validationStatus: { 11125 type: 'string', 11126 knownValues: ['valid', 'unknown'], 11127 }, 11128 }, 11129 }, 11130 }, 11131 errors: [ 11132 { 11133 name: 'InvalidSwap', 11134 }, 11135 ], 11136 }, 11137 }, 11138 }, 11139 ComAtprotoRepoStrongRef: { 11140 lexicon: 1, 11141 id: 'com.atproto.repo.strongRef', 11142 description: 'A URI with a content-hash fingerprint.', 11143 defs: { 11144 main: { 11145 type: 'object', 11146 required: ['uri', 'cid'], 11147 properties: { 11148 uri: { 11149 type: 'string', 11150 format: 'at-uri', 11151 }, 11152 cid: { 11153 type: 'string', 11154 format: 'cid', 11155 }, 11156 }, 11157 }, 11158 }, 11159 }, 11160 ComAtprotoRepoUploadBlob: { 11161 lexicon: 1, 11162 id: 'com.atproto.repo.uploadBlob', 11163 defs: { 11164 main: { 11165 type: 'procedure', 11166 description: 11167 'Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS.', 11168 input: { 11169 encoding: '*/*', 11170 }, 11171 output: { 11172 encoding: 'application/json', 11173 schema: { 11174 type: 'object', 11175 required: ['blob'], 11176 properties: { 11177 blob: { 11178 type: 'blob', 11179 }, 11180 }, 11181 }, 11182 }, 11183 }, 11184 }, 11185 }, 11186 ComAtprotoServerActivateAccount: { 11187 lexicon: 1, 11188 id: 'com.atproto.server.activateAccount', 11189 defs: { 11190 main: { 11191 type: 'procedure', 11192 description: 11193 "Activates a currently deactivated account. Used to finalize account migration after the account's repo is imported and identity is setup.", 11194 }, 11195 }, 11196 }, 11197 ComAtprotoServerCheckAccountStatus: { 11198 lexicon: 1, 11199 id: 'com.atproto.server.checkAccountStatus', 11200 defs: { 11201 main: { 11202 type: 'query', 11203 description: 11204 '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.', 11205 output: { 11206 encoding: 'application/json', 11207 schema: { 11208 type: 'object', 11209 required: [ 11210 'activated', 11211 'validDid', 11212 'repoCommit', 11213 'repoRev', 11214 'repoBlocks', 11215 'indexedRecords', 11216 'privateStateValues', 11217 'expectedBlobs', 11218 'importedBlobs', 11219 ], 11220 properties: { 11221 activated: { 11222 type: 'boolean', 11223 }, 11224 validDid: { 11225 type: 'boolean', 11226 }, 11227 repoCommit: { 11228 type: 'string', 11229 format: 'cid', 11230 }, 11231 repoRev: { 11232 type: 'string', 11233 }, 11234 repoBlocks: { 11235 type: 'integer', 11236 }, 11237 indexedRecords: { 11238 type: 'integer', 11239 }, 11240 privateStateValues: { 11241 type: 'integer', 11242 }, 11243 expectedBlobs: { 11244 type: 'integer', 11245 }, 11246 importedBlobs: { 11247 type: 'integer', 11248 }, 11249 }, 11250 }, 11251 }, 11252 }, 11253 }, 11254 }, 11255 ComAtprotoServerConfirmEmail: { 11256 lexicon: 1, 11257 id: 'com.atproto.server.confirmEmail', 11258 defs: { 11259 main: { 11260 type: 'procedure', 11261 description: 11262 'Confirm an email using a token from com.atproto.server.requestEmailConfirmation.', 11263 input: { 11264 encoding: 'application/json', 11265 schema: { 11266 type: 'object', 11267 required: ['email', 'token'], 11268 properties: { 11269 email: { 11270 type: 'string', 11271 }, 11272 token: { 11273 type: 'string', 11274 }, 11275 }, 11276 }, 11277 }, 11278 errors: [ 11279 { 11280 name: 'AccountNotFound', 11281 }, 11282 { 11283 name: 'ExpiredToken', 11284 }, 11285 { 11286 name: 'InvalidToken', 11287 }, 11288 { 11289 name: 'InvalidEmail', 11290 }, 11291 ], 11292 }, 11293 }, 11294 }, 11295 ComAtprotoServerCreateAccount: { 11296 lexicon: 1, 11297 id: 'com.atproto.server.createAccount', 11298 defs: { 11299 main: { 11300 type: 'procedure', 11301 description: 'Create an account. Implemented by PDS.', 11302 input: { 11303 encoding: 'application/json', 11304 schema: { 11305 type: 'object', 11306 required: ['handle'], 11307 properties: { 11308 email: { 11309 type: 'string', 11310 }, 11311 handle: { 11312 type: 'string', 11313 format: 'handle', 11314 description: 'Requested handle for the account.', 11315 }, 11316 did: { 11317 type: 'string', 11318 format: 'did', 11319 description: 11320 'Pre-existing atproto DID, being imported to a new account.', 11321 }, 11322 inviteCode: { 11323 type: 'string', 11324 }, 11325 verificationCode: { 11326 type: 'string', 11327 }, 11328 verificationPhone: { 11329 type: 'string', 11330 }, 11331 password: { 11332 type: 'string', 11333 description: 11334 'Initial account password. May need to meet instance-specific password strength requirements.', 11335 }, 11336 recoveryKey: { 11337 type: 'string', 11338 description: 11339 'DID PLC rotation key (aka, recovery key) to be included in PLC creation operation.', 11340 }, 11341 plcOp: { 11342 type: 'unknown', 11343 description: 11344 'A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented.', 11345 }, 11346 }, 11347 }, 11348 }, 11349 output: { 11350 encoding: 'application/json', 11351 schema: { 11352 type: 'object', 11353 description: 11354 'Account login session returned on successful account creation.', 11355 required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 11356 properties: { 11357 accessJwt: { 11358 type: 'string', 11359 }, 11360 refreshJwt: { 11361 type: 'string', 11362 }, 11363 handle: { 11364 type: 'string', 11365 format: 'handle', 11366 }, 11367 did: { 11368 type: 'string', 11369 format: 'did', 11370 description: 'The DID of the new account.', 11371 }, 11372 didDoc: { 11373 type: 'unknown', 11374 description: 'Complete DID document.', 11375 }, 11376 }, 11377 }, 11378 }, 11379 errors: [ 11380 { 11381 name: 'InvalidHandle', 11382 }, 11383 { 11384 name: 'InvalidPassword', 11385 }, 11386 { 11387 name: 'InvalidInviteCode', 11388 }, 11389 { 11390 name: 'HandleNotAvailable', 11391 }, 11392 { 11393 name: 'UnsupportedDomain', 11394 }, 11395 { 11396 name: 'UnresolvableDid', 11397 }, 11398 { 11399 name: 'IncompatibleDidDoc', 11400 }, 11401 ], 11402 }, 11403 }, 11404 }, 11405 ComAtprotoServerCreateAppPassword: { 11406 lexicon: 1, 11407 id: 'com.atproto.server.createAppPassword', 11408 defs: { 11409 main: { 11410 type: 'procedure', 11411 description: 'Create an App Password.', 11412 input: { 11413 encoding: 'application/json', 11414 schema: { 11415 type: 'object', 11416 required: ['name'], 11417 properties: { 11418 name: { 11419 type: 'string', 11420 description: 11421 'A short name for the App Password, to help distinguish them.', 11422 }, 11423 privileged: { 11424 type: 'boolean', 11425 description: 11426 "If an app password has 'privileged' access to possibly sensitive account state. Meant for use with trusted clients.", 11427 }, 11428 }, 11429 }, 11430 }, 11431 output: { 11432 encoding: 'application/json', 11433 schema: { 11434 type: 'ref', 11435 ref: 'lex:com.atproto.server.createAppPassword#appPassword', 11436 }, 11437 }, 11438 errors: [ 11439 { 11440 name: 'AccountTakedown', 11441 }, 11442 ], 11443 }, 11444 appPassword: { 11445 type: 'object', 11446 required: ['name', 'password', 'createdAt'], 11447 properties: { 11448 name: { 11449 type: 'string', 11450 }, 11451 password: { 11452 type: 'string', 11453 }, 11454 createdAt: { 11455 type: 'string', 11456 format: 'datetime', 11457 }, 11458 privileged: { 11459 type: 'boolean', 11460 }, 11461 }, 11462 }, 11463 }, 11464 }, 11465 ComAtprotoServerCreateInviteCode: { 11466 lexicon: 1, 11467 id: 'com.atproto.server.createInviteCode', 11468 defs: { 11469 main: { 11470 type: 'procedure', 11471 description: 'Create an invite code.', 11472 input: { 11473 encoding: 'application/json', 11474 schema: { 11475 type: 'object', 11476 required: ['useCount'], 11477 properties: { 11478 useCount: { 11479 type: 'integer', 11480 }, 11481 forAccount: { 11482 type: 'string', 11483 format: 'did', 11484 }, 11485 }, 11486 }, 11487 }, 11488 output: { 11489 encoding: 'application/json', 11490 schema: { 11491 type: 'object', 11492 required: ['code'], 11493 properties: { 11494 code: { 11495 type: 'string', 11496 }, 11497 }, 11498 }, 11499 }, 11500 }, 11501 }, 11502 }, 11503 ComAtprotoServerCreateInviteCodes: { 11504 lexicon: 1, 11505 id: 'com.atproto.server.createInviteCodes', 11506 defs: { 11507 main: { 11508 type: 'procedure', 11509 description: 'Create invite codes.', 11510 input: { 11511 encoding: 'application/json', 11512 schema: { 11513 type: 'object', 11514 required: ['codeCount', 'useCount'], 11515 properties: { 11516 codeCount: { 11517 type: 'integer', 11518 default: 1, 11519 }, 11520 useCount: { 11521 type: 'integer', 11522 }, 11523 forAccounts: { 11524 type: 'array', 11525 items: { 11526 type: 'string', 11527 format: 'did', 11528 }, 11529 }, 11530 }, 11531 }, 11532 }, 11533 output: { 11534 encoding: 'application/json', 11535 schema: { 11536 type: 'object', 11537 required: ['codes'], 11538 properties: { 11539 codes: { 11540 type: 'array', 11541 items: { 11542 type: 'ref', 11543 ref: 'lex:com.atproto.server.createInviteCodes#accountCodes', 11544 }, 11545 }, 11546 }, 11547 }, 11548 }, 11549 }, 11550 accountCodes: { 11551 type: 'object', 11552 required: ['account', 'codes'], 11553 properties: { 11554 account: { 11555 type: 'string', 11556 }, 11557 codes: { 11558 type: 'array', 11559 items: { 11560 type: 'string', 11561 }, 11562 }, 11563 }, 11564 }, 11565 }, 11566 }, 11567 ComAtprotoServerCreateSession: { 11568 lexicon: 1, 11569 id: 'com.atproto.server.createSession', 11570 defs: { 11571 main: { 11572 type: 'procedure', 11573 description: 'Create an authentication session.', 11574 input: { 11575 encoding: 'application/json', 11576 schema: { 11577 type: 'object', 11578 required: ['identifier', 'password'], 11579 properties: { 11580 identifier: { 11581 type: 'string', 11582 description: 11583 'Handle or other identifier supported by the server for the authenticating user.', 11584 }, 11585 password: { 11586 type: 'string', 11587 }, 11588 authFactorToken: { 11589 type: 'string', 11590 }, 11591 allowTakendown: { 11592 type: 'boolean', 11593 description: 11594 'When true, instead of throwing error for takendown accounts, a valid response with a narrow scoped token will be returned', 11595 }, 11596 }, 11597 }, 11598 }, 11599 output: { 11600 encoding: 'application/json', 11601 schema: { 11602 type: 'object', 11603 required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 11604 properties: { 11605 accessJwt: { 11606 type: 'string', 11607 }, 11608 refreshJwt: { 11609 type: 'string', 11610 }, 11611 handle: { 11612 type: 'string', 11613 format: 'handle', 11614 }, 11615 did: { 11616 type: 'string', 11617 format: 'did', 11618 }, 11619 didDoc: { 11620 type: 'unknown', 11621 }, 11622 email: { 11623 type: 'string', 11624 }, 11625 emailConfirmed: { 11626 type: 'boolean', 11627 }, 11628 emailAuthFactor: { 11629 type: 'boolean', 11630 }, 11631 active: { 11632 type: 'boolean', 11633 }, 11634 status: { 11635 type: 'string', 11636 description: 11637 '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.', 11638 knownValues: ['takendown', 'suspended', 'deactivated'], 11639 }, 11640 }, 11641 }, 11642 }, 11643 errors: [ 11644 { 11645 name: 'AccountTakedown', 11646 }, 11647 { 11648 name: 'AuthFactorTokenRequired', 11649 }, 11650 ], 11651 }, 11652 }, 11653 }, 11654 ComAtprotoServerDeactivateAccount: { 11655 lexicon: 1, 11656 id: 'com.atproto.server.deactivateAccount', 11657 defs: { 11658 main: { 11659 type: 'procedure', 11660 description: 11661 'Deactivates a currently active account. Stops serving of repo, and future writes to repo until reactivated. Used to finalize account migration with the old host after the account has been activated on the new host.', 11662 input: { 11663 encoding: 'application/json', 11664 schema: { 11665 type: 'object', 11666 properties: { 11667 deleteAfter: { 11668 type: 'string', 11669 format: 'datetime', 11670 description: 11671 'A recommendation to server as to how long they should hold onto the deactivated account before deleting.', 11672 }, 11673 }, 11674 }, 11675 }, 11676 }, 11677 }, 11678 }, 11679 ComAtprotoServerDefs: { 11680 lexicon: 1, 11681 id: 'com.atproto.server.defs', 11682 defs: { 11683 inviteCode: { 11684 type: 'object', 11685 required: [ 11686 'code', 11687 'available', 11688 'disabled', 11689 'forAccount', 11690 'createdBy', 11691 'createdAt', 11692 'uses', 11693 ], 11694 properties: { 11695 code: { 11696 type: 'string', 11697 }, 11698 available: { 11699 type: 'integer', 11700 }, 11701 disabled: { 11702 type: 'boolean', 11703 }, 11704 forAccount: { 11705 type: 'string', 11706 }, 11707 createdBy: { 11708 type: 'string', 11709 }, 11710 createdAt: { 11711 type: 'string', 11712 format: 'datetime', 11713 }, 11714 uses: { 11715 type: 'array', 11716 items: { 11717 type: 'ref', 11718 ref: 'lex:com.atproto.server.defs#inviteCodeUse', 11719 }, 11720 }, 11721 }, 11722 }, 11723 inviteCodeUse: { 11724 type: 'object', 11725 required: ['usedBy', 'usedAt'], 11726 properties: { 11727 usedBy: { 11728 type: 'string', 11729 format: 'did', 11730 }, 11731 usedAt: { 11732 type: 'string', 11733 format: 'datetime', 11734 }, 11735 }, 11736 }, 11737 }, 11738 }, 11739 ComAtprotoServerDeleteAccount: { 11740 lexicon: 1, 11741 id: 'com.atproto.server.deleteAccount', 11742 defs: { 11743 main: { 11744 type: 'procedure', 11745 description: 11746 "Delete an actor's account with a token and password. Can only be called after requesting a deletion token. Requires auth.", 11747 input: { 11748 encoding: 'application/json', 11749 schema: { 11750 type: 'object', 11751 required: ['did', 'password', 'token'], 11752 properties: { 11753 did: { 11754 type: 'string', 11755 format: 'did', 11756 }, 11757 password: { 11758 type: 'string', 11759 }, 11760 token: { 11761 type: 'string', 11762 }, 11763 }, 11764 }, 11765 }, 11766 errors: [ 11767 { 11768 name: 'ExpiredToken', 11769 }, 11770 { 11771 name: 'InvalidToken', 11772 }, 11773 ], 11774 }, 11775 }, 11776 }, 11777 ComAtprotoServerDeleteSession: { 11778 lexicon: 1, 11779 id: 'com.atproto.server.deleteSession', 11780 defs: { 11781 main: { 11782 type: 'procedure', 11783 description: 'Delete the current session. Requires auth.', 11784 }, 11785 }, 11786 }, 11787 ComAtprotoServerDescribeServer: { 11788 lexicon: 1, 11789 id: 'com.atproto.server.describeServer', 11790 defs: { 11791 main: { 11792 type: 'query', 11793 description: 11794 "Describes the server's account creation requirements and capabilities. Implemented by PDS.", 11795 output: { 11796 encoding: 'application/json', 11797 schema: { 11798 type: 'object', 11799 required: ['did', 'availableUserDomains'], 11800 properties: { 11801 inviteCodeRequired: { 11802 type: 'boolean', 11803 description: 11804 'If true, an invite code must be supplied to create an account on this instance.', 11805 }, 11806 phoneVerificationRequired: { 11807 type: 'boolean', 11808 description: 11809 'If true, a phone verification token must be supplied to create an account on this instance.', 11810 }, 11811 availableUserDomains: { 11812 type: 'array', 11813 description: 11814 'List of domain suffixes that can be used in account handles.', 11815 items: { 11816 type: 'string', 11817 }, 11818 }, 11819 links: { 11820 type: 'ref', 11821 description: 'URLs of service policy documents.', 11822 ref: 'lex:com.atproto.server.describeServer#links', 11823 }, 11824 contact: { 11825 type: 'ref', 11826 description: 'Contact information', 11827 ref: 'lex:com.atproto.server.describeServer#contact', 11828 }, 11829 did: { 11830 type: 'string', 11831 format: 'did', 11832 }, 11833 }, 11834 }, 11835 }, 11836 }, 11837 links: { 11838 type: 'object', 11839 properties: { 11840 privacyPolicy: { 11841 type: 'string', 11842 format: 'uri', 11843 }, 11844 termsOfService: { 11845 type: 'string', 11846 format: 'uri', 11847 }, 11848 }, 11849 }, 11850 contact: { 11851 type: 'object', 11852 properties: { 11853 email: { 11854 type: 'string', 11855 }, 11856 }, 11857 }, 11858 }, 11859 }, 11860 ComAtprotoServerGetAccountInviteCodes: { 11861 lexicon: 1, 11862 id: 'com.atproto.server.getAccountInviteCodes', 11863 defs: { 11864 main: { 11865 type: 'query', 11866 description: 11867 'Get all invite codes for the current account. Requires auth.', 11868 parameters: { 11869 type: 'params', 11870 properties: { 11871 includeUsed: { 11872 type: 'boolean', 11873 default: true, 11874 }, 11875 createAvailable: { 11876 type: 'boolean', 11877 default: true, 11878 description: 11879 "Controls whether any new 'earned' but not 'created' invites should be created.", 11880 }, 11881 }, 11882 }, 11883 output: { 11884 encoding: 'application/json', 11885 schema: { 11886 type: 'object', 11887 required: ['codes'], 11888 properties: { 11889 codes: { 11890 type: 'array', 11891 items: { 11892 type: 'ref', 11893 ref: 'lex:com.atproto.server.defs#inviteCode', 11894 }, 11895 }, 11896 }, 11897 }, 11898 }, 11899 errors: [ 11900 { 11901 name: 'DuplicateCreate', 11902 }, 11903 ], 11904 }, 11905 }, 11906 }, 11907 ComAtprotoServerGetServiceAuth: { 11908 lexicon: 1, 11909 id: 'com.atproto.server.getServiceAuth', 11910 defs: { 11911 main: { 11912 type: 'query', 11913 description: 11914 'Get a signed token on behalf of the requesting DID for the requested service.', 11915 parameters: { 11916 type: 'params', 11917 required: ['aud'], 11918 properties: { 11919 aud: { 11920 type: 'string', 11921 format: 'did', 11922 description: 11923 'The DID of the service that the token will be used to authenticate with', 11924 }, 11925 exp: { 11926 type: 'integer', 11927 description: 11928 'The time in Unix Epoch seconds that the JWT expires. Defaults to 60 seconds in the future. The service may enforce certain time bounds on tokens depending on the requested scope.', 11929 }, 11930 lxm: { 11931 type: 'string', 11932 format: 'nsid', 11933 description: 11934 'Lexicon (XRPC) method to bind the requested token to', 11935 }, 11936 }, 11937 }, 11938 output: { 11939 encoding: 'application/json', 11940 schema: { 11941 type: 'object', 11942 required: ['token'], 11943 properties: { 11944 token: { 11945 type: 'string', 11946 }, 11947 }, 11948 }, 11949 }, 11950 errors: [ 11951 { 11952 name: 'BadExpiration', 11953 description: 11954 'Indicates that the requested expiration date is not a valid. May be in the past or may be reliant on the requested scopes.', 11955 }, 11956 ], 11957 }, 11958 }, 11959 }, 11960 ComAtprotoServerGetSession: { 11961 lexicon: 1, 11962 id: 'com.atproto.server.getSession', 11963 defs: { 11964 main: { 11965 type: 'query', 11966 description: 11967 'Get information about the current auth session. Requires auth.', 11968 output: { 11969 encoding: 'application/json', 11970 schema: { 11971 type: 'object', 11972 required: ['handle', 'did'], 11973 properties: { 11974 handle: { 11975 type: 'string', 11976 format: 'handle', 11977 }, 11978 did: { 11979 type: 'string', 11980 format: 'did', 11981 }, 11982 email: { 11983 type: 'string', 11984 }, 11985 emailConfirmed: { 11986 type: 'boolean', 11987 }, 11988 emailAuthFactor: { 11989 type: 'boolean', 11990 }, 11991 didDoc: { 11992 type: 'unknown', 11993 }, 11994 active: { 11995 type: 'boolean', 11996 }, 11997 status: { 11998 type: 'string', 11999 description: 12000 '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.', 12001 knownValues: ['takendown', 'suspended', 'deactivated'], 12002 }, 12003 }, 12004 }, 12005 }, 12006 }, 12007 }, 12008 }, 12009 ComAtprotoServerListAppPasswords: { 12010 lexicon: 1, 12011 id: 'com.atproto.server.listAppPasswords', 12012 defs: { 12013 main: { 12014 type: 'query', 12015 description: 'List all App Passwords.', 12016 output: { 12017 encoding: 'application/json', 12018 schema: { 12019 type: 'object', 12020 required: ['passwords'], 12021 properties: { 12022 passwords: { 12023 type: 'array', 12024 items: { 12025 type: 'ref', 12026 ref: 'lex:com.atproto.server.listAppPasswords#appPassword', 12027 }, 12028 }, 12029 }, 12030 }, 12031 }, 12032 errors: [ 12033 { 12034 name: 'AccountTakedown', 12035 }, 12036 ], 12037 }, 12038 appPassword: { 12039 type: 'object', 12040 required: ['name', 'createdAt'], 12041 properties: { 12042 name: { 12043 type: 'string', 12044 }, 12045 createdAt: { 12046 type: 'string', 12047 format: 'datetime', 12048 }, 12049 privileged: { 12050 type: 'boolean', 12051 }, 12052 }, 12053 }, 12054 }, 12055 }, 12056 ComAtprotoServerRefreshSession: { 12057 lexicon: 1, 12058 id: 'com.atproto.server.refreshSession', 12059 defs: { 12060 main: { 12061 type: 'procedure', 12062 description: 12063 "Refresh an authentication session. Requires auth using the 'refreshJwt' (not the 'accessJwt').", 12064 output: { 12065 encoding: 'application/json', 12066 schema: { 12067 type: 'object', 12068 required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 12069 properties: { 12070 accessJwt: { 12071 type: 'string', 12072 }, 12073 refreshJwt: { 12074 type: 'string', 12075 }, 12076 handle: { 12077 type: 'string', 12078 format: 'handle', 12079 }, 12080 did: { 12081 type: 'string', 12082 format: 'did', 12083 }, 12084 didDoc: { 12085 type: 'unknown', 12086 }, 12087 active: { 12088 type: 'boolean', 12089 }, 12090 status: { 12091 type: 'string', 12092 description: 12093 "Hosting status of the account. If not specified, then assume 'active'.", 12094 knownValues: ['takendown', 'suspended', 'deactivated'], 12095 }, 12096 }, 12097 }, 12098 }, 12099 errors: [ 12100 { 12101 name: 'AccountTakedown', 12102 }, 12103 ], 12104 }, 12105 }, 12106 }, 12107 ComAtprotoServerRequestAccountDelete: { 12108 lexicon: 1, 12109 id: 'com.atproto.server.requestAccountDelete', 12110 defs: { 12111 main: { 12112 type: 'procedure', 12113 description: 'Initiate a user account deletion via email.', 12114 }, 12115 }, 12116 }, 12117 ComAtprotoServerRequestEmailConfirmation: { 12118 lexicon: 1, 12119 id: 'com.atproto.server.requestEmailConfirmation', 12120 defs: { 12121 main: { 12122 type: 'procedure', 12123 description: 12124 'Request an email with a code to confirm ownership of email.', 12125 }, 12126 }, 12127 }, 12128 ComAtprotoServerRequestEmailUpdate: { 12129 lexicon: 1, 12130 id: 'com.atproto.server.requestEmailUpdate', 12131 defs: { 12132 main: { 12133 type: 'procedure', 12134 description: 'Request a token in order to update email.', 12135 output: { 12136 encoding: 'application/json', 12137 schema: { 12138 type: 'object', 12139 required: ['tokenRequired'], 12140 properties: { 12141 tokenRequired: { 12142 type: 'boolean', 12143 }, 12144 }, 12145 }, 12146 }, 12147 }, 12148 }, 12149 }, 12150 ComAtprotoServerRequestPasswordReset: { 12151 lexicon: 1, 12152 id: 'com.atproto.server.requestPasswordReset', 12153 defs: { 12154 main: { 12155 type: 'procedure', 12156 description: 'Initiate a user account password reset via email.', 12157 input: { 12158 encoding: 'application/json', 12159 schema: { 12160 type: 'object', 12161 required: ['email'], 12162 properties: { 12163 email: { 12164 type: 'string', 12165 }, 12166 }, 12167 }, 12168 }, 12169 }, 12170 }, 12171 }, 12172 ComAtprotoServerReserveSigningKey: { 12173 lexicon: 1, 12174 id: 'com.atproto.server.reserveSigningKey', 12175 defs: { 12176 main: { 12177 type: 'procedure', 12178 description: 12179 'Reserve a repo signing key, for use with account creation. Necessary so that a DID PLC update operation can be constructed during an account migraiton. Public and does not require auth; implemented by PDS. NOTE: this endpoint may change when full account migration is implemented.', 12180 input: { 12181 encoding: 'application/json', 12182 schema: { 12183 type: 'object', 12184 properties: { 12185 did: { 12186 type: 'string', 12187 format: 'did', 12188 description: 'The DID to reserve a key for.', 12189 }, 12190 }, 12191 }, 12192 }, 12193 output: { 12194 encoding: 'application/json', 12195 schema: { 12196 type: 'object', 12197 required: ['signingKey'], 12198 properties: { 12199 signingKey: { 12200 type: 'string', 12201 description: 12202 'The public key for the reserved signing key, in did:key serialization.', 12203 }, 12204 }, 12205 }, 12206 }, 12207 }, 12208 }, 12209 }, 12210 ComAtprotoServerResetPassword: { 12211 lexicon: 1, 12212 id: 'com.atproto.server.resetPassword', 12213 defs: { 12214 main: { 12215 type: 'procedure', 12216 description: 'Reset a user account password using a token.', 12217 input: { 12218 encoding: 'application/json', 12219 schema: { 12220 type: 'object', 12221 required: ['token', 'password'], 12222 properties: { 12223 token: { 12224 type: 'string', 12225 }, 12226 password: { 12227 type: 'string', 12228 }, 12229 }, 12230 }, 12231 }, 12232 errors: [ 12233 { 12234 name: 'ExpiredToken', 12235 }, 12236 { 12237 name: 'InvalidToken', 12238 }, 12239 ], 12240 }, 12241 }, 12242 }, 12243 ComAtprotoServerRevokeAppPassword: { 12244 lexicon: 1, 12245 id: 'com.atproto.server.revokeAppPassword', 12246 defs: { 12247 main: { 12248 type: 'procedure', 12249 description: 'Revoke an App Password by name.', 12250 input: { 12251 encoding: 'application/json', 12252 schema: { 12253 type: 'object', 12254 required: ['name'], 12255 properties: { 12256 name: { 12257 type: 'string', 12258 }, 12259 }, 12260 }, 12261 }, 12262 }, 12263 }, 12264 }, 12265 ComAtprotoServerUpdateEmail: { 12266 lexicon: 1, 12267 id: 'com.atproto.server.updateEmail', 12268 defs: { 12269 main: { 12270 type: 'procedure', 12271 description: "Update an account's email.", 12272 input: { 12273 encoding: 'application/json', 12274 schema: { 12275 type: 'object', 12276 required: ['email'], 12277 properties: { 12278 email: { 12279 type: 'string', 12280 }, 12281 emailAuthFactor: { 12282 type: 'boolean', 12283 }, 12284 token: { 12285 type: 'string', 12286 description: 12287 "Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed.", 12288 }, 12289 }, 12290 }, 12291 }, 12292 errors: [ 12293 { 12294 name: 'ExpiredToken', 12295 }, 12296 { 12297 name: 'InvalidToken', 12298 }, 12299 { 12300 name: 'TokenRequired', 12301 }, 12302 ], 12303 }, 12304 }, 12305 }, 12306 ComAtprotoSyncDefs: { 12307 lexicon: 1, 12308 id: 'com.atproto.sync.defs', 12309 defs: { 12310 hostStatus: { 12311 type: 'string', 12312 knownValues: ['active', 'idle', 'offline', 'throttled', 'banned'], 12313 }, 12314 }, 12315 }, 12316 ComAtprotoSyncGetBlob: { 12317 lexicon: 1, 12318 id: 'com.atproto.sync.getBlob', 12319 defs: { 12320 main: { 12321 type: 'query', 12322 description: 12323 'Get a blob associated with a given account. Returns the full blob as originally uploaded. Does not require auth; implemented by PDS.', 12324 parameters: { 12325 type: 'params', 12326 required: ['did', 'cid'], 12327 properties: { 12328 did: { 12329 type: 'string', 12330 format: 'did', 12331 description: 'The DID of the account.', 12332 }, 12333 cid: { 12334 type: 'string', 12335 format: 'cid', 12336 description: 'The CID of the blob to fetch', 12337 }, 12338 }, 12339 }, 12340 output: { 12341 encoding: '*/*', 12342 }, 12343 errors: [ 12344 { 12345 name: 'BlobNotFound', 12346 }, 12347 { 12348 name: 'RepoNotFound', 12349 }, 12350 { 12351 name: 'RepoTakendown', 12352 }, 12353 { 12354 name: 'RepoSuspended', 12355 }, 12356 { 12357 name: 'RepoDeactivated', 12358 }, 12359 ], 12360 }, 12361 }, 12362 }, 12363 ComAtprotoSyncGetBlocks: { 12364 lexicon: 1, 12365 id: 'com.atproto.sync.getBlocks', 12366 defs: { 12367 main: { 12368 type: 'query', 12369 description: 12370 'Get data blocks from a given repo, by CID. For example, intermediate MST nodes, or records. Does not require auth; implemented by PDS.', 12371 parameters: { 12372 type: 'params', 12373 required: ['did', 'cids'], 12374 properties: { 12375 did: { 12376 type: 'string', 12377 format: 'did', 12378 description: 'The DID of the repo.', 12379 }, 12380 cids: { 12381 type: 'array', 12382 items: { 12383 type: 'string', 12384 format: 'cid', 12385 }, 12386 }, 12387 }, 12388 }, 12389 output: { 12390 encoding: 'application/vnd.ipld.car', 12391 }, 12392 errors: [ 12393 { 12394 name: 'BlockNotFound', 12395 }, 12396 { 12397 name: 'RepoNotFound', 12398 }, 12399 { 12400 name: 'RepoTakendown', 12401 }, 12402 { 12403 name: 'RepoSuspended', 12404 }, 12405 { 12406 name: 'RepoDeactivated', 12407 }, 12408 ], 12409 }, 12410 }, 12411 }, 12412 ComAtprotoSyncGetCheckout: { 12413 lexicon: 1, 12414 id: 'com.atproto.sync.getCheckout', 12415 defs: { 12416 main: { 12417 type: 'query', 12418 description: 'DEPRECATED - please use com.atproto.sync.getRepo instead', 12419 parameters: { 12420 type: 'params', 12421 required: ['did'], 12422 properties: { 12423 did: { 12424 type: 'string', 12425 format: 'did', 12426 description: 'The DID of the repo.', 12427 }, 12428 }, 12429 }, 12430 output: { 12431 encoding: 'application/vnd.ipld.car', 12432 }, 12433 }, 12434 }, 12435 }, 12436 ComAtprotoSyncGetHead: { 12437 lexicon: 1, 12438 id: 'com.atproto.sync.getHead', 12439 defs: { 12440 main: { 12441 type: 'query', 12442 description: 12443 'DEPRECATED - please use com.atproto.sync.getLatestCommit instead', 12444 parameters: { 12445 type: 'params', 12446 required: ['did'], 12447 properties: { 12448 did: { 12449 type: 'string', 12450 format: 'did', 12451 description: 'The DID of the repo.', 12452 }, 12453 }, 12454 }, 12455 output: { 12456 encoding: 'application/json', 12457 schema: { 12458 type: 'object', 12459 required: ['root'], 12460 properties: { 12461 root: { 12462 type: 'string', 12463 format: 'cid', 12464 }, 12465 }, 12466 }, 12467 }, 12468 errors: [ 12469 { 12470 name: 'HeadNotFound', 12471 }, 12472 ], 12473 }, 12474 }, 12475 }, 12476 ComAtprotoSyncGetHostStatus: { 12477 lexicon: 1, 12478 id: 'com.atproto.sync.getHostStatus', 12479 defs: { 12480 main: { 12481 type: 'query', 12482 description: 12483 'Returns information about a specified upstream host, as consumed by the server. Implemented by relays.', 12484 parameters: { 12485 type: 'params', 12486 required: ['hostname'], 12487 properties: { 12488 hostname: { 12489 type: 'string', 12490 description: 12491 'Hostname of the host (eg, PDS or relay) being queried.', 12492 }, 12493 }, 12494 }, 12495 output: { 12496 encoding: 'application/json', 12497 schema: { 12498 type: 'object', 12499 required: ['hostname'], 12500 properties: { 12501 hostname: { 12502 type: 'string', 12503 }, 12504 seq: { 12505 type: 'integer', 12506 description: 12507 'Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).', 12508 }, 12509 accountCount: { 12510 type: 'integer', 12511 description: 12512 'Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts.', 12513 }, 12514 status: { 12515 type: 'ref', 12516 ref: 'lex:com.atproto.sync.defs#hostStatus', 12517 }, 12518 }, 12519 }, 12520 }, 12521 errors: [ 12522 { 12523 name: 'HostNotFound', 12524 }, 12525 ], 12526 }, 12527 }, 12528 }, 12529 ComAtprotoSyncGetLatestCommit: { 12530 lexicon: 1, 12531 id: 'com.atproto.sync.getLatestCommit', 12532 defs: { 12533 main: { 12534 type: 'query', 12535 description: 12536 'Get the current commit CID & revision of the specified repo. Does not require auth.', 12537 parameters: { 12538 type: 'params', 12539 required: ['did'], 12540 properties: { 12541 did: { 12542 type: 'string', 12543 format: 'did', 12544 description: 'The DID of the repo.', 12545 }, 12546 }, 12547 }, 12548 output: { 12549 encoding: 'application/json', 12550 schema: { 12551 type: 'object', 12552 required: ['cid', 'rev'], 12553 properties: { 12554 cid: { 12555 type: 'string', 12556 format: 'cid', 12557 }, 12558 rev: { 12559 type: 'string', 12560 format: 'tid', 12561 }, 12562 }, 12563 }, 12564 }, 12565 errors: [ 12566 { 12567 name: 'RepoNotFound', 12568 }, 12569 { 12570 name: 'RepoTakendown', 12571 }, 12572 { 12573 name: 'RepoSuspended', 12574 }, 12575 { 12576 name: 'RepoDeactivated', 12577 }, 12578 ], 12579 }, 12580 }, 12581 }, 12582 ComAtprotoSyncGetRecord: { 12583 lexicon: 1, 12584 id: 'com.atproto.sync.getRecord', 12585 defs: { 12586 main: { 12587 type: 'query', 12588 description: 12589 'Get data blocks needed to prove the existence or non-existence of record in the current version of repo. Does not require auth.', 12590 parameters: { 12591 type: 'params', 12592 required: ['did', 'collection', 'rkey'], 12593 properties: { 12594 did: { 12595 type: 'string', 12596 format: 'did', 12597 description: 'The DID of the repo.', 12598 }, 12599 collection: { 12600 type: 'string', 12601 format: 'nsid', 12602 }, 12603 rkey: { 12604 type: 'string', 12605 description: 'Record Key', 12606 format: 'record-key', 12607 }, 12608 }, 12609 }, 12610 output: { 12611 encoding: 'application/vnd.ipld.car', 12612 }, 12613 errors: [ 12614 { 12615 name: 'RecordNotFound', 12616 }, 12617 { 12618 name: 'RepoNotFound', 12619 }, 12620 { 12621 name: 'RepoTakendown', 12622 }, 12623 { 12624 name: 'RepoSuspended', 12625 }, 12626 { 12627 name: 'RepoDeactivated', 12628 }, 12629 ], 12630 }, 12631 }, 12632 }, 12633 ComAtprotoSyncGetRepo: { 12634 lexicon: 1, 12635 id: 'com.atproto.sync.getRepo', 12636 defs: { 12637 main: { 12638 type: 'query', 12639 description: 12640 "Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS.", 12641 parameters: { 12642 type: 'params', 12643 required: ['did'], 12644 properties: { 12645 did: { 12646 type: 'string', 12647 format: 'did', 12648 description: 'The DID of the repo.', 12649 }, 12650 since: { 12651 type: 'string', 12652 format: 'tid', 12653 description: 12654 "The revision ('rev') of the repo to create a diff from.", 12655 }, 12656 }, 12657 }, 12658 output: { 12659 encoding: 'application/vnd.ipld.car', 12660 }, 12661 errors: [ 12662 { 12663 name: 'RepoNotFound', 12664 }, 12665 { 12666 name: 'RepoTakendown', 12667 }, 12668 { 12669 name: 'RepoSuspended', 12670 }, 12671 { 12672 name: 'RepoDeactivated', 12673 }, 12674 ], 12675 }, 12676 }, 12677 }, 12678 ComAtprotoSyncGetRepoStatus: { 12679 lexicon: 1, 12680 id: 'com.atproto.sync.getRepoStatus', 12681 defs: { 12682 main: { 12683 type: 'query', 12684 description: 12685 'Get the hosting status for a repository, on this server. Expected to be implemented by PDS and Relay.', 12686 parameters: { 12687 type: 'params', 12688 required: ['did'], 12689 properties: { 12690 did: { 12691 type: 'string', 12692 format: 'did', 12693 description: 'The DID of the repo.', 12694 }, 12695 }, 12696 }, 12697 output: { 12698 encoding: 'application/json', 12699 schema: { 12700 type: 'object', 12701 required: ['did', 'active'], 12702 properties: { 12703 did: { 12704 type: 'string', 12705 format: 'did', 12706 }, 12707 active: { 12708 type: 'boolean', 12709 }, 12710 status: { 12711 type: 'string', 12712 description: 12713 '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.', 12714 knownValues: [ 12715 'takendown', 12716 'suspended', 12717 'deleted', 12718 'deactivated', 12719 'desynchronized', 12720 'throttled', 12721 ], 12722 }, 12723 rev: { 12724 type: 'string', 12725 format: 'tid', 12726 description: 12727 'Optional field, the current rev of the repo, if active=true', 12728 }, 12729 }, 12730 }, 12731 }, 12732 errors: [ 12733 { 12734 name: 'RepoNotFound', 12735 }, 12736 ], 12737 }, 12738 }, 12739 }, 12740 ComAtprotoSyncListBlobs: { 12741 lexicon: 1, 12742 id: 'com.atproto.sync.listBlobs', 12743 defs: { 12744 main: { 12745 type: 'query', 12746 description: 12747 'List blob CIDs for an account, since some repo revision. Does not require auth; implemented by PDS.', 12748 parameters: { 12749 type: 'params', 12750 required: ['did'], 12751 properties: { 12752 did: { 12753 type: 'string', 12754 format: 'did', 12755 description: 'The DID of the repo.', 12756 }, 12757 since: { 12758 type: 'string', 12759 format: 'tid', 12760 description: 'Optional revision of the repo to list blobs since.', 12761 }, 12762 limit: { 12763 type: 'integer', 12764 minimum: 1, 12765 maximum: 1000, 12766 default: 500, 12767 }, 12768 cursor: { 12769 type: 'string', 12770 }, 12771 }, 12772 }, 12773 output: { 12774 encoding: 'application/json', 12775 schema: { 12776 type: 'object', 12777 required: ['cids'], 12778 properties: { 12779 cursor: { 12780 type: 'string', 12781 }, 12782 cids: { 12783 type: 'array', 12784 items: { 12785 type: 'string', 12786 format: 'cid', 12787 }, 12788 }, 12789 }, 12790 }, 12791 }, 12792 errors: [ 12793 { 12794 name: 'RepoNotFound', 12795 }, 12796 { 12797 name: 'RepoTakendown', 12798 }, 12799 { 12800 name: 'RepoSuspended', 12801 }, 12802 { 12803 name: 'RepoDeactivated', 12804 }, 12805 ], 12806 }, 12807 }, 12808 }, 12809 ComAtprotoSyncListHosts: { 12810 lexicon: 1, 12811 id: 'com.atproto.sync.listHosts', 12812 defs: { 12813 main: { 12814 type: 'query', 12815 description: 12816 'Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays.', 12817 parameters: { 12818 type: 'params', 12819 properties: { 12820 limit: { 12821 type: 'integer', 12822 minimum: 1, 12823 maximum: 1000, 12824 default: 200, 12825 }, 12826 cursor: { 12827 type: 'string', 12828 }, 12829 }, 12830 }, 12831 output: { 12832 encoding: 'application/json', 12833 schema: { 12834 type: 'object', 12835 required: ['hosts'], 12836 properties: { 12837 cursor: { 12838 type: 'string', 12839 }, 12840 hosts: { 12841 type: 'array', 12842 items: { 12843 type: 'ref', 12844 ref: 'lex:com.atproto.sync.listHosts#host', 12845 }, 12846 description: 12847 'Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first.', 12848 }, 12849 }, 12850 }, 12851 }, 12852 }, 12853 host: { 12854 type: 'object', 12855 required: ['hostname'], 12856 properties: { 12857 hostname: { 12858 type: 'string', 12859 description: 'hostname of server; not a URL (no scheme)', 12860 }, 12861 seq: { 12862 type: 'integer', 12863 description: 12864 'Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).', 12865 }, 12866 accountCount: { 12867 type: 'integer', 12868 }, 12869 status: { 12870 type: 'ref', 12871 ref: 'lex:com.atproto.sync.defs#hostStatus', 12872 }, 12873 }, 12874 }, 12875 }, 12876 }, 12877 ComAtprotoSyncListRepos: { 12878 lexicon: 1, 12879 id: 'com.atproto.sync.listRepos', 12880 defs: { 12881 main: { 12882 type: 'query', 12883 description: 12884 'Enumerates all the DID, rev, and commit CID for all repos hosted by this service. Does not require auth; implemented by PDS and Relay.', 12885 parameters: { 12886 type: 'params', 12887 properties: { 12888 limit: { 12889 type: 'integer', 12890 minimum: 1, 12891 maximum: 1000, 12892 default: 500, 12893 }, 12894 cursor: { 12895 type: 'string', 12896 }, 12897 }, 12898 }, 12899 output: { 12900 encoding: 'application/json', 12901 schema: { 12902 type: 'object', 12903 required: ['repos'], 12904 properties: { 12905 cursor: { 12906 type: 'string', 12907 }, 12908 repos: { 12909 type: 'array', 12910 items: { 12911 type: 'ref', 12912 ref: 'lex:com.atproto.sync.listRepos#repo', 12913 }, 12914 }, 12915 }, 12916 }, 12917 }, 12918 }, 12919 repo: { 12920 type: 'object', 12921 required: ['did', 'head', 'rev'], 12922 properties: { 12923 did: { 12924 type: 'string', 12925 format: 'did', 12926 }, 12927 head: { 12928 type: 'string', 12929 format: 'cid', 12930 description: 'Current repo commit CID', 12931 }, 12932 rev: { 12933 type: 'string', 12934 format: 'tid', 12935 }, 12936 active: { 12937 type: 'boolean', 12938 }, 12939 status: { 12940 type: 'string', 12941 description: 12942 '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.', 12943 knownValues: [ 12944 'takendown', 12945 'suspended', 12946 'deleted', 12947 'deactivated', 12948 'desynchronized', 12949 'throttled', 12950 ], 12951 }, 12952 }, 12953 }, 12954 }, 12955 }, 12956 ComAtprotoSyncListReposByCollection: { 12957 lexicon: 1, 12958 id: 'com.atproto.sync.listReposByCollection', 12959 defs: { 12960 main: { 12961 type: 'query', 12962 description: 12963 'Enumerates all the DIDs which have records with the given collection NSID.', 12964 parameters: { 12965 type: 'params', 12966 required: ['collection'], 12967 properties: { 12968 collection: { 12969 type: 'string', 12970 format: 'nsid', 12971 }, 12972 limit: { 12973 type: 'integer', 12974 description: 12975 'Maximum size of response set. Recommend setting a large maximum (1000+) when enumerating large DID lists.', 12976 minimum: 1, 12977 maximum: 2000, 12978 default: 500, 12979 }, 12980 cursor: { 12981 type: 'string', 12982 }, 12983 }, 12984 }, 12985 output: { 12986 encoding: 'application/json', 12987 schema: { 12988 type: 'object', 12989 required: ['repos'], 12990 properties: { 12991 cursor: { 12992 type: 'string', 12993 }, 12994 repos: { 12995 type: 'array', 12996 items: { 12997 type: 'ref', 12998 ref: 'lex:com.atproto.sync.listReposByCollection#repo', 12999 }, 13000 }, 13001 }, 13002 }, 13003 }, 13004 }, 13005 repo: { 13006 type: 'object', 13007 required: ['did'], 13008 properties: { 13009 did: { 13010 type: 'string', 13011 format: 'did', 13012 }, 13013 }, 13014 }, 13015 }, 13016 }, 13017 ComAtprotoSyncNotifyOfUpdate: { 13018 lexicon: 1, 13019 id: 'com.atproto.sync.notifyOfUpdate', 13020 defs: { 13021 main: { 13022 type: 'procedure', 13023 description: 13024 'Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay. DEPRECATED: just use com.atproto.sync.requestCrawl', 13025 input: { 13026 encoding: 'application/json', 13027 schema: { 13028 type: 'object', 13029 required: ['hostname'], 13030 properties: { 13031 hostname: { 13032 type: 'string', 13033 description: 13034 'Hostname of the current service (usually a PDS) that is notifying of update.', 13035 }, 13036 }, 13037 }, 13038 }, 13039 }, 13040 }, 13041 }, 13042 ComAtprotoSyncRequestCrawl: { 13043 lexicon: 1, 13044 id: 'com.atproto.sync.requestCrawl', 13045 defs: { 13046 main: { 13047 type: 'procedure', 13048 description: 13049 'Request a service to persistently crawl hosted repos. Expected use is new PDS instances declaring their existence to Relays. Does not require auth.', 13050 input: { 13051 encoding: 'application/json', 13052 schema: { 13053 type: 'object', 13054 required: ['hostname'], 13055 properties: { 13056 hostname: { 13057 type: 'string', 13058 description: 13059 'Hostname of the current service (eg, PDS) that is requesting to be crawled.', 13060 }, 13061 }, 13062 }, 13063 }, 13064 errors: [ 13065 { 13066 name: 'HostBanned', 13067 }, 13068 ], 13069 }, 13070 }, 13071 }, 13072 ComAtprotoSyncSubscribeRepos: { 13073 lexicon: 1, 13074 id: 'com.atproto.sync.subscribeRepos', 13075 defs: { 13076 main: { 13077 type: 'subscription', 13078 description: 13079 'Repository event stream, aka Firehose endpoint. Outputs repo commits with diff data, and identity update events, for all repositories on the current server. See the atproto specifications for details around stream sequencing, repo versioning, CAR diff format, and more. Public and does not require auth; implemented by PDS and Relay.', 13080 parameters: { 13081 type: 'params', 13082 properties: { 13083 cursor: { 13084 type: 'integer', 13085 description: 'The last known event seq number to backfill from.', 13086 }, 13087 }, 13088 }, 13089 message: { 13090 schema: { 13091 type: 'union', 13092 refs: [ 13093 'lex:com.atproto.sync.subscribeRepos#commit', 13094 'lex:com.atproto.sync.subscribeRepos#sync', 13095 'lex:com.atproto.sync.subscribeRepos#identity', 13096 'lex:com.atproto.sync.subscribeRepos#account', 13097 'lex:com.atproto.sync.subscribeRepos#info', 13098 ], 13099 }, 13100 }, 13101 errors: [ 13102 { 13103 name: 'FutureCursor', 13104 }, 13105 { 13106 name: 'ConsumerTooSlow', 13107 description: 13108 'If the consumer of the stream can not keep up with events, and a backlog gets too large, the server will drop the connection.', 13109 }, 13110 ], 13111 }, 13112 commit: { 13113 type: 'object', 13114 description: 13115 'Represents an update of repository state. Note that empty commits are allowed, which include no repo data changes, but an update to rev and signature.', 13116 required: [ 13117 'seq', 13118 'rebase', 13119 'tooBig', 13120 'repo', 13121 'commit', 13122 'rev', 13123 'since', 13124 'blocks', 13125 'ops', 13126 'blobs', 13127 'time', 13128 ], 13129 nullable: ['since'], 13130 properties: { 13131 seq: { 13132 type: 'integer', 13133 description: 'The stream sequence number of this message.', 13134 }, 13135 rebase: { 13136 type: 'boolean', 13137 description: 'DEPRECATED -- unused', 13138 }, 13139 tooBig: { 13140 type: 'boolean', 13141 description: 13142 '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.', 13143 }, 13144 repo: { 13145 type: 'string', 13146 format: 'did', 13147 description: 13148 "The repo this event comes from. Note that all other message types name this field 'did'.", 13149 }, 13150 commit: { 13151 type: 'cid-link', 13152 description: 'Repo commit object CID.', 13153 }, 13154 rev: { 13155 type: 'string', 13156 format: 'tid', 13157 description: 13158 'The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event.', 13159 }, 13160 since: { 13161 type: 'string', 13162 format: 'tid', 13163 description: 13164 'The rev of the last emitted commit from this repo (if any).', 13165 }, 13166 blocks: { 13167 type: 'bytes', 13168 description: 13169 "CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.", 13170 maxLength: 2000000, 13171 }, 13172 ops: { 13173 type: 'array', 13174 items: { 13175 type: 'ref', 13176 ref: 'lex:com.atproto.sync.subscribeRepos#repoOp', 13177 description: 13178 'List of repo mutation operations in this commit (eg, records created, updated, or deleted).', 13179 }, 13180 maxLength: 200, 13181 }, 13182 blobs: { 13183 type: 'array', 13184 items: { 13185 type: 'cid-link', 13186 description: 13187 'DEPRECATED -- will soon always be empty. List of new blobs (by CID) referenced by records in this commit.', 13188 }, 13189 }, 13190 prevData: { 13191 type: 'cid-link', 13192 description: 13193 "The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose.", 13194 }, 13195 time: { 13196 type: 'string', 13197 format: 'datetime', 13198 description: 13199 'Timestamp of when this message was originally broadcast.', 13200 }, 13201 }, 13202 }, 13203 sync: { 13204 type: 'object', 13205 description: 13206 'Updates the repo to a new state, without necessarily including that state on the firehose. Used to recover from broken commit streams, data loss incidents, or in situations where upstream host does not know recent state of the repository.', 13207 required: ['seq', 'did', 'blocks', 'rev', 'time'], 13208 properties: { 13209 seq: { 13210 type: 'integer', 13211 description: 'The stream sequence number of this message.', 13212 }, 13213 did: { 13214 type: 'string', 13215 format: 'did', 13216 description: 13217 'The account this repo event corresponds to. Must match that in the commit object.', 13218 }, 13219 blocks: { 13220 type: 'bytes', 13221 description: 13222 "CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.", 13223 maxLength: 10000, 13224 }, 13225 rev: { 13226 type: 'string', 13227 description: 13228 'The rev of the commit. This value must match that in the commit object.', 13229 }, 13230 time: { 13231 type: 'string', 13232 format: 'datetime', 13233 description: 13234 'Timestamp of when this message was originally broadcast.', 13235 }, 13236 }, 13237 }, 13238 identity: { 13239 type: 'object', 13240 description: 13241 "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.", 13242 required: ['seq', 'did', 'time'], 13243 properties: { 13244 seq: { 13245 type: 'integer', 13246 }, 13247 did: { 13248 type: 'string', 13249 format: 'did', 13250 }, 13251 time: { 13252 type: 'string', 13253 format: 'datetime', 13254 }, 13255 handle: { 13256 type: 'string', 13257 format: 'handle', 13258 description: 13259 "The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.", 13260 }, 13261 }, 13262 }, 13263 account: { 13264 type: 'object', 13265 description: 13266 "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.", 13267 required: ['seq', 'did', 'time', 'active'], 13268 properties: { 13269 seq: { 13270 type: 'integer', 13271 }, 13272 did: { 13273 type: 'string', 13274 format: 'did', 13275 }, 13276 time: { 13277 type: 'string', 13278 format: 'datetime', 13279 }, 13280 active: { 13281 type: 'boolean', 13282 description: 13283 'Indicates that the account has a repository which can be fetched from the host that emitted this event.', 13284 }, 13285 status: { 13286 type: 'string', 13287 description: 13288 'If active=false, this optional field indicates a reason for why the account is not active.', 13289 knownValues: [ 13290 'takendown', 13291 'suspended', 13292 'deleted', 13293 'deactivated', 13294 'desynchronized', 13295 'throttled', 13296 ], 13297 }, 13298 }, 13299 }, 13300 info: { 13301 type: 'object', 13302 required: ['name'], 13303 properties: { 13304 name: { 13305 type: 'string', 13306 knownValues: ['OutdatedCursor'], 13307 }, 13308 message: { 13309 type: 'string', 13310 }, 13311 }, 13312 }, 13313 repoOp: { 13314 type: 'object', 13315 description: 'A repo operation, ie a mutation of a single record.', 13316 required: ['action', 'path', 'cid'], 13317 nullable: ['cid'], 13318 properties: { 13319 action: { 13320 type: 'string', 13321 knownValues: ['create', 'update', 'delete'], 13322 }, 13323 path: { 13324 type: 'string', 13325 }, 13326 cid: { 13327 type: 'cid-link', 13328 description: 13329 'For creates and updates, the new record CID. For deletions, null.', 13330 }, 13331 prev: { 13332 type: 'cid-link', 13333 description: 13334 'For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.', 13335 }, 13336 }, 13337 }, 13338 }, 13339 }, 13340 ComAtprotoTempAddReservedHandle: { 13341 lexicon: 1, 13342 id: 'com.atproto.temp.addReservedHandle', 13343 defs: { 13344 main: { 13345 type: 'procedure', 13346 description: 'Add a handle to the set of reserved handles.', 13347 input: { 13348 encoding: 'application/json', 13349 schema: { 13350 type: 'object', 13351 required: ['handle'], 13352 properties: { 13353 handle: { 13354 type: 'string', 13355 }, 13356 }, 13357 }, 13358 }, 13359 output: { 13360 encoding: 'application/json', 13361 schema: { 13362 type: 'object', 13363 properties: {}, 13364 }, 13365 }, 13366 }, 13367 }, 13368 }, 13369 ComAtprotoTempCheckHandleAvailability: { 13370 lexicon: 1, 13371 id: 'com.atproto.temp.checkHandleAvailability', 13372 defs: { 13373 main: { 13374 type: 'query', 13375 description: 13376 'Checks whether the provided handle is available. If the handle is not available, available suggestions will be returned. Optional inputs will be used to generate suggestions.', 13377 parameters: { 13378 type: 'params', 13379 required: ['handle'], 13380 properties: { 13381 handle: { 13382 type: 'string', 13383 format: 'handle', 13384 description: 13385 'Tentative handle. Will be checked for availability or used to build handle suggestions.', 13386 }, 13387 email: { 13388 type: 'string', 13389 description: 13390 'User-provided email. Might be used to build handle suggestions.', 13391 }, 13392 birthDate: { 13393 type: 'string', 13394 format: 'datetime', 13395 description: 13396 'User-provided birth date. Might be used to build handle suggestions.', 13397 }, 13398 }, 13399 }, 13400 output: { 13401 encoding: 'application/json', 13402 schema: { 13403 type: 'object', 13404 required: ['handle', 'result'], 13405 properties: { 13406 handle: { 13407 type: 'string', 13408 format: 'handle', 13409 description: 'Echo of the input handle.', 13410 }, 13411 result: { 13412 type: 'union', 13413 refs: [ 13414 'lex:com.atproto.temp.checkHandleAvailability#resultAvailable', 13415 'lex:com.atproto.temp.checkHandleAvailability#resultUnavailable', 13416 ], 13417 }, 13418 }, 13419 }, 13420 }, 13421 errors: [ 13422 { 13423 name: 'InvalidEmail', 13424 description: 'An invalid email was provided.', 13425 }, 13426 ], 13427 }, 13428 resultAvailable: { 13429 type: 'object', 13430 description: 'Indicates the provided handle is available.', 13431 properties: {}, 13432 }, 13433 resultUnavailable: { 13434 type: 'object', 13435 description: 13436 'Indicates the provided handle is unavailable and gives suggestions of available handles.', 13437 required: ['suggestions'], 13438 properties: { 13439 suggestions: { 13440 type: 'array', 13441 description: 13442 'List of suggested handles based on the provided inputs.', 13443 items: { 13444 type: 'ref', 13445 ref: 'lex:com.atproto.temp.checkHandleAvailability#suggestion', 13446 }, 13447 }, 13448 }, 13449 }, 13450 suggestion: { 13451 type: 'object', 13452 required: ['handle', 'method'], 13453 properties: { 13454 handle: { 13455 type: 'string', 13456 format: 'handle', 13457 }, 13458 method: { 13459 type: 'string', 13460 description: 13461 'Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics.', 13462 }, 13463 }, 13464 }, 13465 }, 13466 }, 13467 ComAtprotoTempCheckSignupQueue: { 13468 lexicon: 1, 13469 id: 'com.atproto.temp.checkSignupQueue', 13470 defs: { 13471 main: { 13472 type: 'query', 13473 description: 'Check accounts location in signup queue.', 13474 output: { 13475 encoding: 'application/json', 13476 schema: { 13477 type: 'object', 13478 required: ['activated'], 13479 properties: { 13480 activated: { 13481 type: 'boolean', 13482 }, 13483 placeInQueue: { 13484 type: 'integer', 13485 }, 13486 estimatedTimeMs: { 13487 type: 'integer', 13488 }, 13489 }, 13490 }, 13491 }, 13492 }, 13493 }, 13494 }, 13495 ComAtprotoTempFetchLabels: { 13496 lexicon: 1, 13497 id: 'com.atproto.temp.fetchLabels', 13498 defs: { 13499 main: { 13500 type: 'query', 13501 description: 13502 'DEPRECATED: use queryLabels or subscribeLabels instead -- Fetch all labels from a labeler created after a certain date.', 13503 parameters: { 13504 type: 'params', 13505 properties: { 13506 since: { 13507 type: 'integer', 13508 }, 13509 limit: { 13510 type: 'integer', 13511 minimum: 1, 13512 maximum: 250, 13513 default: 50, 13514 }, 13515 }, 13516 }, 13517 output: { 13518 encoding: 'application/json', 13519 schema: { 13520 type: 'object', 13521 required: ['labels'], 13522 properties: { 13523 labels: { 13524 type: 'array', 13525 items: { 13526 type: 'ref', 13527 ref: 'lex:com.atproto.label.defs#label', 13528 }, 13529 }, 13530 }, 13531 }, 13532 }, 13533 }, 13534 }, 13535 }, 13536 ComAtprotoTempRequestPhoneVerification: { 13537 lexicon: 1, 13538 id: 'com.atproto.temp.requestPhoneVerification', 13539 defs: { 13540 main: { 13541 type: 'procedure', 13542 description: 13543 'Request a verification code to be sent to the supplied phone number', 13544 input: { 13545 encoding: 'application/json', 13546 schema: { 13547 type: 'object', 13548 required: ['phoneNumber'], 13549 properties: { 13550 phoneNumber: { 13551 type: 'string', 13552 }, 13553 }, 13554 }, 13555 }, 13556 }, 13557 }, 13558 }, 13559 ToolsOzoneCommunicationCreateTemplate: { 13560 lexicon: 1, 13561 id: 'tools.ozone.communication.createTemplate', 13562 defs: { 13563 main: { 13564 type: 'procedure', 13565 description: 13566 'Administrative action to create a new, re-usable communication (email for now) template.', 13567 input: { 13568 encoding: 'application/json', 13569 schema: { 13570 type: 'object', 13571 required: ['subject', 'contentMarkdown', 'name'], 13572 properties: { 13573 name: { 13574 type: 'string', 13575 description: 'Name of the template.', 13576 }, 13577 contentMarkdown: { 13578 type: 'string', 13579 description: 13580 'Content of the template, markdown supported, can contain variable placeholders.', 13581 }, 13582 subject: { 13583 type: 'string', 13584 description: 'Subject of the message, used in emails.', 13585 }, 13586 lang: { 13587 type: 'string', 13588 format: 'language', 13589 description: 'Message language.', 13590 }, 13591 createdBy: { 13592 type: 'string', 13593 format: 'did', 13594 description: 'DID of the user who is creating the template.', 13595 }, 13596 }, 13597 }, 13598 }, 13599 output: { 13600 encoding: 'application/json', 13601 schema: { 13602 type: 'ref', 13603 ref: 'lex:tools.ozone.communication.defs#templateView', 13604 }, 13605 }, 13606 errors: [ 13607 { 13608 name: 'DuplicateTemplateName', 13609 }, 13610 ], 13611 }, 13612 }, 13613 }, 13614 ToolsOzoneCommunicationDefs: { 13615 lexicon: 1, 13616 id: 'tools.ozone.communication.defs', 13617 defs: { 13618 templateView: { 13619 type: 'object', 13620 required: [ 13621 'id', 13622 'name', 13623 'contentMarkdown', 13624 'disabled', 13625 'lastUpdatedBy', 13626 'createdAt', 13627 'updatedAt', 13628 ], 13629 properties: { 13630 id: { 13631 type: 'string', 13632 }, 13633 name: { 13634 type: 'string', 13635 description: 'Name of the template.', 13636 }, 13637 subject: { 13638 type: 'string', 13639 description: 13640 'Content of the template, can contain markdown and variable placeholders.', 13641 }, 13642 contentMarkdown: { 13643 type: 'string', 13644 description: 'Subject of the message, used in emails.', 13645 }, 13646 disabled: { 13647 type: 'boolean', 13648 }, 13649 lang: { 13650 type: 'string', 13651 format: 'language', 13652 description: 'Message language.', 13653 }, 13654 lastUpdatedBy: { 13655 type: 'string', 13656 format: 'did', 13657 description: 'DID of the user who last updated the template.', 13658 }, 13659 createdAt: { 13660 type: 'string', 13661 format: 'datetime', 13662 }, 13663 updatedAt: { 13664 type: 'string', 13665 format: 'datetime', 13666 }, 13667 }, 13668 }, 13669 }, 13670 }, 13671 ToolsOzoneCommunicationDeleteTemplate: { 13672 lexicon: 1, 13673 id: 'tools.ozone.communication.deleteTemplate', 13674 defs: { 13675 main: { 13676 type: 'procedure', 13677 description: 'Delete a communication template.', 13678 input: { 13679 encoding: 'application/json', 13680 schema: { 13681 type: 'object', 13682 required: ['id'], 13683 properties: { 13684 id: { 13685 type: 'string', 13686 }, 13687 }, 13688 }, 13689 }, 13690 }, 13691 }, 13692 }, 13693 ToolsOzoneCommunicationListTemplates: { 13694 lexicon: 1, 13695 id: 'tools.ozone.communication.listTemplates', 13696 defs: { 13697 main: { 13698 type: 'query', 13699 description: 'Get list of all communication templates.', 13700 output: { 13701 encoding: 'application/json', 13702 schema: { 13703 type: 'object', 13704 required: ['communicationTemplates'], 13705 properties: { 13706 communicationTemplates: { 13707 type: 'array', 13708 items: { 13709 type: 'ref', 13710 ref: 'lex:tools.ozone.communication.defs#templateView', 13711 }, 13712 }, 13713 }, 13714 }, 13715 }, 13716 }, 13717 }, 13718 }, 13719 ToolsOzoneCommunicationUpdateTemplate: { 13720 lexicon: 1, 13721 id: 'tools.ozone.communication.updateTemplate', 13722 defs: { 13723 main: { 13724 type: 'procedure', 13725 description: 13726 'Administrative action to update an existing communication template. Allows passing partial fields to patch specific fields only.', 13727 input: { 13728 encoding: 'application/json', 13729 schema: { 13730 type: 'object', 13731 required: ['id'], 13732 properties: { 13733 id: { 13734 type: 'string', 13735 description: 'ID of the template to be updated.', 13736 }, 13737 name: { 13738 type: 'string', 13739 description: 'Name of the template.', 13740 }, 13741 lang: { 13742 type: 'string', 13743 format: 'language', 13744 description: 'Message language.', 13745 }, 13746 contentMarkdown: { 13747 type: 'string', 13748 description: 13749 'Content of the template, markdown supported, can contain variable placeholders.', 13750 }, 13751 subject: { 13752 type: 'string', 13753 description: 'Subject of the message, used in emails.', 13754 }, 13755 updatedBy: { 13756 type: 'string', 13757 format: 'did', 13758 description: 'DID of the user who is updating the template.', 13759 }, 13760 disabled: { 13761 type: 'boolean', 13762 }, 13763 }, 13764 }, 13765 }, 13766 output: { 13767 encoding: 'application/json', 13768 schema: { 13769 type: 'ref', 13770 ref: 'lex:tools.ozone.communication.defs#templateView', 13771 }, 13772 }, 13773 errors: [ 13774 { 13775 name: 'DuplicateTemplateName', 13776 }, 13777 ], 13778 }, 13779 }, 13780 }, 13781 ToolsOzoneHostingGetAccountHistory: { 13782 lexicon: 1, 13783 id: 'tools.ozone.hosting.getAccountHistory', 13784 defs: { 13785 main: { 13786 type: 'query', 13787 description: 13788 'Get account history, e.g. log of updated email addresses or other identity information.', 13789 parameters: { 13790 type: 'params', 13791 required: ['did'], 13792 properties: { 13793 did: { 13794 type: 'string', 13795 format: 'did', 13796 }, 13797 events: { 13798 type: 'array', 13799 items: { 13800 type: 'string', 13801 knownValues: [ 13802 'accountCreated', 13803 'emailUpdated', 13804 'emailConfirmed', 13805 'passwordUpdated', 13806 'handleUpdated', 13807 ], 13808 }, 13809 }, 13810 cursor: { 13811 type: 'string', 13812 }, 13813 limit: { 13814 type: 'integer', 13815 minimum: 1, 13816 maximum: 100, 13817 default: 50, 13818 }, 13819 }, 13820 }, 13821 output: { 13822 encoding: 'application/json', 13823 schema: { 13824 type: 'object', 13825 required: ['events'], 13826 properties: { 13827 cursor: { 13828 type: 'string', 13829 }, 13830 events: { 13831 type: 'array', 13832 items: { 13833 type: 'ref', 13834 ref: 'lex:tools.ozone.hosting.getAccountHistory#event', 13835 }, 13836 }, 13837 }, 13838 }, 13839 }, 13840 }, 13841 event: { 13842 type: 'object', 13843 required: ['details', 'createdBy', 'createdAt'], 13844 properties: { 13845 details: { 13846 type: 'union', 13847 refs: [ 13848 'lex:tools.ozone.hosting.getAccountHistory#accountCreated', 13849 'lex:tools.ozone.hosting.getAccountHistory#emailUpdated', 13850 'lex:tools.ozone.hosting.getAccountHistory#emailConfirmed', 13851 'lex:tools.ozone.hosting.getAccountHistory#passwordUpdated', 13852 'lex:tools.ozone.hosting.getAccountHistory#handleUpdated', 13853 ], 13854 }, 13855 createdBy: { 13856 type: 'string', 13857 }, 13858 createdAt: { 13859 type: 'string', 13860 format: 'datetime', 13861 }, 13862 }, 13863 }, 13864 accountCreated: { 13865 type: 'object', 13866 required: [], 13867 properties: { 13868 email: { 13869 type: 'string', 13870 }, 13871 handle: { 13872 type: 'string', 13873 format: 'handle', 13874 }, 13875 }, 13876 }, 13877 emailUpdated: { 13878 type: 'object', 13879 required: ['email'], 13880 properties: { 13881 email: { 13882 type: 'string', 13883 }, 13884 }, 13885 }, 13886 emailConfirmed: { 13887 type: 'object', 13888 required: ['email'], 13889 properties: { 13890 email: { 13891 type: 'string', 13892 }, 13893 }, 13894 }, 13895 passwordUpdated: { 13896 type: 'object', 13897 required: [], 13898 properties: {}, 13899 }, 13900 handleUpdated: { 13901 type: 'object', 13902 required: ['handle'], 13903 properties: { 13904 handle: { 13905 type: 'string', 13906 format: 'handle', 13907 }, 13908 }, 13909 }, 13910 }, 13911 }, 13912 ToolsOzoneModerationDefs: { 13913 lexicon: 1, 13914 id: 'tools.ozone.moderation.defs', 13915 defs: { 13916 modEventView: { 13917 type: 'object', 13918 required: [ 13919 'id', 13920 'event', 13921 'subject', 13922 'subjectBlobCids', 13923 'createdBy', 13924 'createdAt', 13925 ], 13926 properties: { 13927 id: { 13928 type: 'integer', 13929 }, 13930 event: { 13931 type: 'union', 13932 refs: [ 13933 'lex:tools.ozone.moderation.defs#modEventTakedown', 13934 'lex:tools.ozone.moderation.defs#modEventReverseTakedown', 13935 'lex:tools.ozone.moderation.defs#modEventComment', 13936 'lex:tools.ozone.moderation.defs#modEventReport', 13937 'lex:tools.ozone.moderation.defs#modEventLabel', 13938 'lex:tools.ozone.moderation.defs#modEventAcknowledge', 13939 'lex:tools.ozone.moderation.defs#modEventEscalate', 13940 'lex:tools.ozone.moderation.defs#modEventMute', 13941 'lex:tools.ozone.moderation.defs#modEventUnmute', 13942 'lex:tools.ozone.moderation.defs#modEventMuteReporter', 13943 'lex:tools.ozone.moderation.defs#modEventUnmuteReporter', 13944 'lex:tools.ozone.moderation.defs#modEventEmail', 13945 'lex:tools.ozone.moderation.defs#modEventResolveAppeal', 13946 'lex:tools.ozone.moderation.defs#modEventDivert', 13947 'lex:tools.ozone.moderation.defs#modEventTag', 13948 'lex:tools.ozone.moderation.defs#accountEvent', 13949 'lex:tools.ozone.moderation.defs#identityEvent', 13950 'lex:tools.ozone.moderation.defs#recordEvent', 13951 'lex:tools.ozone.moderation.defs#modEventPriorityScore', 13952 'lex:tools.ozone.moderation.defs#ageAssuranceEvent', 13953 'lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent', 13954 ], 13955 }, 13956 subject: { 13957 type: 'union', 13958 refs: [ 13959 'lex:com.atproto.admin.defs#repoRef', 13960 'lex:com.atproto.repo.strongRef', 13961 'lex:chat.bsky.convo.defs#messageRef', 13962 ], 13963 }, 13964 subjectBlobCids: { 13965 type: 'array', 13966 items: { 13967 type: 'string', 13968 }, 13969 }, 13970 createdBy: { 13971 type: 'string', 13972 format: 'did', 13973 }, 13974 createdAt: { 13975 type: 'string', 13976 format: 'datetime', 13977 }, 13978 creatorHandle: { 13979 type: 'string', 13980 }, 13981 subjectHandle: { 13982 type: 'string', 13983 }, 13984 modTool: { 13985 type: 'ref', 13986 ref: 'lex:tools.ozone.moderation.defs#modTool', 13987 }, 13988 }, 13989 }, 13990 modEventViewDetail: { 13991 type: 'object', 13992 required: [ 13993 'id', 13994 'event', 13995 'subject', 13996 'subjectBlobs', 13997 'createdBy', 13998 'createdAt', 13999 ], 14000 properties: { 14001 id: { 14002 type: 'integer', 14003 }, 14004 event: { 14005 type: 'union', 14006 refs: [ 14007 'lex:tools.ozone.moderation.defs#modEventTakedown', 14008 'lex:tools.ozone.moderation.defs#modEventReverseTakedown', 14009 'lex:tools.ozone.moderation.defs#modEventComment', 14010 'lex:tools.ozone.moderation.defs#modEventReport', 14011 'lex:tools.ozone.moderation.defs#modEventLabel', 14012 'lex:tools.ozone.moderation.defs#modEventAcknowledge', 14013 'lex:tools.ozone.moderation.defs#modEventEscalate', 14014 'lex:tools.ozone.moderation.defs#modEventMute', 14015 'lex:tools.ozone.moderation.defs#modEventUnmute', 14016 'lex:tools.ozone.moderation.defs#modEventMuteReporter', 14017 'lex:tools.ozone.moderation.defs#modEventUnmuteReporter', 14018 'lex:tools.ozone.moderation.defs#modEventEmail', 14019 'lex:tools.ozone.moderation.defs#modEventResolveAppeal', 14020 'lex:tools.ozone.moderation.defs#modEventDivert', 14021 'lex:tools.ozone.moderation.defs#modEventTag', 14022 'lex:tools.ozone.moderation.defs#accountEvent', 14023 'lex:tools.ozone.moderation.defs#identityEvent', 14024 'lex:tools.ozone.moderation.defs#recordEvent', 14025 'lex:tools.ozone.moderation.defs#modEventPriorityScore', 14026 'lex:tools.ozone.moderation.defs#ageAssuranceEvent', 14027 'lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent', 14028 ], 14029 }, 14030 subject: { 14031 type: 'union', 14032 refs: [ 14033 'lex:tools.ozone.moderation.defs#repoView', 14034 'lex:tools.ozone.moderation.defs#repoViewNotFound', 14035 'lex:tools.ozone.moderation.defs#recordView', 14036 'lex:tools.ozone.moderation.defs#recordViewNotFound', 14037 ], 14038 }, 14039 subjectBlobs: { 14040 type: 'array', 14041 items: { 14042 type: 'ref', 14043 ref: 'lex:tools.ozone.moderation.defs#blobView', 14044 }, 14045 }, 14046 createdBy: { 14047 type: 'string', 14048 format: 'did', 14049 }, 14050 createdAt: { 14051 type: 'string', 14052 format: 'datetime', 14053 }, 14054 modTool: { 14055 type: 'ref', 14056 ref: 'lex:tools.ozone.moderation.defs#modTool', 14057 }, 14058 }, 14059 }, 14060 subjectStatusView: { 14061 type: 'object', 14062 required: ['id', 'subject', 'createdAt', 'updatedAt', 'reviewState'], 14063 properties: { 14064 id: { 14065 type: 'integer', 14066 }, 14067 subject: { 14068 type: 'union', 14069 refs: [ 14070 'lex:com.atproto.admin.defs#repoRef', 14071 'lex:com.atproto.repo.strongRef', 14072 'lex:chat.bsky.convo.defs#messageRef', 14073 ], 14074 }, 14075 hosting: { 14076 type: 'union', 14077 refs: [ 14078 'lex:tools.ozone.moderation.defs#accountHosting', 14079 'lex:tools.ozone.moderation.defs#recordHosting', 14080 ], 14081 }, 14082 subjectBlobCids: { 14083 type: 'array', 14084 items: { 14085 type: 'string', 14086 format: 'cid', 14087 }, 14088 }, 14089 subjectRepoHandle: { 14090 type: 'string', 14091 }, 14092 updatedAt: { 14093 type: 'string', 14094 format: 'datetime', 14095 description: 14096 'Timestamp referencing when the last update was made to the moderation status of the subject', 14097 }, 14098 createdAt: { 14099 type: 'string', 14100 format: 'datetime', 14101 description: 14102 'Timestamp referencing the first moderation status impacting event was emitted on the subject', 14103 }, 14104 reviewState: { 14105 type: 'ref', 14106 ref: 'lex:tools.ozone.moderation.defs#subjectReviewState', 14107 }, 14108 comment: { 14109 type: 'string', 14110 description: 'Sticky comment on the subject.', 14111 }, 14112 priorityScore: { 14113 type: 'integer', 14114 description: 14115 'Numeric value representing the level of priority. Higher score means higher priority.', 14116 minimum: 0, 14117 maximum: 100, 14118 }, 14119 muteUntil: { 14120 type: 'string', 14121 format: 'datetime', 14122 }, 14123 muteReportingUntil: { 14124 type: 'string', 14125 format: 'datetime', 14126 }, 14127 lastReviewedBy: { 14128 type: 'string', 14129 format: 'did', 14130 }, 14131 lastReviewedAt: { 14132 type: 'string', 14133 format: 'datetime', 14134 }, 14135 lastReportedAt: { 14136 type: 'string', 14137 format: 'datetime', 14138 }, 14139 lastAppealedAt: { 14140 type: 'string', 14141 format: 'datetime', 14142 description: 14143 'Timestamp referencing when the author of the subject appealed a moderation action', 14144 }, 14145 takendown: { 14146 type: 'boolean', 14147 }, 14148 appealed: { 14149 type: 'boolean', 14150 description: 14151 'True indicates that the a previously taken moderator action was appealed against, by the author of the content. False indicates last appeal was resolved by moderators.', 14152 }, 14153 suspendUntil: { 14154 type: 'string', 14155 format: 'datetime', 14156 }, 14157 tags: { 14158 type: 'array', 14159 items: { 14160 type: 'string', 14161 }, 14162 }, 14163 accountStats: { 14164 description: 'Statistics related to the account subject', 14165 type: 'ref', 14166 ref: 'lex:tools.ozone.moderation.defs#accountStats', 14167 }, 14168 recordsStats: { 14169 description: 14170 "Statistics related to the record subjects authored by the subject's account", 14171 type: 'ref', 14172 ref: 'lex:tools.ozone.moderation.defs#recordsStats', 14173 }, 14174 ageAssuranceState: { 14175 type: 'string', 14176 description: 'Current age assurance state of the subject.', 14177 knownValues: ['pending', 'assured', 'unknown', 'reset', 'blocked'], 14178 }, 14179 ageAssuranceUpdatedBy: { 14180 type: 'string', 14181 description: 14182 'Whether or not the last successful update to age assurance was made by the user or admin.', 14183 knownValues: ['admin', 'user'], 14184 }, 14185 }, 14186 }, 14187 subjectView: { 14188 description: 14189 "Detailed view of a subject. For record subjects, the author's repo and profile will be returned.", 14190 type: 'object', 14191 required: ['type', 'subject'], 14192 properties: { 14193 type: { 14194 type: 'ref', 14195 ref: 'lex:com.atproto.moderation.defs#subjectType', 14196 }, 14197 subject: { 14198 type: 'string', 14199 }, 14200 status: { 14201 type: 'ref', 14202 ref: 'lex:tools.ozone.moderation.defs#subjectStatusView', 14203 }, 14204 repo: { 14205 type: 'ref', 14206 ref: 'lex:tools.ozone.moderation.defs#repoViewDetail', 14207 }, 14208 profile: { 14209 type: 'union', 14210 refs: [], 14211 }, 14212 record: { 14213 type: 'ref', 14214 ref: 'lex:tools.ozone.moderation.defs#recordViewDetail', 14215 }, 14216 }, 14217 }, 14218 accountStats: { 14219 description: 'Statistics about a particular account subject', 14220 type: 'object', 14221 properties: { 14222 reportCount: { 14223 description: 'Total number of reports on the account', 14224 type: 'integer', 14225 }, 14226 appealCount: { 14227 description: 14228 'Total number of appeals against a moderation action on the account', 14229 type: 'integer', 14230 }, 14231 suspendCount: { 14232 description: 'Number of times the account was suspended', 14233 type: 'integer', 14234 }, 14235 escalateCount: { 14236 description: 'Number of times the account was escalated', 14237 type: 'integer', 14238 }, 14239 takedownCount: { 14240 description: 'Number of times the account was taken down', 14241 type: 'integer', 14242 }, 14243 }, 14244 }, 14245 recordsStats: { 14246 description: 'Statistics about a set of record subject items', 14247 type: 'object', 14248 properties: { 14249 totalReports: { 14250 description: 14251 'Cumulative sum of the number of reports on the items in the set', 14252 type: 'integer', 14253 }, 14254 reportedCount: { 14255 description: 'Number of items that were reported at least once', 14256 type: 'integer', 14257 }, 14258 escalatedCount: { 14259 description: 'Number of items that were escalated at least once', 14260 type: 'integer', 14261 }, 14262 appealedCount: { 14263 description: 'Number of items that were appealed at least once', 14264 type: 'integer', 14265 }, 14266 subjectCount: { 14267 description: 'Total number of item in the set', 14268 type: 'integer', 14269 }, 14270 pendingCount: { 14271 description: 14272 'Number of item currently in "reviewOpen" or "reviewEscalated" state', 14273 type: 'integer', 14274 }, 14275 processedCount: { 14276 description: 14277 'Number of item currently in "reviewNone" or "reviewClosed" state', 14278 type: 'integer', 14279 }, 14280 takendownCount: { 14281 description: 'Number of item currently taken down', 14282 type: 'integer', 14283 }, 14284 }, 14285 }, 14286 subjectReviewState: { 14287 type: 'string', 14288 knownValues: [ 14289 'lex:tools.ozone.moderation.defs#reviewOpen', 14290 'lex:tools.ozone.moderation.defs#reviewEscalated', 14291 'lex:tools.ozone.moderation.defs#reviewClosed', 14292 'lex:tools.ozone.moderation.defs#reviewNone', 14293 ], 14294 }, 14295 reviewOpen: { 14296 type: 'token', 14297 description: 14298 'Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator', 14299 }, 14300 reviewEscalated: { 14301 type: 'token', 14302 description: 14303 'Moderator review status of a subject: Escalated. Indicates that the subject was escalated for review by a moderator', 14304 }, 14305 reviewClosed: { 14306 type: 'token', 14307 description: 14308 'Moderator review status of a subject: Closed. Indicates that the subject was already reviewed and resolved by a moderator', 14309 }, 14310 reviewNone: { 14311 type: 'token', 14312 description: 14313 'Moderator review status of a subject: Unnecessary. Indicates that the subject does not need a review at the moment but there is probably some moderation related metadata available for it', 14314 }, 14315 modEventTakedown: { 14316 type: 'object', 14317 description: 'Take down a subject permanently or temporarily', 14318 properties: { 14319 comment: { 14320 type: 'string', 14321 }, 14322 durationInHours: { 14323 type: 'integer', 14324 description: 14325 'Indicates how long the takedown should be in effect before automatically expiring.', 14326 }, 14327 acknowledgeAccountSubjects: { 14328 type: 'boolean', 14329 description: 14330 'If true, all other reports on content authored by this account will be resolved (acknowledged).', 14331 }, 14332 policies: { 14333 type: 'array', 14334 maxLength: 5, 14335 items: { 14336 type: 'string', 14337 }, 14338 description: 14339 'Names/Keywords of the policies that drove the decision.', 14340 }, 14341 }, 14342 }, 14343 modEventReverseTakedown: { 14344 type: 'object', 14345 description: 'Revert take down action on a subject', 14346 properties: { 14347 comment: { 14348 type: 'string', 14349 description: 'Describe reasoning behind the reversal.', 14350 }, 14351 }, 14352 }, 14353 modEventResolveAppeal: { 14354 type: 'object', 14355 description: 'Resolve appeal on a subject', 14356 properties: { 14357 comment: { 14358 type: 'string', 14359 description: 'Describe resolution.', 14360 }, 14361 }, 14362 }, 14363 modEventComment: { 14364 type: 'object', 14365 description: 14366 'Add a comment to a subject. An empty comment will clear any previously set sticky comment.', 14367 properties: { 14368 comment: { 14369 type: 'string', 14370 }, 14371 sticky: { 14372 type: 'boolean', 14373 description: 'Make the comment persistent on the subject', 14374 }, 14375 }, 14376 }, 14377 modEventReport: { 14378 type: 'object', 14379 description: 'Report a subject', 14380 required: ['reportType'], 14381 properties: { 14382 comment: { 14383 type: 'string', 14384 }, 14385 isReporterMuted: { 14386 type: 'boolean', 14387 description: 14388 "Set to true if the reporter was muted from reporting at the time of the event. These reports won't impact the reviewState of the subject.", 14389 }, 14390 reportType: { 14391 type: 'ref', 14392 ref: 'lex:com.atproto.moderation.defs#reasonType', 14393 }, 14394 }, 14395 }, 14396 modEventLabel: { 14397 type: 'object', 14398 description: 'Apply/Negate labels on a subject', 14399 required: ['createLabelVals', 'negateLabelVals'], 14400 properties: { 14401 comment: { 14402 type: 'string', 14403 }, 14404 createLabelVals: { 14405 type: 'array', 14406 items: { 14407 type: 'string', 14408 }, 14409 }, 14410 negateLabelVals: { 14411 type: 'array', 14412 items: { 14413 type: 'string', 14414 }, 14415 }, 14416 durationInHours: { 14417 type: 'integer', 14418 description: 14419 'Indicates how long the label will remain on the subject. Only applies on labels that are being added.', 14420 }, 14421 }, 14422 }, 14423 modEventPriorityScore: { 14424 type: 'object', 14425 description: 14426 'Set priority score of the subject. Higher score means higher priority.', 14427 required: ['score'], 14428 properties: { 14429 comment: { 14430 type: 'string', 14431 }, 14432 score: { 14433 type: 'integer', 14434 minimum: 0, 14435 maximum: 100, 14436 }, 14437 }, 14438 }, 14439 ageAssuranceEvent: { 14440 type: 'object', 14441 description: 14442 'Age assurance info coming directly from users. Only works on DID subjects.', 14443 required: ['createdAt', 'status', 'attemptId'], 14444 properties: { 14445 createdAt: { 14446 type: 'string', 14447 format: 'datetime', 14448 description: 'The date and time of this write operation.', 14449 }, 14450 status: { 14451 type: 'string', 14452 description: 'The status of the age assurance process.', 14453 knownValues: ['unknown', 'pending', 'assured'], 14454 }, 14455 attemptId: { 14456 type: 'string', 14457 description: 14458 'The unique identifier for this instance of the age assurance flow, in UUID format.', 14459 }, 14460 initIp: { 14461 type: 'string', 14462 description: 'The IP address used when initiating the AA flow.', 14463 }, 14464 initUa: { 14465 type: 'string', 14466 description: 'The user agent used when initiating the AA flow.', 14467 }, 14468 completeIp: { 14469 type: 'string', 14470 description: 'The IP address used when completing the AA flow.', 14471 }, 14472 completeUa: { 14473 type: 'string', 14474 description: 'The user agent used when completing the AA flow.', 14475 }, 14476 }, 14477 }, 14478 ageAssuranceOverrideEvent: { 14479 type: 'object', 14480 description: 14481 'Age assurance status override by moderators. Only works on DID subjects.', 14482 required: ['comment', 'status'], 14483 properties: { 14484 status: { 14485 type: 'string', 14486 description: 14487 'The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state.', 14488 knownValues: ['assured', 'reset', 'blocked'], 14489 }, 14490 comment: { 14491 type: 'string', 14492 description: 'Comment describing the reason for the override.', 14493 }, 14494 }, 14495 }, 14496 modEventAcknowledge: { 14497 type: 'object', 14498 properties: { 14499 comment: { 14500 type: 'string', 14501 }, 14502 acknowledgeAccountSubjects: { 14503 type: 'boolean', 14504 description: 14505 'If true, all other reports on content authored by this account will be resolved (acknowledged).', 14506 }, 14507 }, 14508 }, 14509 modEventEscalate: { 14510 type: 'object', 14511 properties: { 14512 comment: { 14513 type: 'string', 14514 }, 14515 }, 14516 }, 14517 modEventMute: { 14518 type: 'object', 14519 description: 'Mute incoming reports on a subject', 14520 required: ['durationInHours'], 14521 properties: { 14522 comment: { 14523 type: 'string', 14524 }, 14525 durationInHours: { 14526 type: 'integer', 14527 description: 'Indicates how long the subject should remain muted.', 14528 }, 14529 }, 14530 }, 14531 modEventUnmute: { 14532 type: 'object', 14533 description: 'Unmute action on a subject', 14534 properties: { 14535 comment: { 14536 type: 'string', 14537 description: 'Describe reasoning behind the reversal.', 14538 }, 14539 }, 14540 }, 14541 modEventMuteReporter: { 14542 type: 'object', 14543 description: 'Mute incoming reports from an account', 14544 properties: { 14545 comment: { 14546 type: 'string', 14547 }, 14548 durationInHours: { 14549 type: 'integer', 14550 description: 14551 'Indicates how long the account should remain muted. Falsy value here means a permanent mute.', 14552 }, 14553 }, 14554 }, 14555 modEventUnmuteReporter: { 14556 type: 'object', 14557 description: 'Unmute incoming reports from an account', 14558 properties: { 14559 comment: { 14560 type: 'string', 14561 description: 'Describe reasoning behind the reversal.', 14562 }, 14563 }, 14564 }, 14565 modEventEmail: { 14566 type: 'object', 14567 description: 'Keep a log of outgoing email to a user', 14568 required: ['subjectLine'], 14569 properties: { 14570 subjectLine: { 14571 type: 'string', 14572 description: 'The subject line of the email sent to the user.', 14573 }, 14574 content: { 14575 type: 'string', 14576 description: 'The content of the email sent to the user.', 14577 }, 14578 comment: { 14579 type: 'string', 14580 description: 'Additional comment about the outgoing comm.', 14581 }, 14582 }, 14583 }, 14584 modEventDivert: { 14585 type: 'object', 14586 description: 14587 "Divert a record's blobs to a 3rd party service for further scanning/tagging", 14588 properties: { 14589 comment: { 14590 type: 'string', 14591 }, 14592 }, 14593 }, 14594 modEventTag: { 14595 type: 'object', 14596 description: 'Add/Remove a tag on a subject', 14597 required: ['add', 'remove'], 14598 properties: { 14599 add: { 14600 type: 'array', 14601 items: { 14602 type: 'string', 14603 }, 14604 description: 14605 "Tags to be added to the subject. If already exists, won't be duplicated.", 14606 }, 14607 remove: { 14608 type: 'array', 14609 items: { 14610 type: 'string', 14611 }, 14612 description: 14613 "Tags to be removed to the subject. Ignores a tag If it doesn't exist, won't be duplicated.", 14614 }, 14615 comment: { 14616 type: 'string', 14617 description: 'Additional comment about added/removed tags.', 14618 }, 14619 }, 14620 }, 14621 accountEvent: { 14622 type: 'object', 14623 description: 14624 'Logs account status related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.', 14625 required: ['timestamp', 'active'], 14626 properties: { 14627 comment: { 14628 type: 'string', 14629 }, 14630 active: { 14631 type: 'boolean', 14632 description: 14633 'Indicates that the account has a repository which can be fetched from the host that emitted this event.', 14634 }, 14635 status: { 14636 type: 'string', 14637 knownValues: [ 14638 'unknown', 14639 'deactivated', 14640 'deleted', 14641 'takendown', 14642 'suspended', 14643 'tombstoned', 14644 ], 14645 }, 14646 timestamp: { 14647 type: 'string', 14648 format: 'datetime', 14649 }, 14650 }, 14651 }, 14652 identityEvent: { 14653 type: 'object', 14654 description: 14655 'Logs identity related events on a repo subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.', 14656 required: ['timestamp'], 14657 properties: { 14658 comment: { 14659 type: 'string', 14660 }, 14661 handle: { 14662 type: 'string', 14663 format: 'handle', 14664 }, 14665 pdsHost: { 14666 type: 'string', 14667 format: 'uri', 14668 }, 14669 tombstone: { 14670 type: 'boolean', 14671 }, 14672 timestamp: { 14673 type: 'string', 14674 format: 'datetime', 14675 }, 14676 }, 14677 }, 14678 recordEvent: { 14679 type: 'object', 14680 description: 14681 'Logs lifecycle event on a record subject. Normally captured by automod from the firehose and emitted to ozone for historical tracking.', 14682 required: ['timestamp', 'op'], 14683 properties: { 14684 comment: { 14685 type: 'string', 14686 }, 14687 op: { 14688 type: 'string', 14689 knownValues: ['create', 'update', 'delete'], 14690 }, 14691 cid: { 14692 type: 'string', 14693 format: 'cid', 14694 }, 14695 timestamp: { 14696 type: 'string', 14697 format: 'datetime', 14698 }, 14699 }, 14700 }, 14701 repoView: { 14702 type: 'object', 14703 required: [ 14704 'did', 14705 'handle', 14706 'relatedRecords', 14707 'indexedAt', 14708 'moderation', 14709 ], 14710 properties: { 14711 did: { 14712 type: 'string', 14713 format: 'did', 14714 }, 14715 handle: { 14716 type: 'string', 14717 format: 'handle', 14718 }, 14719 email: { 14720 type: 'string', 14721 }, 14722 relatedRecords: { 14723 type: 'array', 14724 items: { 14725 type: 'unknown', 14726 }, 14727 }, 14728 indexedAt: { 14729 type: 'string', 14730 format: 'datetime', 14731 }, 14732 moderation: { 14733 type: 'ref', 14734 ref: 'lex:tools.ozone.moderation.defs#moderation', 14735 }, 14736 invitedBy: { 14737 type: 'ref', 14738 ref: 'lex:com.atproto.server.defs#inviteCode', 14739 }, 14740 invitesDisabled: { 14741 type: 'boolean', 14742 }, 14743 inviteNote: { 14744 type: 'string', 14745 }, 14746 deactivatedAt: { 14747 type: 'string', 14748 format: 'datetime', 14749 }, 14750 threatSignatures: { 14751 type: 'array', 14752 items: { 14753 type: 'ref', 14754 ref: 'lex:com.atproto.admin.defs#threatSignature', 14755 }, 14756 }, 14757 }, 14758 }, 14759 repoViewDetail: { 14760 type: 'object', 14761 required: [ 14762 'did', 14763 'handle', 14764 'relatedRecords', 14765 'indexedAt', 14766 'moderation', 14767 ], 14768 properties: { 14769 did: { 14770 type: 'string', 14771 format: 'did', 14772 }, 14773 handle: { 14774 type: 'string', 14775 format: 'handle', 14776 }, 14777 email: { 14778 type: 'string', 14779 }, 14780 relatedRecords: { 14781 type: 'array', 14782 items: { 14783 type: 'unknown', 14784 }, 14785 }, 14786 indexedAt: { 14787 type: 'string', 14788 format: 'datetime', 14789 }, 14790 moderation: { 14791 type: 'ref', 14792 ref: 'lex:tools.ozone.moderation.defs#moderationDetail', 14793 }, 14794 labels: { 14795 type: 'array', 14796 items: { 14797 type: 'ref', 14798 ref: 'lex:com.atproto.label.defs#label', 14799 }, 14800 }, 14801 invitedBy: { 14802 type: 'ref', 14803 ref: 'lex:com.atproto.server.defs#inviteCode', 14804 }, 14805 invites: { 14806 type: 'array', 14807 items: { 14808 type: 'ref', 14809 ref: 'lex:com.atproto.server.defs#inviteCode', 14810 }, 14811 }, 14812 invitesDisabled: { 14813 type: 'boolean', 14814 }, 14815 inviteNote: { 14816 type: 'string', 14817 }, 14818 emailConfirmedAt: { 14819 type: 'string', 14820 format: 'datetime', 14821 }, 14822 deactivatedAt: { 14823 type: 'string', 14824 format: 'datetime', 14825 }, 14826 threatSignatures: { 14827 type: 'array', 14828 items: { 14829 type: 'ref', 14830 ref: 'lex:com.atproto.admin.defs#threatSignature', 14831 }, 14832 }, 14833 }, 14834 }, 14835 repoViewNotFound: { 14836 type: 'object', 14837 required: ['did'], 14838 properties: { 14839 did: { 14840 type: 'string', 14841 format: 'did', 14842 }, 14843 }, 14844 }, 14845 recordView: { 14846 type: 'object', 14847 required: [ 14848 'uri', 14849 'cid', 14850 'value', 14851 'blobCids', 14852 'indexedAt', 14853 'moderation', 14854 'repo', 14855 ], 14856 properties: { 14857 uri: { 14858 type: 'string', 14859 format: 'at-uri', 14860 }, 14861 cid: { 14862 type: 'string', 14863 format: 'cid', 14864 }, 14865 value: { 14866 type: 'unknown', 14867 }, 14868 blobCids: { 14869 type: 'array', 14870 items: { 14871 type: 'string', 14872 format: 'cid', 14873 }, 14874 }, 14875 indexedAt: { 14876 type: 'string', 14877 format: 'datetime', 14878 }, 14879 moderation: { 14880 type: 'ref', 14881 ref: 'lex:tools.ozone.moderation.defs#moderation', 14882 }, 14883 repo: { 14884 type: 'ref', 14885 ref: 'lex:tools.ozone.moderation.defs#repoView', 14886 }, 14887 }, 14888 }, 14889 recordViewDetail: { 14890 type: 'object', 14891 required: [ 14892 'uri', 14893 'cid', 14894 'value', 14895 'blobs', 14896 'indexedAt', 14897 'moderation', 14898 'repo', 14899 ], 14900 properties: { 14901 uri: { 14902 type: 'string', 14903 format: 'at-uri', 14904 }, 14905 cid: { 14906 type: 'string', 14907 format: 'cid', 14908 }, 14909 value: { 14910 type: 'unknown', 14911 }, 14912 blobs: { 14913 type: 'array', 14914 items: { 14915 type: 'ref', 14916 ref: 'lex:tools.ozone.moderation.defs#blobView', 14917 }, 14918 }, 14919 labels: { 14920 type: 'array', 14921 items: { 14922 type: 'ref', 14923 ref: 'lex:com.atproto.label.defs#label', 14924 }, 14925 }, 14926 indexedAt: { 14927 type: 'string', 14928 format: 'datetime', 14929 }, 14930 moderation: { 14931 type: 'ref', 14932 ref: 'lex:tools.ozone.moderation.defs#moderationDetail', 14933 }, 14934 repo: { 14935 type: 'ref', 14936 ref: 'lex:tools.ozone.moderation.defs#repoView', 14937 }, 14938 }, 14939 }, 14940 recordViewNotFound: { 14941 type: 'object', 14942 required: ['uri'], 14943 properties: { 14944 uri: { 14945 type: 'string', 14946 format: 'at-uri', 14947 }, 14948 }, 14949 }, 14950 moderation: { 14951 type: 'object', 14952 properties: { 14953 subjectStatus: { 14954 type: 'ref', 14955 ref: 'lex:tools.ozone.moderation.defs#subjectStatusView', 14956 }, 14957 }, 14958 }, 14959 moderationDetail: { 14960 type: 'object', 14961 properties: { 14962 subjectStatus: { 14963 type: 'ref', 14964 ref: 'lex:tools.ozone.moderation.defs#subjectStatusView', 14965 }, 14966 }, 14967 }, 14968 blobView: { 14969 type: 'object', 14970 required: ['cid', 'mimeType', 'size', 'createdAt'], 14971 properties: { 14972 cid: { 14973 type: 'string', 14974 format: 'cid', 14975 }, 14976 mimeType: { 14977 type: 'string', 14978 }, 14979 size: { 14980 type: 'integer', 14981 }, 14982 createdAt: { 14983 type: 'string', 14984 format: 'datetime', 14985 }, 14986 details: { 14987 type: 'union', 14988 refs: [ 14989 'lex:tools.ozone.moderation.defs#imageDetails', 14990 'lex:tools.ozone.moderation.defs#videoDetails', 14991 ], 14992 }, 14993 moderation: { 14994 type: 'ref', 14995 ref: 'lex:tools.ozone.moderation.defs#moderation', 14996 }, 14997 }, 14998 }, 14999 imageDetails: { 15000 type: 'object', 15001 required: ['width', 'height'], 15002 properties: { 15003 width: { 15004 type: 'integer', 15005 }, 15006 height: { 15007 type: 'integer', 15008 }, 15009 }, 15010 }, 15011 videoDetails: { 15012 type: 'object', 15013 required: ['width', 'height', 'length'], 15014 properties: { 15015 width: { 15016 type: 'integer', 15017 }, 15018 height: { 15019 type: 'integer', 15020 }, 15021 length: { 15022 type: 'integer', 15023 }, 15024 }, 15025 }, 15026 accountHosting: { 15027 type: 'object', 15028 required: ['status'], 15029 properties: { 15030 status: { 15031 type: 'string', 15032 knownValues: [ 15033 'takendown', 15034 'suspended', 15035 'deleted', 15036 'deactivated', 15037 'unknown', 15038 ], 15039 }, 15040 updatedAt: { 15041 type: 'string', 15042 format: 'datetime', 15043 }, 15044 createdAt: { 15045 type: 'string', 15046 format: 'datetime', 15047 }, 15048 deletedAt: { 15049 type: 'string', 15050 format: 'datetime', 15051 }, 15052 deactivatedAt: { 15053 type: 'string', 15054 format: 'datetime', 15055 }, 15056 reactivatedAt: { 15057 type: 'string', 15058 format: 'datetime', 15059 }, 15060 }, 15061 }, 15062 recordHosting: { 15063 type: 'object', 15064 required: ['status'], 15065 properties: { 15066 status: { 15067 type: 'string', 15068 knownValues: ['deleted', 'unknown'], 15069 }, 15070 updatedAt: { 15071 type: 'string', 15072 format: 'datetime', 15073 }, 15074 createdAt: { 15075 type: 'string', 15076 format: 'datetime', 15077 }, 15078 deletedAt: { 15079 type: 'string', 15080 format: 'datetime', 15081 }, 15082 }, 15083 }, 15084 reporterStats: { 15085 type: 'object', 15086 required: [ 15087 'did', 15088 'accountReportCount', 15089 'recordReportCount', 15090 'reportedAccountCount', 15091 'reportedRecordCount', 15092 'takendownAccountCount', 15093 'takendownRecordCount', 15094 'labeledAccountCount', 15095 'labeledRecordCount', 15096 ], 15097 properties: { 15098 did: { 15099 type: 'string', 15100 format: 'did', 15101 }, 15102 accountReportCount: { 15103 type: 'integer', 15104 description: 15105 'The total number of reports made by the user on accounts.', 15106 }, 15107 recordReportCount: { 15108 type: 'integer', 15109 description: 15110 'The total number of reports made by the user on records.', 15111 }, 15112 reportedAccountCount: { 15113 type: 'integer', 15114 description: 'The total number of accounts reported by the user.', 15115 }, 15116 reportedRecordCount: { 15117 type: 'integer', 15118 description: 'The total number of records reported by the user.', 15119 }, 15120 takendownAccountCount: { 15121 type: 'integer', 15122 description: 15123 "The total number of accounts taken down as a result of the user's reports.", 15124 }, 15125 takendownRecordCount: { 15126 type: 'integer', 15127 description: 15128 "The total number of records taken down as a result of the user's reports.", 15129 }, 15130 labeledAccountCount: { 15131 type: 'integer', 15132 description: 15133 "The total number of accounts labeled as a result of the user's reports.", 15134 }, 15135 labeledRecordCount: { 15136 type: 'integer', 15137 description: 15138 "The total number of records labeled as a result of the user's reports.", 15139 }, 15140 }, 15141 }, 15142 modTool: { 15143 type: 'object', 15144 description: 15145 'Moderation tool information for tracing the source of the action', 15146 required: ['name'], 15147 properties: { 15148 name: { 15149 type: 'string', 15150 description: 15151 "Name/identifier of the source (e.g., 'automod', 'ozone/workspace')", 15152 }, 15153 meta: { 15154 type: 'unknown', 15155 description: 'Additional arbitrary metadata about the source', 15156 }, 15157 }, 15158 }, 15159 timelineEventPlcCreate: { 15160 type: 'token', 15161 description: 15162 'Moderation event timeline event for a PLC create operation', 15163 }, 15164 timelineEventPlcOperation: { 15165 type: 'token', 15166 description: 15167 'Moderation event timeline event for generic PLC operation', 15168 }, 15169 timelineEventPlcTombstone: { 15170 type: 'token', 15171 description: 15172 'Moderation event timeline event for a PLC tombstone operation', 15173 }, 15174 }, 15175 }, 15176 ToolsOzoneModerationEmitEvent: { 15177 lexicon: 1, 15178 id: 'tools.ozone.moderation.emitEvent', 15179 defs: { 15180 main: { 15181 type: 'procedure', 15182 description: 'Take a moderation action on an actor.', 15183 input: { 15184 encoding: 'application/json', 15185 schema: { 15186 type: 'object', 15187 required: ['event', 'subject', 'createdBy'], 15188 properties: { 15189 event: { 15190 type: 'union', 15191 refs: [ 15192 'lex:tools.ozone.moderation.defs#modEventTakedown', 15193 'lex:tools.ozone.moderation.defs#modEventAcknowledge', 15194 'lex:tools.ozone.moderation.defs#modEventEscalate', 15195 'lex:tools.ozone.moderation.defs#modEventComment', 15196 'lex:tools.ozone.moderation.defs#modEventLabel', 15197 'lex:tools.ozone.moderation.defs#modEventReport', 15198 'lex:tools.ozone.moderation.defs#modEventMute', 15199 'lex:tools.ozone.moderation.defs#modEventUnmute', 15200 'lex:tools.ozone.moderation.defs#modEventMuteReporter', 15201 'lex:tools.ozone.moderation.defs#modEventUnmuteReporter', 15202 'lex:tools.ozone.moderation.defs#modEventReverseTakedown', 15203 'lex:tools.ozone.moderation.defs#modEventResolveAppeal', 15204 'lex:tools.ozone.moderation.defs#modEventEmail', 15205 'lex:tools.ozone.moderation.defs#modEventDivert', 15206 'lex:tools.ozone.moderation.defs#modEventTag', 15207 'lex:tools.ozone.moderation.defs#accountEvent', 15208 'lex:tools.ozone.moderation.defs#identityEvent', 15209 'lex:tools.ozone.moderation.defs#recordEvent', 15210 'lex:tools.ozone.moderation.defs#modEventPriorityScore', 15211 'lex:tools.ozone.moderation.defs#ageAssuranceEvent', 15212 'lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent', 15213 ], 15214 }, 15215 subject: { 15216 type: 'union', 15217 refs: [ 15218 'lex:com.atproto.admin.defs#repoRef', 15219 'lex:com.atproto.repo.strongRef', 15220 ], 15221 }, 15222 subjectBlobCids: { 15223 type: 'array', 15224 items: { 15225 type: 'string', 15226 format: 'cid', 15227 }, 15228 }, 15229 createdBy: { 15230 type: 'string', 15231 format: 'did', 15232 }, 15233 modTool: { 15234 type: 'ref', 15235 ref: 'lex:tools.ozone.moderation.defs#modTool', 15236 }, 15237 externalId: { 15238 type: 'string', 15239 description: 15240 'An optional external ID for the event, used to deduplicate events from external systems. Fails when an event of same type with the same external ID exists for the same subject.', 15241 }, 15242 }, 15243 }, 15244 }, 15245 output: { 15246 encoding: 'application/json', 15247 schema: { 15248 type: 'ref', 15249 ref: 'lex:tools.ozone.moderation.defs#modEventView', 15250 }, 15251 }, 15252 errors: [ 15253 { 15254 name: 'SubjectHasAction', 15255 }, 15256 { 15257 name: 'DuplicateExternalId', 15258 description: 15259 'An event with the same external ID already exists for the subject.', 15260 }, 15261 ], 15262 }, 15263 }, 15264 }, 15265 ToolsOzoneModerationGetAccountTimeline: { 15266 lexicon: 1, 15267 id: 'tools.ozone.moderation.getAccountTimeline', 15268 defs: { 15269 main: { 15270 type: 'query', 15271 description: 15272 'Get timeline of all available events of an account. This includes moderation events, account history and did history.', 15273 parameters: { 15274 type: 'params', 15275 required: ['did'], 15276 properties: { 15277 did: { 15278 type: 'string', 15279 format: 'did', 15280 }, 15281 }, 15282 }, 15283 output: { 15284 encoding: 'application/json', 15285 schema: { 15286 type: 'object', 15287 required: ['timeline'], 15288 properties: { 15289 timeline: { 15290 type: 'array', 15291 items: { 15292 type: 'ref', 15293 ref: 'lex:tools.ozone.moderation.getAccountTimeline#timelineItem', 15294 }, 15295 }, 15296 }, 15297 }, 15298 }, 15299 errors: [ 15300 { 15301 name: 'RepoNotFound', 15302 }, 15303 ], 15304 }, 15305 timelineItem: { 15306 type: 'object', 15307 required: ['day', 'summary'], 15308 properties: { 15309 day: { 15310 type: 'string', 15311 }, 15312 summary: { 15313 type: 'array', 15314 items: { 15315 type: 'ref', 15316 ref: 'lex:tools.ozone.moderation.getAccountTimeline#timelineItemSummary', 15317 }, 15318 }, 15319 }, 15320 }, 15321 timelineItemSummary: { 15322 type: 'object', 15323 required: ['eventSubjectType', 'eventType', 'count'], 15324 properties: { 15325 eventSubjectType: { 15326 type: 'string', 15327 knownValues: ['account', 'record', 'chat'], 15328 }, 15329 eventType: { 15330 type: 'string', 15331 knownValues: [ 15332 'tools.ozone.moderation.defs#modEventTakedown', 15333 'tools.ozone.moderation.defs#modEventReverseTakedown', 15334 'tools.ozone.moderation.defs#modEventComment', 15335 'tools.ozone.moderation.defs#modEventReport', 15336 'tools.ozone.moderation.defs#modEventLabel', 15337 'tools.ozone.moderation.defs#modEventAcknowledge', 15338 'tools.ozone.moderation.defs#modEventEscalate', 15339 'tools.ozone.moderation.defs#modEventMute', 15340 'tools.ozone.moderation.defs#modEventUnmute', 15341 'tools.ozone.moderation.defs#modEventMuteReporter', 15342 'tools.ozone.moderation.defs#modEventUnmuteReporter', 15343 'tools.ozone.moderation.defs#modEventEmail', 15344 'tools.ozone.moderation.defs#modEventResolveAppeal', 15345 'tools.ozone.moderation.defs#modEventDivert', 15346 'tools.ozone.moderation.defs#modEventTag', 15347 'tools.ozone.moderation.defs#accountEvent', 15348 'tools.ozone.moderation.defs#identityEvent', 15349 'tools.ozone.moderation.defs#recordEvent', 15350 'tools.ozone.moderation.defs#modEventPriorityScore', 15351 'tools.ozone.moderation.defs#ageAssuranceEvent', 15352 'tools.ozone.moderation.defs#ageAssuranceOverrideEvent', 15353 'tools.ozone.moderation.defs#timelineEventPlcCreate', 15354 'tools.ozone.moderation.defs#timelineEventPlcOperation', 15355 'tools.ozone.moderation.defs#timelineEventPlcTombstone', 15356 'tools.ozone.hosting.getAccountHistory#accountCreated', 15357 'tools.ozone.hosting.getAccountHistory#emailConfirmed', 15358 'tools.ozone.hosting.getAccountHistory#passwordUpdated', 15359 'tools.ozone.hosting.getAccountHistory#handleUpdated', 15360 ], 15361 }, 15362 count: { 15363 type: 'integer', 15364 }, 15365 }, 15366 }, 15367 }, 15368 }, 15369 ToolsOzoneModerationGetEvent: { 15370 lexicon: 1, 15371 id: 'tools.ozone.moderation.getEvent', 15372 defs: { 15373 main: { 15374 type: 'query', 15375 description: 'Get details about a moderation event.', 15376 parameters: { 15377 type: 'params', 15378 required: ['id'], 15379 properties: { 15380 id: { 15381 type: 'integer', 15382 }, 15383 }, 15384 }, 15385 output: { 15386 encoding: 'application/json', 15387 schema: { 15388 type: 'ref', 15389 ref: 'lex:tools.ozone.moderation.defs#modEventViewDetail', 15390 }, 15391 }, 15392 }, 15393 }, 15394 }, 15395 ToolsOzoneModerationGetRecord: { 15396 lexicon: 1, 15397 id: 'tools.ozone.moderation.getRecord', 15398 defs: { 15399 main: { 15400 type: 'query', 15401 description: 'Get details about a record.', 15402 parameters: { 15403 type: 'params', 15404 required: ['uri'], 15405 properties: { 15406 uri: { 15407 type: 'string', 15408 format: 'at-uri', 15409 }, 15410 cid: { 15411 type: 'string', 15412 format: 'cid', 15413 }, 15414 }, 15415 }, 15416 output: { 15417 encoding: 'application/json', 15418 schema: { 15419 type: 'ref', 15420 ref: 'lex:tools.ozone.moderation.defs#recordViewDetail', 15421 }, 15422 }, 15423 errors: [ 15424 { 15425 name: 'RecordNotFound', 15426 }, 15427 ], 15428 }, 15429 }, 15430 }, 15431 ToolsOzoneModerationGetRecords: { 15432 lexicon: 1, 15433 id: 'tools.ozone.moderation.getRecords', 15434 defs: { 15435 main: { 15436 type: 'query', 15437 description: 'Get details about some records.', 15438 parameters: { 15439 type: 'params', 15440 required: ['uris'], 15441 properties: { 15442 uris: { 15443 type: 'array', 15444 maxLength: 100, 15445 items: { 15446 type: 'string', 15447 format: 'at-uri', 15448 }, 15449 }, 15450 }, 15451 }, 15452 output: { 15453 encoding: 'application/json', 15454 schema: { 15455 type: 'object', 15456 required: ['records'], 15457 properties: { 15458 records: { 15459 type: 'array', 15460 items: { 15461 type: 'union', 15462 refs: [ 15463 'lex:tools.ozone.moderation.defs#recordViewDetail', 15464 'lex:tools.ozone.moderation.defs#recordViewNotFound', 15465 ], 15466 }, 15467 }, 15468 }, 15469 }, 15470 }, 15471 }, 15472 }, 15473 }, 15474 ToolsOzoneModerationGetRepo: { 15475 lexicon: 1, 15476 id: 'tools.ozone.moderation.getRepo', 15477 defs: { 15478 main: { 15479 type: 'query', 15480 description: 'Get details about a repository.', 15481 parameters: { 15482 type: 'params', 15483 required: ['did'], 15484 properties: { 15485 did: { 15486 type: 'string', 15487 format: 'did', 15488 }, 15489 }, 15490 }, 15491 output: { 15492 encoding: 'application/json', 15493 schema: { 15494 type: 'ref', 15495 ref: 'lex:tools.ozone.moderation.defs#repoViewDetail', 15496 }, 15497 }, 15498 errors: [ 15499 { 15500 name: 'RepoNotFound', 15501 }, 15502 ], 15503 }, 15504 }, 15505 }, 15506 ToolsOzoneModerationGetReporterStats: { 15507 lexicon: 1, 15508 id: 'tools.ozone.moderation.getReporterStats', 15509 defs: { 15510 main: { 15511 type: 'query', 15512 description: 'Get reporter stats for a list of users.', 15513 parameters: { 15514 type: 'params', 15515 required: ['dids'], 15516 properties: { 15517 dids: { 15518 type: 'array', 15519 maxLength: 100, 15520 items: { 15521 type: 'string', 15522 format: 'did', 15523 }, 15524 }, 15525 }, 15526 }, 15527 output: { 15528 encoding: 'application/json', 15529 schema: { 15530 type: 'object', 15531 required: ['stats'], 15532 properties: { 15533 stats: { 15534 type: 'array', 15535 items: { 15536 type: 'ref', 15537 ref: 'lex:tools.ozone.moderation.defs#reporterStats', 15538 }, 15539 }, 15540 }, 15541 }, 15542 }, 15543 }, 15544 }, 15545 }, 15546 ToolsOzoneModerationGetRepos: { 15547 lexicon: 1, 15548 id: 'tools.ozone.moderation.getRepos', 15549 defs: { 15550 main: { 15551 type: 'query', 15552 description: 'Get details about some repositories.', 15553 parameters: { 15554 type: 'params', 15555 required: ['dids'], 15556 properties: { 15557 dids: { 15558 type: 'array', 15559 maxLength: 100, 15560 items: { 15561 type: 'string', 15562 format: 'did', 15563 }, 15564 }, 15565 }, 15566 }, 15567 output: { 15568 encoding: 'application/json', 15569 schema: { 15570 type: 'object', 15571 required: ['repos'], 15572 properties: { 15573 repos: { 15574 type: 'array', 15575 items: { 15576 type: 'union', 15577 refs: [ 15578 'lex:tools.ozone.moderation.defs#repoViewDetail', 15579 'lex:tools.ozone.moderation.defs#repoViewNotFound', 15580 ], 15581 }, 15582 }, 15583 }, 15584 }, 15585 }, 15586 }, 15587 }, 15588 }, 15589 ToolsOzoneModerationGetSubjects: { 15590 lexicon: 1, 15591 id: 'tools.ozone.moderation.getSubjects', 15592 defs: { 15593 main: { 15594 type: 'query', 15595 description: 'Get details about subjects.', 15596 parameters: { 15597 type: 'params', 15598 required: ['subjects'], 15599 properties: { 15600 subjects: { 15601 type: 'array', 15602 maxLength: 100, 15603 minLength: 1, 15604 items: { 15605 type: 'string', 15606 }, 15607 }, 15608 }, 15609 }, 15610 output: { 15611 encoding: 'application/json', 15612 schema: { 15613 type: 'object', 15614 required: ['subjects'], 15615 properties: { 15616 subjects: { 15617 type: 'array', 15618 items: { 15619 type: 'ref', 15620 ref: 'lex:tools.ozone.moderation.defs#subjectView', 15621 }, 15622 }, 15623 }, 15624 }, 15625 }, 15626 }, 15627 }, 15628 }, 15629 ToolsOzoneModerationQueryEvents: { 15630 lexicon: 1, 15631 id: 'tools.ozone.moderation.queryEvents', 15632 defs: { 15633 main: { 15634 type: 'query', 15635 description: 'List moderation events related to a subject.', 15636 parameters: { 15637 type: 'params', 15638 properties: { 15639 types: { 15640 type: 'array', 15641 items: { 15642 type: 'string', 15643 }, 15644 description: 15645 'The types of events (fully qualified string in the format of tools.ozone.moderation.defs#modEvent<name>) to filter by. If not specified, all events are returned.', 15646 }, 15647 createdBy: { 15648 type: 'string', 15649 format: 'did', 15650 }, 15651 sortDirection: { 15652 type: 'string', 15653 default: 'desc', 15654 enum: ['asc', 'desc'], 15655 description: 15656 'Sort direction for the events. Defaults to descending order of created at timestamp.', 15657 }, 15658 createdAfter: { 15659 type: 'string', 15660 format: 'datetime', 15661 description: 'Retrieve events created after a given timestamp', 15662 }, 15663 createdBefore: { 15664 type: 'string', 15665 format: 'datetime', 15666 description: 'Retrieve events created before a given timestamp', 15667 }, 15668 subject: { 15669 type: 'string', 15670 format: 'uri', 15671 }, 15672 collections: { 15673 type: 'array', 15674 maxLength: 20, 15675 description: 15676 "If specified, only events where the subject belongs to the given collections will be returned. When subjectType is set to 'account', this will be ignored.", 15677 items: { 15678 type: 'string', 15679 format: 'nsid', 15680 }, 15681 }, 15682 subjectType: { 15683 type: 'string', 15684 description: 15685 "If specified, only events where the subject is of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.", 15686 knownValues: ['account', 'record'], 15687 }, 15688 includeAllUserRecords: { 15689 type: 'boolean', 15690 default: false, 15691 description: 15692 "If true, events on all record types (posts, lists, profile etc.) or records from given 'collections' param, owned by the did are returned.", 15693 }, 15694 limit: { 15695 type: 'integer', 15696 minimum: 1, 15697 maximum: 100, 15698 default: 50, 15699 }, 15700 hasComment: { 15701 type: 'boolean', 15702 description: 'If true, only events with comments are returned', 15703 }, 15704 comment: { 15705 type: 'string', 15706 description: 15707 'If specified, only events with comments containing the keyword are returned. Apply || separator to use multiple keywords and match using OR condition.', 15708 }, 15709 addedLabels: { 15710 type: 'array', 15711 items: { 15712 type: 'string', 15713 }, 15714 description: 15715 'If specified, only events where all of these labels were added are returned', 15716 }, 15717 removedLabels: { 15718 type: 'array', 15719 items: { 15720 type: 'string', 15721 }, 15722 description: 15723 'If specified, only events where all of these labels were removed are returned', 15724 }, 15725 addedTags: { 15726 type: 'array', 15727 items: { 15728 type: 'string', 15729 }, 15730 description: 15731 'If specified, only events where all of these tags were added are returned', 15732 }, 15733 removedTags: { 15734 type: 'array', 15735 items: { 15736 type: 'string', 15737 }, 15738 description: 15739 'If specified, only events where all of these tags were removed are returned', 15740 }, 15741 reportTypes: { 15742 type: 'array', 15743 items: { 15744 type: 'string', 15745 }, 15746 }, 15747 policies: { 15748 type: 'array', 15749 items: { 15750 type: 'string', 15751 description: 15752 'If specified, only events where the action policies match any of the given policies are returned', 15753 }, 15754 }, 15755 modTool: { 15756 type: 'array', 15757 items: { 15758 type: 'string', 15759 }, 15760 description: 15761 'If specified, only events where the modTool name matches any of the given values are returned', 15762 }, 15763 ageAssuranceState: { 15764 type: 'string', 15765 description: 15766 'If specified, only events where the age assurance state matches the given value are returned', 15767 knownValues: [ 15768 'pending', 15769 'assured', 15770 'unknown', 15771 'reset', 15772 'blocked', 15773 ], 15774 }, 15775 cursor: { 15776 type: 'string', 15777 }, 15778 }, 15779 }, 15780 output: { 15781 encoding: 'application/json', 15782 schema: { 15783 type: 'object', 15784 required: ['events'], 15785 properties: { 15786 cursor: { 15787 type: 'string', 15788 }, 15789 events: { 15790 type: 'array', 15791 items: { 15792 type: 'ref', 15793 ref: 'lex:tools.ozone.moderation.defs#modEventView', 15794 }, 15795 }, 15796 }, 15797 }, 15798 }, 15799 }, 15800 }, 15801 }, 15802 ToolsOzoneModerationQueryStatuses: { 15803 lexicon: 1, 15804 id: 'tools.ozone.moderation.queryStatuses', 15805 defs: { 15806 main: { 15807 type: 'query', 15808 description: 'View moderation statuses of subjects (record or repo).', 15809 parameters: { 15810 type: 'params', 15811 properties: { 15812 queueCount: { 15813 type: 'integer', 15814 description: 15815 'Number of queues being used by moderators. Subjects will be split among all queues.', 15816 }, 15817 queueIndex: { 15818 type: 'integer', 15819 description: 15820 'Index of the queue to fetch subjects from. Works only when queueCount value is specified.', 15821 }, 15822 queueSeed: { 15823 type: 'string', 15824 description: 'A seeder to shuffle/balance the queue items.', 15825 }, 15826 includeAllUserRecords: { 15827 type: 'boolean', 15828 description: 15829 "All subjects, or subjects from given 'collections' param, belonging to the account specified in the 'subject' param will be returned.", 15830 }, 15831 subject: { 15832 type: 'string', 15833 format: 'uri', 15834 description: 'The subject to get the status for.', 15835 }, 15836 comment: { 15837 type: 'string', 15838 description: 'Search subjects by keyword from comments', 15839 }, 15840 reportedAfter: { 15841 type: 'string', 15842 format: 'datetime', 15843 description: 'Search subjects reported after a given timestamp', 15844 }, 15845 reportedBefore: { 15846 type: 'string', 15847 format: 'datetime', 15848 description: 'Search subjects reported before a given timestamp', 15849 }, 15850 reviewedAfter: { 15851 type: 'string', 15852 format: 'datetime', 15853 description: 'Search subjects reviewed after a given timestamp', 15854 }, 15855 hostingDeletedAfter: { 15856 type: 'string', 15857 format: 'datetime', 15858 description: 15859 'Search subjects where the associated record/account was deleted after a given timestamp', 15860 }, 15861 hostingDeletedBefore: { 15862 type: 'string', 15863 format: 'datetime', 15864 description: 15865 'Search subjects where the associated record/account was deleted before a given timestamp', 15866 }, 15867 hostingUpdatedAfter: { 15868 type: 'string', 15869 format: 'datetime', 15870 description: 15871 'Search subjects where the associated record/account was updated after a given timestamp', 15872 }, 15873 hostingUpdatedBefore: { 15874 type: 'string', 15875 format: 'datetime', 15876 description: 15877 'Search subjects where the associated record/account was updated before a given timestamp', 15878 }, 15879 hostingStatuses: { 15880 type: 'array', 15881 items: { 15882 type: 'string', 15883 }, 15884 description: 15885 'Search subjects by the status of the associated record/account', 15886 }, 15887 reviewedBefore: { 15888 type: 'string', 15889 format: 'datetime', 15890 description: 'Search subjects reviewed before a given timestamp', 15891 }, 15892 includeMuted: { 15893 type: 'boolean', 15894 description: 15895 "By default, we don't include muted subjects in the results. Set this to true to include them.", 15896 }, 15897 onlyMuted: { 15898 type: 'boolean', 15899 description: 15900 'When set to true, only muted subjects and reporters will be returned.', 15901 }, 15902 reviewState: { 15903 type: 'string', 15904 description: 'Specify when fetching subjects in a certain state', 15905 }, 15906 ignoreSubjects: { 15907 type: 'array', 15908 items: { 15909 type: 'string', 15910 format: 'uri', 15911 }, 15912 }, 15913 lastReviewedBy: { 15914 type: 'string', 15915 format: 'did', 15916 description: 15917 'Get all subject statuses that were reviewed by a specific moderator', 15918 }, 15919 sortField: { 15920 type: 'string', 15921 default: 'lastReportedAt', 15922 enum: [ 15923 'lastReviewedAt', 15924 'lastReportedAt', 15925 'reportedRecordsCount', 15926 'takendownRecordsCount', 15927 'priorityScore', 15928 ], 15929 }, 15930 sortDirection: { 15931 type: 'string', 15932 default: 'desc', 15933 enum: ['asc', 'desc'], 15934 }, 15935 takendown: { 15936 type: 'boolean', 15937 description: 'Get subjects that were taken down', 15938 }, 15939 appealed: { 15940 type: 'boolean', 15941 description: 'Get subjects in unresolved appealed status', 15942 }, 15943 limit: { 15944 type: 'integer', 15945 minimum: 1, 15946 maximum: 100, 15947 default: 50, 15948 }, 15949 tags: { 15950 type: 'array', 15951 maxLength: 25, 15952 items: { 15953 type: 'string', 15954 description: 15955 'Items in this array are applied with OR filters. To apply AND filter, put all tags in the same string and separate using && characters', 15956 }, 15957 }, 15958 excludeTags: { 15959 type: 'array', 15960 items: { 15961 type: 'string', 15962 }, 15963 }, 15964 cursor: { 15965 type: 'string', 15966 }, 15967 collections: { 15968 type: 'array', 15969 maxLength: 20, 15970 description: 15971 "If specified, subjects belonging to the given collections will be returned. When subjectType is set to 'account', this will be ignored.", 15972 items: { 15973 type: 'string', 15974 format: 'nsid', 15975 }, 15976 }, 15977 subjectType: { 15978 type: 'string', 15979 description: 15980 "If specified, subjects of the given type (account or record) will be returned. When this is set to 'account' the 'collections' parameter will be ignored. When includeAllUserRecords or subject is set, this will be ignored.", 15981 knownValues: ['account', 'record'], 15982 }, 15983 minAccountSuspendCount: { 15984 type: 'integer', 15985 description: 15986 'If specified, only subjects that belong to an account that has at least this many suspensions will be returned.', 15987 }, 15988 minReportedRecordsCount: { 15989 type: 'integer', 15990 description: 15991 'If specified, only subjects that belong to an account that has at least this many reported records will be returned.', 15992 }, 15993 minTakendownRecordsCount: { 15994 type: 'integer', 15995 description: 15996 'If specified, only subjects that belong to an account that has at least this many taken down records will be returned.', 15997 }, 15998 minPriorityScore: { 15999 minimum: 0, 16000 maximum: 100, 16001 type: 'integer', 16002 description: 16003 'If specified, only subjects that have priority score value above the given value will be returned.', 16004 }, 16005 ageAssuranceState: { 16006 type: 'string', 16007 description: 16008 'If specified, only subjects with the given age assurance state will be returned.', 16009 knownValues: [ 16010 'pending', 16011 'assured', 16012 'unknown', 16013 'reset', 16014 'blocked', 16015 ], 16016 }, 16017 }, 16018 }, 16019 output: { 16020 encoding: 'application/json', 16021 schema: { 16022 type: 'object', 16023 required: ['subjectStatuses'], 16024 properties: { 16025 cursor: { 16026 type: 'string', 16027 }, 16028 subjectStatuses: { 16029 type: 'array', 16030 items: { 16031 type: 'ref', 16032 ref: 'lex:tools.ozone.moderation.defs#subjectStatusView', 16033 }, 16034 }, 16035 }, 16036 }, 16037 }, 16038 }, 16039 }, 16040 }, 16041 ToolsOzoneModerationSearchRepos: { 16042 lexicon: 1, 16043 id: 'tools.ozone.moderation.searchRepos', 16044 defs: { 16045 main: { 16046 type: 'query', 16047 description: 'Find repositories based on a search term.', 16048 parameters: { 16049 type: 'params', 16050 properties: { 16051 term: { 16052 type: 'string', 16053 description: "DEPRECATED: use 'q' instead", 16054 }, 16055 q: { 16056 type: 'string', 16057 }, 16058 limit: { 16059 type: 'integer', 16060 minimum: 1, 16061 maximum: 100, 16062 default: 50, 16063 }, 16064 cursor: { 16065 type: 'string', 16066 }, 16067 }, 16068 }, 16069 output: { 16070 encoding: 'application/json', 16071 schema: { 16072 type: 'object', 16073 required: ['repos'], 16074 properties: { 16075 cursor: { 16076 type: 'string', 16077 }, 16078 repos: { 16079 type: 'array', 16080 items: { 16081 type: 'ref', 16082 ref: 'lex:tools.ozone.moderation.defs#repoView', 16083 }, 16084 }, 16085 }, 16086 }, 16087 }, 16088 }, 16089 }, 16090 }, 16091 ToolsOzoneSafelinkAddRule: { 16092 lexicon: 1, 16093 id: 'tools.ozone.safelink.addRule', 16094 defs: { 16095 main: { 16096 type: 'procedure', 16097 description: 'Add a new URL safety rule', 16098 input: { 16099 encoding: 'application/json', 16100 schema: { 16101 type: 'object', 16102 required: ['url', 'pattern', 'action', 'reason'], 16103 properties: { 16104 url: { 16105 type: 'string', 16106 description: 'The URL or domain to apply the rule to', 16107 }, 16108 pattern: { 16109 type: 'ref', 16110 ref: 'lex:tools.ozone.safelink.defs#patternType', 16111 }, 16112 action: { 16113 type: 'ref', 16114 ref: 'lex:tools.ozone.safelink.defs#actionType', 16115 }, 16116 reason: { 16117 type: 'ref', 16118 ref: 'lex:tools.ozone.safelink.defs#reasonType', 16119 }, 16120 comment: { 16121 type: 'string', 16122 description: 'Optional comment about the decision', 16123 }, 16124 createdBy: { 16125 type: 'string', 16126 format: 'did', 16127 description: 'Author DID. Only respected when using admin auth', 16128 }, 16129 }, 16130 }, 16131 }, 16132 output: { 16133 encoding: 'application/json', 16134 schema: { 16135 type: 'ref', 16136 ref: 'lex:tools.ozone.safelink.defs#event', 16137 }, 16138 }, 16139 errors: [ 16140 { 16141 name: 'InvalidUrl', 16142 description: 'The provided URL is invalid', 16143 }, 16144 { 16145 name: 'RuleAlreadyExists', 16146 description: 'A rule for this URL/domain already exists', 16147 }, 16148 ], 16149 }, 16150 }, 16151 }, 16152 ToolsOzoneSafelinkDefs: { 16153 lexicon: 1, 16154 id: 'tools.ozone.safelink.defs', 16155 defs: { 16156 event: { 16157 type: 'object', 16158 description: 'An event for URL safety decisions', 16159 required: [ 16160 'id', 16161 'eventType', 16162 'url', 16163 'pattern', 16164 'action', 16165 'reason', 16166 'createdBy', 16167 'createdAt', 16168 ], 16169 properties: { 16170 id: { 16171 type: 'integer', 16172 description: 'Auto-incrementing row ID', 16173 }, 16174 eventType: { 16175 type: 'ref', 16176 ref: 'lex:tools.ozone.safelink.defs#eventType', 16177 }, 16178 url: { 16179 type: 'string', 16180 description: 'The URL that this rule applies to', 16181 }, 16182 pattern: { 16183 type: 'ref', 16184 ref: 'lex:tools.ozone.safelink.defs#patternType', 16185 }, 16186 action: { 16187 type: 'ref', 16188 ref: 'lex:tools.ozone.safelink.defs#actionType', 16189 }, 16190 reason: { 16191 type: 'ref', 16192 ref: 'lex:tools.ozone.safelink.defs#reasonType', 16193 }, 16194 createdBy: { 16195 type: 'string', 16196 format: 'did', 16197 description: 'DID of the user who created this rule', 16198 }, 16199 createdAt: { 16200 type: 'string', 16201 format: 'datetime', 16202 }, 16203 comment: { 16204 type: 'string', 16205 description: 'Optional comment about the decision', 16206 }, 16207 }, 16208 }, 16209 eventType: { 16210 type: 'string', 16211 knownValues: ['addRule', 'updateRule', 'removeRule'], 16212 }, 16213 patternType: { 16214 type: 'string', 16215 knownValues: ['domain', 'url'], 16216 }, 16217 actionType: { 16218 type: 'string', 16219 knownValues: ['block', 'warn', 'whitelist'], 16220 }, 16221 reasonType: { 16222 type: 'string', 16223 knownValues: ['csam', 'spam', 'phishing', 'none'], 16224 }, 16225 urlRule: { 16226 type: 'object', 16227 description: 'Input for creating a URL safety rule', 16228 required: [ 16229 'url', 16230 'pattern', 16231 'action', 16232 'reason', 16233 'createdBy', 16234 'createdAt', 16235 'updatedAt', 16236 ], 16237 properties: { 16238 url: { 16239 type: 'string', 16240 description: 'The URL or domain to apply the rule to', 16241 }, 16242 pattern: { 16243 type: 'ref', 16244 ref: 'lex:tools.ozone.safelink.defs#patternType', 16245 }, 16246 action: { 16247 type: 'ref', 16248 ref: 'lex:tools.ozone.safelink.defs#actionType', 16249 }, 16250 reason: { 16251 type: 'ref', 16252 ref: 'lex:tools.ozone.safelink.defs#reasonType', 16253 }, 16254 comment: { 16255 type: 'string', 16256 description: 'Optional comment about the decision', 16257 }, 16258 createdBy: { 16259 type: 'string', 16260 format: 'did', 16261 description: 'DID of the user added the rule.', 16262 }, 16263 createdAt: { 16264 type: 'string', 16265 format: 'datetime', 16266 description: 'Timestamp when the rule was created', 16267 }, 16268 updatedAt: { 16269 type: 'string', 16270 format: 'datetime', 16271 description: 'Timestamp when the rule was last updated', 16272 }, 16273 }, 16274 }, 16275 }, 16276 }, 16277 ToolsOzoneSafelinkQueryEvents: { 16278 lexicon: 1, 16279 id: 'tools.ozone.safelink.queryEvents', 16280 defs: { 16281 main: { 16282 type: 'procedure', 16283 description: 'Query URL safety audit events', 16284 input: { 16285 encoding: 'application/json', 16286 schema: { 16287 type: 'object', 16288 properties: { 16289 cursor: { 16290 type: 'string', 16291 description: 'Cursor for pagination', 16292 }, 16293 limit: { 16294 type: 'integer', 16295 minimum: 1, 16296 maximum: 100, 16297 default: 50, 16298 description: 'Maximum number of results to return', 16299 }, 16300 urls: { 16301 type: 'array', 16302 items: { 16303 type: 'string', 16304 }, 16305 description: 'Filter by specific URLs or domains', 16306 }, 16307 patternType: { 16308 type: 'string', 16309 description: 'Filter by pattern type', 16310 }, 16311 sortDirection: { 16312 type: 'string', 16313 knownValues: ['asc', 'desc'], 16314 default: 'desc', 16315 description: 'Sort direction', 16316 }, 16317 }, 16318 }, 16319 }, 16320 output: { 16321 encoding: 'application/json', 16322 schema: { 16323 type: 'object', 16324 required: ['events'], 16325 properties: { 16326 cursor: { 16327 type: 'string', 16328 description: 16329 'Next cursor for pagination. Only present if there are more results.', 16330 }, 16331 events: { 16332 type: 'array', 16333 items: { 16334 type: 'ref', 16335 ref: 'lex:tools.ozone.safelink.defs#event', 16336 }, 16337 }, 16338 }, 16339 }, 16340 }, 16341 }, 16342 }, 16343 }, 16344 ToolsOzoneSafelinkQueryRules: { 16345 lexicon: 1, 16346 id: 'tools.ozone.safelink.queryRules', 16347 defs: { 16348 main: { 16349 type: 'procedure', 16350 description: 'Query URL safety rules', 16351 input: { 16352 encoding: 'application/json', 16353 schema: { 16354 type: 'object', 16355 properties: { 16356 cursor: { 16357 type: 'string', 16358 description: 'Cursor for pagination', 16359 }, 16360 limit: { 16361 type: 'integer', 16362 minimum: 1, 16363 maximum: 100, 16364 default: 50, 16365 description: 'Maximum number of results to return', 16366 }, 16367 urls: { 16368 type: 'array', 16369 items: { 16370 type: 'string', 16371 }, 16372 description: 'Filter by specific URLs or domains', 16373 }, 16374 patternType: { 16375 type: 'string', 16376 description: 'Filter by pattern type', 16377 }, 16378 actions: { 16379 type: 'array', 16380 items: { 16381 type: 'string', 16382 }, 16383 description: 'Filter by action types', 16384 }, 16385 reason: { 16386 type: 'string', 16387 description: 'Filter by reason type', 16388 }, 16389 createdBy: { 16390 type: 'string', 16391 format: 'did', 16392 description: 'Filter by rule creator', 16393 }, 16394 sortDirection: { 16395 type: 'string', 16396 knownValues: ['asc', 'desc'], 16397 default: 'desc', 16398 description: 'Sort direction', 16399 }, 16400 }, 16401 }, 16402 }, 16403 output: { 16404 encoding: 'application/json', 16405 schema: { 16406 type: 'object', 16407 required: ['rules'], 16408 properties: { 16409 cursor: { 16410 type: 'string', 16411 description: 16412 'Next cursor for pagination. Only present if there are more results.', 16413 }, 16414 rules: { 16415 type: 'array', 16416 items: { 16417 type: 'ref', 16418 ref: 'lex:tools.ozone.safelink.defs#urlRule', 16419 }, 16420 }, 16421 }, 16422 }, 16423 }, 16424 }, 16425 }, 16426 }, 16427 ToolsOzoneSafelinkRemoveRule: { 16428 lexicon: 1, 16429 id: 'tools.ozone.safelink.removeRule', 16430 defs: { 16431 main: { 16432 type: 'procedure', 16433 description: 'Remove an existing URL safety rule', 16434 input: { 16435 encoding: 'application/json', 16436 schema: { 16437 type: 'object', 16438 required: ['url', 'pattern'], 16439 properties: { 16440 url: { 16441 type: 'string', 16442 description: 'The URL or domain to remove the rule for', 16443 }, 16444 pattern: { 16445 type: 'ref', 16446 ref: 'lex:tools.ozone.safelink.defs#patternType', 16447 }, 16448 comment: { 16449 type: 'string', 16450 description: 16451 'Optional comment about why the rule is being removed', 16452 }, 16453 createdBy: { 16454 type: 'string', 16455 format: 'did', 16456 description: 16457 'Optional DID of the user. Only respected when using admin auth.', 16458 }, 16459 }, 16460 }, 16461 }, 16462 output: { 16463 encoding: 'application/json', 16464 schema: { 16465 type: 'ref', 16466 ref: 'lex:tools.ozone.safelink.defs#event', 16467 }, 16468 }, 16469 errors: [ 16470 { 16471 name: 'RuleNotFound', 16472 description: 'No active rule found for this URL/domain', 16473 }, 16474 ], 16475 }, 16476 }, 16477 }, 16478 ToolsOzoneSafelinkUpdateRule: { 16479 lexicon: 1, 16480 id: 'tools.ozone.safelink.updateRule', 16481 defs: { 16482 main: { 16483 type: 'procedure', 16484 description: 'Update an existing URL safety rule', 16485 input: { 16486 encoding: 'application/json', 16487 schema: { 16488 type: 'object', 16489 required: ['url', 'pattern', 'action', 'reason'], 16490 properties: { 16491 url: { 16492 type: 'string', 16493 description: 'The URL or domain to update the rule for', 16494 }, 16495 pattern: { 16496 type: 'ref', 16497 ref: 'lex:tools.ozone.safelink.defs#patternType', 16498 }, 16499 action: { 16500 type: 'ref', 16501 ref: 'lex:tools.ozone.safelink.defs#actionType', 16502 }, 16503 reason: { 16504 type: 'ref', 16505 ref: 'lex:tools.ozone.safelink.defs#reasonType', 16506 }, 16507 comment: { 16508 type: 'string', 16509 description: 'Optional comment about the update', 16510 }, 16511 createdBy: { 16512 type: 'string', 16513 format: 'did', 16514 description: 16515 'Optional DID to credit as the creator. Only respected for admin_token authentication.', 16516 }, 16517 }, 16518 }, 16519 }, 16520 output: { 16521 encoding: 'application/json', 16522 schema: { 16523 type: 'ref', 16524 ref: 'lex:tools.ozone.safelink.defs#event', 16525 }, 16526 }, 16527 errors: [ 16528 { 16529 name: 'RuleNotFound', 16530 description: 'No active rule found for this URL/domain', 16531 }, 16532 ], 16533 }, 16534 }, 16535 }, 16536 ToolsOzoneServerGetConfig: { 16537 lexicon: 1, 16538 id: 'tools.ozone.server.getConfig', 16539 defs: { 16540 main: { 16541 type: 'query', 16542 description: "Get details about ozone's server configuration.", 16543 output: { 16544 encoding: 'application/json', 16545 schema: { 16546 type: 'object', 16547 properties: { 16548 appview: { 16549 type: 'ref', 16550 ref: 'lex:tools.ozone.server.getConfig#serviceConfig', 16551 }, 16552 pds: { 16553 type: 'ref', 16554 ref: 'lex:tools.ozone.server.getConfig#serviceConfig', 16555 }, 16556 blobDivert: { 16557 type: 'ref', 16558 ref: 'lex:tools.ozone.server.getConfig#serviceConfig', 16559 }, 16560 chat: { 16561 type: 'ref', 16562 ref: 'lex:tools.ozone.server.getConfig#serviceConfig', 16563 }, 16564 viewer: { 16565 type: 'ref', 16566 ref: 'lex:tools.ozone.server.getConfig#viewerConfig', 16567 }, 16568 verifierDid: { 16569 type: 'string', 16570 format: 'did', 16571 description: 'The did of the verifier used for verification.', 16572 }, 16573 }, 16574 }, 16575 }, 16576 }, 16577 serviceConfig: { 16578 type: 'object', 16579 properties: { 16580 url: { 16581 type: 'string', 16582 format: 'uri', 16583 }, 16584 }, 16585 }, 16586 viewerConfig: { 16587 type: 'object', 16588 properties: { 16589 role: { 16590 type: 'string', 16591 knownValues: [ 16592 'tools.ozone.team.defs#roleAdmin', 16593 'tools.ozone.team.defs#roleModerator', 16594 'tools.ozone.team.defs#roleTriage', 16595 'tools.ozone.team.defs#roleVerifier', 16596 ], 16597 }, 16598 }, 16599 }, 16600 }, 16601 }, 16602 ToolsOzoneSetAddValues: { 16603 lexicon: 1, 16604 id: 'tools.ozone.set.addValues', 16605 defs: { 16606 main: { 16607 type: 'procedure', 16608 description: 16609 'Add values to a specific set. Attempting to add values to a set that does not exist will result in an error.', 16610 input: { 16611 encoding: 'application/json', 16612 schema: { 16613 type: 'object', 16614 required: ['name', 'values'], 16615 properties: { 16616 name: { 16617 type: 'string', 16618 description: 'Name of the set to add values to', 16619 }, 16620 values: { 16621 type: 'array', 16622 minLength: 1, 16623 maxLength: 1000, 16624 items: { 16625 type: 'string', 16626 }, 16627 description: 'Array of string values to add to the set', 16628 }, 16629 }, 16630 }, 16631 }, 16632 }, 16633 }, 16634 }, 16635 ToolsOzoneSetDefs: { 16636 lexicon: 1, 16637 id: 'tools.ozone.set.defs', 16638 defs: { 16639 set: { 16640 type: 'object', 16641 required: ['name'], 16642 properties: { 16643 name: { 16644 type: 'string', 16645 minLength: 3, 16646 maxLength: 128, 16647 }, 16648 description: { 16649 type: 'string', 16650 maxGraphemes: 1024, 16651 maxLength: 10240, 16652 }, 16653 }, 16654 }, 16655 setView: { 16656 type: 'object', 16657 required: ['name', 'setSize', 'createdAt', 'updatedAt'], 16658 properties: { 16659 name: { 16660 type: 'string', 16661 minLength: 3, 16662 maxLength: 128, 16663 }, 16664 description: { 16665 type: 'string', 16666 maxGraphemes: 1024, 16667 maxLength: 10240, 16668 }, 16669 setSize: { 16670 type: 'integer', 16671 }, 16672 createdAt: { 16673 type: 'string', 16674 format: 'datetime', 16675 }, 16676 updatedAt: { 16677 type: 'string', 16678 format: 'datetime', 16679 }, 16680 }, 16681 }, 16682 }, 16683 }, 16684 ToolsOzoneSetDeleteSet: { 16685 lexicon: 1, 16686 id: 'tools.ozone.set.deleteSet', 16687 defs: { 16688 main: { 16689 type: 'procedure', 16690 description: 16691 'Delete an entire set. Attempting to delete a set that does not exist will result in an error.', 16692 input: { 16693 encoding: 'application/json', 16694 schema: { 16695 type: 'object', 16696 required: ['name'], 16697 properties: { 16698 name: { 16699 type: 'string', 16700 description: 'Name of the set to delete', 16701 }, 16702 }, 16703 }, 16704 }, 16705 output: { 16706 encoding: 'application/json', 16707 schema: { 16708 type: 'object', 16709 properties: {}, 16710 }, 16711 }, 16712 errors: [ 16713 { 16714 name: 'SetNotFound', 16715 description: 'set with the given name does not exist', 16716 }, 16717 ], 16718 }, 16719 }, 16720 }, 16721 ToolsOzoneSetDeleteValues: { 16722 lexicon: 1, 16723 id: 'tools.ozone.set.deleteValues', 16724 defs: { 16725 main: { 16726 type: 'procedure', 16727 description: 16728 'Delete values from a specific set. Attempting to delete values that are not in the set will not result in an error', 16729 input: { 16730 encoding: 'application/json', 16731 schema: { 16732 type: 'object', 16733 required: ['name', 'values'], 16734 properties: { 16735 name: { 16736 type: 'string', 16737 description: 'Name of the set to delete values from', 16738 }, 16739 values: { 16740 type: 'array', 16741 minLength: 1, 16742 items: { 16743 type: 'string', 16744 }, 16745 description: 'Array of string values to delete from the set', 16746 }, 16747 }, 16748 }, 16749 }, 16750 errors: [ 16751 { 16752 name: 'SetNotFound', 16753 description: 'set with the given name does not exist', 16754 }, 16755 ], 16756 }, 16757 }, 16758 }, 16759 ToolsOzoneSetGetValues: { 16760 lexicon: 1, 16761 id: 'tools.ozone.set.getValues', 16762 defs: { 16763 main: { 16764 type: 'query', 16765 description: 'Get a specific set and its values', 16766 parameters: { 16767 type: 'params', 16768 required: ['name'], 16769 properties: { 16770 name: { 16771 type: 'string', 16772 }, 16773 limit: { 16774 type: 'integer', 16775 minimum: 1, 16776 maximum: 1000, 16777 default: 100, 16778 }, 16779 cursor: { 16780 type: 'string', 16781 }, 16782 }, 16783 }, 16784 output: { 16785 encoding: 'application/json', 16786 schema: { 16787 type: 'object', 16788 required: ['set', 'values'], 16789 properties: { 16790 set: { 16791 type: 'ref', 16792 ref: 'lex:tools.ozone.set.defs#setView', 16793 }, 16794 values: { 16795 type: 'array', 16796 items: { 16797 type: 'string', 16798 }, 16799 }, 16800 cursor: { 16801 type: 'string', 16802 }, 16803 }, 16804 }, 16805 }, 16806 errors: [ 16807 { 16808 name: 'SetNotFound', 16809 description: 'set with the given name does not exist', 16810 }, 16811 ], 16812 }, 16813 }, 16814 }, 16815 ToolsOzoneSetQuerySets: { 16816 lexicon: 1, 16817 id: 'tools.ozone.set.querySets', 16818 defs: { 16819 main: { 16820 type: 'query', 16821 description: 'Query available sets', 16822 parameters: { 16823 type: 'params', 16824 properties: { 16825 limit: { 16826 type: 'integer', 16827 minimum: 1, 16828 maximum: 100, 16829 default: 50, 16830 }, 16831 cursor: { 16832 type: 'string', 16833 }, 16834 namePrefix: { 16835 type: 'string', 16836 }, 16837 sortBy: { 16838 type: 'string', 16839 enum: ['name', 'createdAt', 'updatedAt'], 16840 default: 'name', 16841 }, 16842 sortDirection: { 16843 type: 'string', 16844 default: 'asc', 16845 enum: ['asc', 'desc'], 16846 description: 'Defaults to ascending order of name field.', 16847 }, 16848 }, 16849 }, 16850 output: { 16851 encoding: 'application/json', 16852 schema: { 16853 type: 'object', 16854 required: ['sets'], 16855 properties: { 16856 sets: { 16857 type: 'array', 16858 items: { 16859 type: 'ref', 16860 ref: 'lex:tools.ozone.set.defs#setView', 16861 }, 16862 }, 16863 cursor: { 16864 type: 'string', 16865 }, 16866 }, 16867 }, 16868 }, 16869 }, 16870 }, 16871 }, 16872 ToolsOzoneSetUpsertSet: { 16873 lexicon: 1, 16874 id: 'tools.ozone.set.upsertSet', 16875 defs: { 16876 main: { 16877 type: 'procedure', 16878 description: 'Create or update set metadata', 16879 input: { 16880 encoding: 'application/json', 16881 schema: { 16882 type: 'ref', 16883 ref: 'lex:tools.ozone.set.defs#set', 16884 }, 16885 }, 16886 output: { 16887 encoding: 'application/json', 16888 schema: { 16889 type: 'ref', 16890 ref: 'lex:tools.ozone.set.defs#setView', 16891 }, 16892 }, 16893 }, 16894 }, 16895 }, 16896 ToolsOzoneSettingDefs: { 16897 lexicon: 1, 16898 id: 'tools.ozone.setting.defs', 16899 defs: { 16900 option: { 16901 type: 'object', 16902 required: [ 16903 'key', 16904 'value', 16905 'did', 16906 'scope', 16907 'createdBy', 16908 'lastUpdatedBy', 16909 ], 16910 properties: { 16911 key: { 16912 type: 'string', 16913 format: 'nsid', 16914 }, 16915 did: { 16916 type: 'string', 16917 format: 'did', 16918 }, 16919 value: { 16920 type: 'unknown', 16921 }, 16922 description: { 16923 type: 'string', 16924 maxGraphemes: 1024, 16925 maxLength: 10240, 16926 }, 16927 createdAt: { 16928 type: 'string', 16929 format: 'datetime', 16930 }, 16931 updatedAt: { 16932 type: 'string', 16933 format: 'datetime', 16934 }, 16935 managerRole: { 16936 type: 'string', 16937 knownValues: [ 16938 'tools.ozone.team.defs#roleModerator', 16939 'tools.ozone.team.defs#roleTriage', 16940 'tools.ozone.team.defs#roleAdmin', 16941 'tools.ozone.team.defs#roleVerifier', 16942 ], 16943 }, 16944 scope: { 16945 type: 'string', 16946 knownValues: ['instance', 'personal'], 16947 }, 16948 createdBy: { 16949 type: 'string', 16950 format: 'did', 16951 }, 16952 lastUpdatedBy: { 16953 type: 'string', 16954 format: 'did', 16955 }, 16956 }, 16957 }, 16958 }, 16959 }, 16960 ToolsOzoneSettingListOptions: { 16961 lexicon: 1, 16962 id: 'tools.ozone.setting.listOptions', 16963 defs: { 16964 main: { 16965 type: 'query', 16966 description: 'List settings with optional filtering', 16967 parameters: { 16968 type: 'params', 16969 properties: { 16970 limit: { 16971 type: 'integer', 16972 minimum: 1, 16973 maximum: 100, 16974 default: 50, 16975 }, 16976 cursor: { 16977 type: 'string', 16978 }, 16979 scope: { 16980 type: 'string', 16981 knownValues: ['instance', 'personal'], 16982 default: 'instance', 16983 }, 16984 prefix: { 16985 type: 'string', 16986 description: 'Filter keys by prefix', 16987 }, 16988 keys: { 16989 type: 'array', 16990 maxLength: 100, 16991 items: { 16992 type: 'string', 16993 format: 'nsid', 16994 }, 16995 description: 16996 'Filter for only the specified keys. Ignored if prefix is provided', 16997 }, 16998 }, 16999 }, 17000 output: { 17001 encoding: 'application/json', 17002 schema: { 17003 type: 'object', 17004 required: ['options'], 17005 properties: { 17006 cursor: { 17007 type: 'string', 17008 }, 17009 options: { 17010 type: 'array', 17011 items: { 17012 type: 'ref', 17013 ref: 'lex:tools.ozone.setting.defs#option', 17014 }, 17015 }, 17016 }, 17017 }, 17018 }, 17019 }, 17020 }, 17021 }, 17022 ToolsOzoneSettingRemoveOptions: { 17023 lexicon: 1, 17024 id: 'tools.ozone.setting.removeOptions', 17025 defs: { 17026 main: { 17027 type: 'procedure', 17028 description: 'Delete settings by key', 17029 input: { 17030 encoding: 'application/json', 17031 schema: { 17032 type: 'object', 17033 required: ['keys', 'scope'], 17034 properties: { 17035 keys: { 17036 type: 'array', 17037 minLength: 1, 17038 maxLength: 200, 17039 items: { 17040 type: 'string', 17041 format: 'nsid', 17042 }, 17043 }, 17044 scope: { 17045 type: 'string', 17046 knownValues: ['instance', 'personal'], 17047 }, 17048 }, 17049 }, 17050 }, 17051 output: { 17052 encoding: 'application/json', 17053 schema: { 17054 type: 'object', 17055 properties: {}, 17056 }, 17057 }, 17058 }, 17059 }, 17060 }, 17061 ToolsOzoneSettingUpsertOption: { 17062 lexicon: 1, 17063 id: 'tools.ozone.setting.upsertOption', 17064 defs: { 17065 main: { 17066 type: 'procedure', 17067 description: 'Create or update setting option', 17068 input: { 17069 encoding: 'application/json', 17070 schema: { 17071 type: 'object', 17072 required: ['key', 'scope', 'value'], 17073 properties: { 17074 key: { 17075 type: 'string', 17076 format: 'nsid', 17077 }, 17078 scope: { 17079 type: 'string', 17080 knownValues: ['instance', 'personal'], 17081 }, 17082 value: { 17083 type: 'unknown', 17084 }, 17085 description: { 17086 type: 'string', 17087 maxLength: 2000, 17088 }, 17089 managerRole: { 17090 type: 'string', 17091 knownValues: [ 17092 'tools.ozone.team.defs#roleModerator', 17093 'tools.ozone.team.defs#roleTriage', 17094 'tools.ozone.team.defs#roleVerifier', 17095 'tools.ozone.team.defs#roleAdmin', 17096 ], 17097 }, 17098 }, 17099 }, 17100 }, 17101 output: { 17102 encoding: 'application/json', 17103 schema: { 17104 type: 'object', 17105 required: ['option'], 17106 properties: { 17107 option: { 17108 type: 'ref', 17109 ref: 'lex:tools.ozone.setting.defs#option', 17110 }, 17111 }, 17112 }, 17113 }, 17114 }, 17115 }, 17116 }, 17117 ToolsOzoneSignatureDefs: { 17118 lexicon: 1, 17119 id: 'tools.ozone.signature.defs', 17120 defs: { 17121 sigDetail: { 17122 type: 'object', 17123 required: ['property', 'value'], 17124 properties: { 17125 property: { 17126 type: 'string', 17127 }, 17128 value: { 17129 type: 'string', 17130 }, 17131 }, 17132 }, 17133 }, 17134 }, 17135 ToolsOzoneSignatureFindCorrelation: { 17136 lexicon: 1, 17137 id: 'tools.ozone.signature.findCorrelation', 17138 defs: { 17139 main: { 17140 type: 'query', 17141 description: 17142 'Find all correlated threat signatures between 2 or more accounts.', 17143 parameters: { 17144 type: 'params', 17145 required: ['dids'], 17146 properties: { 17147 dids: { 17148 type: 'array', 17149 items: { 17150 type: 'string', 17151 format: 'did', 17152 }, 17153 }, 17154 }, 17155 }, 17156 output: { 17157 encoding: 'application/json', 17158 schema: { 17159 type: 'object', 17160 required: ['details'], 17161 properties: { 17162 details: { 17163 type: 'array', 17164 items: { 17165 type: 'ref', 17166 ref: 'lex:tools.ozone.signature.defs#sigDetail', 17167 }, 17168 }, 17169 }, 17170 }, 17171 }, 17172 }, 17173 }, 17174 }, 17175 ToolsOzoneSignatureFindRelatedAccounts: { 17176 lexicon: 1, 17177 id: 'tools.ozone.signature.findRelatedAccounts', 17178 defs: { 17179 main: { 17180 type: 'query', 17181 description: 17182 'Get accounts that share some matching threat signatures with the root account.', 17183 parameters: { 17184 type: 'params', 17185 required: ['did'], 17186 properties: { 17187 did: { 17188 type: 'string', 17189 format: 'did', 17190 }, 17191 cursor: { 17192 type: 'string', 17193 }, 17194 limit: { 17195 type: 'integer', 17196 minimum: 1, 17197 maximum: 100, 17198 default: 50, 17199 }, 17200 }, 17201 }, 17202 output: { 17203 encoding: 'application/json', 17204 schema: { 17205 type: 'object', 17206 required: ['accounts'], 17207 properties: { 17208 cursor: { 17209 type: 'string', 17210 }, 17211 accounts: { 17212 type: 'array', 17213 items: { 17214 type: 'ref', 17215 ref: 'lex:tools.ozone.signature.findRelatedAccounts#relatedAccount', 17216 }, 17217 }, 17218 }, 17219 }, 17220 }, 17221 }, 17222 relatedAccount: { 17223 type: 'object', 17224 required: ['account'], 17225 properties: { 17226 account: { 17227 type: 'ref', 17228 ref: 'lex:com.atproto.admin.defs#accountView', 17229 }, 17230 similarities: { 17231 type: 'array', 17232 items: { 17233 type: 'ref', 17234 ref: 'lex:tools.ozone.signature.defs#sigDetail', 17235 }, 17236 }, 17237 }, 17238 }, 17239 }, 17240 }, 17241 ToolsOzoneSignatureSearchAccounts: { 17242 lexicon: 1, 17243 id: 'tools.ozone.signature.searchAccounts', 17244 defs: { 17245 main: { 17246 type: 'query', 17247 description: 17248 'Search for accounts that match one or more threat signature values.', 17249 parameters: { 17250 type: 'params', 17251 required: ['values'], 17252 properties: { 17253 values: { 17254 type: 'array', 17255 items: { 17256 type: 'string', 17257 }, 17258 }, 17259 cursor: { 17260 type: 'string', 17261 }, 17262 limit: { 17263 type: 'integer', 17264 minimum: 1, 17265 maximum: 100, 17266 default: 50, 17267 }, 17268 }, 17269 }, 17270 output: { 17271 encoding: 'application/json', 17272 schema: { 17273 type: 'object', 17274 required: ['accounts'], 17275 properties: { 17276 cursor: { 17277 type: 'string', 17278 }, 17279 accounts: { 17280 type: 'array', 17281 items: { 17282 type: 'ref', 17283 ref: 'lex:com.atproto.admin.defs#accountView', 17284 }, 17285 }, 17286 }, 17287 }, 17288 }, 17289 }, 17290 }, 17291 }, 17292 ToolsOzoneTeamAddMember: { 17293 lexicon: 1, 17294 id: 'tools.ozone.team.addMember', 17295 defs: { 17296 main: { 17297 type: 'procedure', 17298 description: 'Add a member to the ozone team. Requires admin role.', 17299 input: { 17300 encoding: 'application/json', 17301 schema: { 17302 type: 'object', 17303 required: ['did', 'role'], 17304 properties: { 17305 did: { 17306 type: 'string', 17307 format: 'did', 17308 }, 17309 role: { 17310 type: 'string', 17311 knownValues: [ 17312 'tools.ozone.team.defs#roleAdmin', 17313 'tools.ozone.team.defs#roleModerator', 17314 'tools.ozone.team.defs#roleVerifier', 17315 'tools.ozone.team.defs#roleTriage', 17316 ], 17317 }, 17318 }, 17319 }, 17320 }, 17321 output: { 17322 encoding: 'application/json', 17323 schema: { 17324 type: 'ref', 17325 ref: 'lex:tools.ozone.team.defs#member', 17326 }, 17327 }, 17328 errors: [ 17329 { 17330 name: 'MemberAlreadyExists', 17331 description: 'Member already exists in the team.', 17332 }, 17333 ], 17334 }, 17335 }, 17336 }, 17337 ToolsOzoneTeamDefs: { 17338 lexicon: 1, 17339 id: 'tools.ozone.team.defs', 17340 defs: { 17341 member: { 17342 type: 'object', 17343 required: ['did', 'role'], 17344 properties: { 17345 did: { 17346 type: 'string', 17347 format: 'did', 17348 }, 17349 disabled: { 17350 type: 'boolean', 17351 }, 17352 profile: { 17353 type: 'ref', 17354 ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 17355 }, 17356 createdAt: { 17357 type: 'string', 17358 format: 'datetime', 17359 }, 17360 updatedAt: { 17361 type: 'string', 17362 format: 'datetime', 17363 }, 17364 lastUpdatedBy: { 17365 type: 'string', 17366 }, 17367 role: { 17368 type: 'string', 17369 knownValues: [ 17370 'lex:tools.ozone.team.defs#roleAdmin', 17371 'lex:tools.ozone.team.defs#roleModerator', 17372 'lex:tools.ozone.team.defs#roleTriage', 17373 'lex:tools.ozone.team.defs#roleVerifier', 17374 ], 17375 }, 17376 }, 17377 }, 17378 roleAdmin: { 17379 type: 'token', 17380 description: 17381 'Admin role. Highest level of access, can perform all actions.', 17382 }, 17383 roleModerator: { 17384 type: 'token', 17385 description: 'Moderator role. Can perform most actions.', 17386 }, 17387 roleTriage: { 17388 type: 'token', 17389 description: 17390 'Triage role. Mostly intended for monitoring and escalating issues.', 17391 }, 17392 roleVerifier: { 17393 type: 'token', 17394 description: 'Verifier role. Only allowed to issue verifications.', 17395 }, 17396 }, 17397 }, 17398 ToolsOzoneTeamDeleteMember: { 17399 lexicon: 1, 17400 id: 'tools.ozone.team.deleteMember', 17401 defs: { 17402 main: { 17403 type: 'procedure', 17404 description: 'Delete a member from ozone team. Requires admin role.', 17405 input: { 17406 encoding: 'application/json', 17407 schema: { 17408 type: 'object', 17409 required: ['did'], 17410 properties: { 17411 did: { 17412 type: 'string', 17413 format: 'did', 17414 }, 17415 }, 17416 }, 17417 }, 17418 errors: [ 17419 { 17420 name: 'MemberNotFound', 17421 description: 'The member being deleted does not exist', 17422 }, 17423 { 17424 name: 'CannotDeleteSelf', 17425 description: 'You can not delete yourself from the team', 17426 }, 17427 ], 17428 }, 17429 }, 17430 }, 17431 ToolsOzoneTeamListMembers: { 17432 lexicon: 1, 17433 id: 'tools.ozone.team.listMembers', 17434 defs: { 17435 main: { 17436 type: 'query', 17437 description: 'List all members with access to the ozone service.', 17438 parameters: { 17439 type: 'params', 17440 properties: { 17441 q: { 17442 type: 'string', 17443 }, 17444 disabled: { 17445 type: 'boolean', 17446 }, 17447 roles: { 17448 type: 'array', 17449 items: { 17450 type: 'string', 17451 }, 17452 }, 17453 limit: { 17454 type: 'integer', 17455 minimum: 1, 17456 maximum: 100, 17457 default: 50, 17458 }, 17459 cursor: { 17460 type: 'string', 17461 }, 17462 }, 17463 }, 17464 output: { 17465 encoding: 'application/json', 17466 schema: { 17467 type: 'object', 17468 required: ['members'], 17469 properties: { 17470 cursor: { 17471 type: 'string', 17472 }, 17473 members: { 17474 type: 'array', 17475 items: { 17476 type: 'ref', 17477 ref: 'lex:tools.ozone.team.defs#member', 17478 }, 17479 }, 17480 }, 17481 }, 17482 }, 17483 }, 17484 }, 17485 }, 17486 ToolsOzoneTeamUpdateMember: { 17487 lexicon: 1, 17488 id: 'tools.ozone.team.updateMember', 17489 defs: { 17490 main: { 17491 type: 'procedure', 17492 description: 17493 'Update a member in the ozone service. Requires admin role.', 17494 input: { 17495 encoding: 'application/json', 17496 schema: { 17497 type: 'object', 17498 required: ['did'], 17499 properties: { 17500 did: { 17501 type: 'string', 17502 format: 'did', 17503 }, 17504 disabled: { 17505 type: 'boolean', 17506 }, 17507 role: { 17508 type: 'string', 17509 knownValues: [ 17510 'tools.ozone.team.defs#roleAdmin', 17511 'tools.ozone.team.defs#roleModerator', 17512 'tools.ozone.team.defs#roleVerifier', 17513 'tools.ozone.team.defs#roleTriage', 17514 ], 17515 }, 17516 }, 17517 }, 17518 }, 17519 output: { 17520 encoding: 'application/json', 17521 schema: { 17522 type: 'ref', 17523 ref: 'lex:tools.ozone.team.defs#member', 17524 }, 17525 }, 17526 errors: [ 17527 { 17528 name: 'MemberNotFound', 17529 description: 'The member being updated does not exist in the team', 17530 }, 17531 ], 17532 }, 17533 }, 17534 }, 17535 ToolsOzoneVerificationDefs: { 17536 lexicon: 1, 17537 id: 'tools.ozone.verification.defs', 17538 defs: { 17539 verificationView: { 17540 type: 'object', 17541 description: 'Verification data for the associated subject.', 17542 required: [ 17543 'issuer', 17544 'uri', 17545 'subject', 17546 'handle', 17547 'displayName', 17548 'createdAt', 17549 ], 17550 properties: { 17551 issuer: { 17552 type: 'string', 17553 description: 'The user who issued this verification.', 17554 format: 'did', 17555 }, 17556 uri: { 17557 type: 'string', 17558 description: 'The AT-URI of the verification record.', 17559 format: 'at-uri', 17560 }, 17561 subject: { 17562 type: 'string', 17563 format: 'did', 17564 description: 'The subject of the verification.', 17565 }, 17566 handle: { 17567 type: 'string', 17568 description: 17569 'Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.', 17570 format: 'handle', 17571 }, 17572 displayName: { 17573 type: 'string', 17574 description: 17575 'Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying.', 17576 }, 17577 createdAt: { 17578 type: 'string', 17579 description: 'Timestamp when the verification was created.', 17580 format: 'datetime', 17581 }, 17582 revokeReason: { 17583 type: 'string', 17584 description: 17585 'Describes the reason for revocation, also indicating that the verification is no longer valid.', 17586 }, 17587 revokedAt: { 17588 type: 'string', 17589 description: 'Timestamp when the verification was revoked.', 17590 format: 'datetime', 17591 }, 17592 revokedBy: { 17593 type: 'string', 17594 description: 'The user who revoked this verification.', 17595 format: 'did', 17596 }, 17597 subjectProfile: { 17598 type: 'union', 17599 refs: [], 17600 }, 17601 issuerProfile: { 17602 type: 'union', 17603 refs: [], 17604 }, 17605 subjectRepo: { 17606 type: 'union', 17607 refs: [ 17608 'lex:tools.ozone.moderation.defs#repoViewDetail', 17609 'lex:tools.ozone.moderation.defs#repoViewNotFound', 17610 ], 17611 }, 17612 issuerRepo: { 17613 type: 'union', 17614 refs: [ 17615 'lex:tools.ozone.moderation.defs#repoViewDetail', 17616 'lex:tools.ozone.moderation.defs#repoViewNotFound', 17617 ], 17618 }, 17619 }, 17620 }, 17621 }, 17622 }, 17623 ToolsOzoneVerificationGrantVerifications: { 17624 lexicon: 1, 17625 id: 'tools.ozone.verification.grantVerifications', 17626 defs: { 17627 main: { 17628 type: 'procedure', 17629 description: 17630 'Grant verifications to multiple subjects. Allows batch processing of up to 100 verifications at once.', 17631 input: { 17632 encoding: 'application/json', 17633 schema: { 17634 type: 'object', 17635 required: ['verifications'], 17636 properties: { 17637 verifications: { 17638 type: 'array', 17639 description: 'Array of verification requests to process', 17640 maxLength: 100, 17641 items: { 17642 type: 'ref', 17643 ref: 'lex:tools.ozone.verification.grantVerifications#verificationInput', 17644 }, 17645 }, 17646 }, 17647 }, 17648 }, 17649 output: { 17650 encoding: 'application/json', 17651 schema: { 17652 type: 'object', 17653 required: ['verifications', 'failedVerifications'], 17654 properties: { 17655 verifications: { 17656 type: 'array', 17657 items: { 17658 type: 'ref', 17659 ref: 'lex:tools.ozone.verification.defs#verificationView', 17660 }, 17661 }, 17662 failedVerifications: { 17663 type: 'array', 17664 items: { 17665 type: 'ref', 17666 ref: 'lex:tools.ozone.verification.grantVerifications#grantError', 17667 }, 17668 }, 17669 }, 17670 }, 17671 }, 17672 }, 17673 verificationInput: { 17674 type: 'object', 17675 required: ['subject', 'handle', 'displayName'], 17676 properties: { 17677 subject: { 17678 type: 'string', 17679 description: 'The did of the subject being verified', 17680 format: 'did', 17681 }, 17682 handle: { 17683 type: 'string', 17684 description: 17685 'Handle of the subject the verification applies to at the moment of verifying.', 17686 format: 'handle', 17687 }, 17688 displayName: { 17689 type: 'string', 17690 description: 17691 'Display name of the subject the verification applies to at the moment of verifying.', 17692 }, 17693 createdAt: { 17694 type: 'string', 17695 format: 'datetime', 17696 description: 17697 'Timestamp for verification record. Defaults to current time when not specified.', 17698 }, 17699 }, 17700 }, 17701 grantError: { 17702 type: 'object', 17703 description: 'Error object for failed verifications.', 17704 required: ['error', 'subject'], 17705 properties: { 17706 error: { 17707 type: 'string', 17708 description: 'Error message describing the reason for failure.', 17709 }, 17710 subject: { 17711 type: 'string', 17712 description: 'The did of the subject being verified', 17713 format: 'did', 17714 }, 17715 }, 17716 }, 17717 }, 17718 }, 17719 ToolsOzoneVerificationListVerifications: { 17720 lexicon: 1, 17721 id: 'tools.ozone.verification.listVerifications', 17722 defs: { 17723 main: { 17724 type: 'query', 17725 description: 'List verifications', 17726 parameters: { 17727 type: 'params', 17728 properties: { 17729 cursor: { 17730 type: 'string', 17731 description: 'Pagination cursor', 17732 }, 17733 limit: { 17734 type: 'integer', 17735 description: 'Maximum number of results to return', 17736 minimum: 1, 17737 maximum: 100, 17738 default: 50, 17739 }, 17740 createdAfter: { 17741 type: 'string', 17742 format: 'datetime', 17743 description: 17744 'Filter to verifications created after this timestamp', 17745 }, 17746 createdBefore: { 17747 type: 'string', 17748 format: 'datetime', 17749 description: 17750 'Filter to verifications created before this timestamp', 17751 }, 17752 issuers: { 17753 type: 'array', 17754 maxLength: 100, 17755 description: 'Filter to verifications from specific issuers', 17756 items: { 17757 type: 'string', 17758 format: 'did', 17759 }, 17760 }, 17761 subjects: { 17762 type: 'array', 17763 description: 'Filter to specific verified DIDs', 17764 maxLength: 100, 17765 items: { 17766 type: 'string', 17767 format: 'did', 17768 }, 17769 }, 17770 sortDirection: { 17771 type: 'string', 17772 description: 'Sort direction for creation date', 17773 enum: ['asc', 'desc'], 17774 default: 'desc', 17775 }, 17776 isRevoked: { 17777 type: 'boolean', 17778 description: 17779 'Filter to verifications that are revoked or not. By default, includes both.', 17780 }, 17781 }, 17782 }, 17783 output: { 17784 encoding: 'application/json', 17785 schema: { 17786 type: 'object', 17787 required: ['verifications'], 17788 properties: { 17789 cursor: { 17790 type: 'string', 17791 }, 17792 verifications: { 17793 type: 'array', 17794 items: { 17795 type: 'ref', 17796 ref: 'lex:tools.ozone.verification.defs#verificationView', 17797 }, 17798 }, 17799 }, 17800 }, 17801 }, 17802 }, 17803 }, 17804 }, 17805 ToolsOzoneVerificationRevokeVerifications: { 17806 lexicon: 1, 17807 id: 'tools.ozone.verification.revokeVerifications', 17808 defs: { 17809 main: { 17810 type: 'procedure', 17811 description: 17812 'Revoke previously granted verifications in batches of up to 100.', 17813 input: { 17814 encoding: 'application/json', 17815 schema: { 17816 type: 'object', 17817 required: ['uris'], 17818 properties: { 17819 uris: { 17820 type: 'array', 17821 description: 'Array of verification record uris to revoke', 17822 maxLength: 100, 17823 items: { 17824 type: 'string', 17825 description: 17826 'The AT-URI of the verification record to revoke.', 17827 format: 'at-uri', 17828 }, 17829 }, 17830 revokeReason: { 17831 type: 'string', 17832 description: 17833 'Reason for revoking the verification. This is optional and can be omitted if not needed.', 17834 maxLength: 1000, 17835 }, 17836 }, 17837 }, 17838 }, 17839 output: { 17840 encoding: 'application/json', 17841 schema: { 17842 type: 'object', 17843 required: ['revokedVerifications', 'failedRevocations'], 17844 properties: { 17845 revokedVerifications: { 17846 type: 'array', 17847 description: 'List of verification uris successfully revoked', 17848 items: { 17849 type: 'string', 17850 format: 'at-uri', 17851 }, 17852 }, 17853 failedRevocations: { 17854 type: 'array', 17855 description: 17856 "List of verification uris that couldn't be revoked, including failure reasons", 17857 items: { 17858 type: 'ref', 17859 ref: 'lex:tools.ozone.verification.revokeVerifications#revokeError', 17860 }, 17861 }, 17862 }, 17863 }, 17864 }, 17865 }, 17866 revokeError: { 17867 type: 'object', 17868 description: 'Error object for failed revocations', 17869 required: ['uri', 'error'], 17870 properties: { 17871 uri: { 17872 type: 'string', 17873 description: 17874 'The AT-URI of the verification record that failed to revoke.', 17875 format: 'at-uri', 17876 }, 17877 error: { 17878 type: 'string', 17879 description: 17880 'Description of the error that occurred during revocation.', 17881 }, 17882 }, 17883 }, 17884 }, 17885 }, 17886} as const satisfies Record<string, LexiconDoc> 17887export const schemas = Object.values(schemaDict) satisfies LexiconDoc[] 17888export const lexicons: Lexicons = new Lexicons(schemas) 17889 17890export function validate<T extends { $type: string }>( 17891 v: unknown, 17892 id: string, 17893 hash: string, 17894 requiredType: true, 17895): ValidationResult<T> 17896export function validate<T extends { $type?: string }>( 17897 v: unknown, 17898 id: string, 17899 hash: string, 17900 requiredType?: false, 17901): ValidationResult<T> 17902export function validate( 17903 v: unknown, 17904 id: string, 17905 hash: string, 17906 requiredType?: boolean, 17907): ValidationResult { 17908 return (requiredType ? is$typed : maybe$typed)(v, id, hash) 17909 ? lexicons.validate(`${id}#${hash}`, v) 17910 : { 17911 success: false, 17912 error: new ValidationError( 17913 `Must be an object with "${hash === 'main' ? id : `${id}#${hash}`}" $type property`, 17914 ), 17915 } 17916} 17917 17918export const ids = { 17919 AppBskyActorDefs: 'app.bsky.actor.defs', 17920 AppBskyActorGetPreferences: 'app.bsky.actor.getPreferences', 17921 AppBskyActorGetProfile: 'app.bsky.actor.getProfile', 17922 AppBskyActorGetProfiles: 'app.bsky.actor.getProfiles', 17923 AppBskyActorGetSuggestions: 'app.bsky.actor.getSuggestions', 17924 AppBskyActorProfile: 'app.bsky.actor.profile', 17925 AppBskyActorPutPreferences: 'app.bsky.actor.putPreferences', 17926 AppBskyActorSearchActors: 'app.bsky.actor.searchActors', 17927 AppBskyActorSearchActorsTypeahead: 'app.bsky.actor.searchActorsTypeahead', 17928 AppBskyActorStatus: 'app.bsky.actor.status', 17929 AppBskyEmbedDefs: 'app.bsky.embed.defs', 17930 AppBskyEmbedExternal: 'app.bsky.embed.external', 17931 AppBskyEmbedImages: 'app.bsky.embed.images', 17932 AppBskyEmbedRecord: 'app.bsky.embed.record', 17933 AppBskyEmbedRecordWithMedia: 'app.bsky.embed.recordWithMedia', 17934 AppBskyEmbedVideo: 'app.bsky.embed.video', 17935 AppBskyFeedDefs: 'app.bsky.feed.defs', 17936 AppBskyFeedDescribeFeedGenerator: 'app.bsky.feed.describeFeedGenerator', 17937 AppBskyFeedGenerator: 'app.bsky.feed.generator', 17938 AppBskyFeedGetActorFeeds: 'app.bsky.feed.getActorFeeds', 17939 AppBskyFeedGetActorLikes: 'app.bsky.feed.getActorLikes', 17940 AppBskyFeedGetAuthorFeed: 'app.bsky.feed.getAuthorFeed', 17941 AppBskyFeedGetFeed: 'app.bsky.feed.getFeed', 17942 AppBskyFeedGetFeedGenerator: 'app.bsky.feed.getFeedGenerator', 17943 AppBskyFeedGetFeedGenerators: 'app.bsky.feed.getFeedGenerators', 17944 AppBskyFeedGetFeedSkeleton: 'app.bsky.feed.getFeedSkeleton', 17945 AppBskyFeedGetLikes: 'app.bsky.feed.getLikes', 17946 AppBskyFeedGetListFeed: 'app.bsky.feed.getListFeed', 17947 AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread', 17948 AppBskyFeedGetPosts: 'app.bsky.feed.getPosts', 17949 AppBskyFeedGetQuotes: 'app.bsky.feed.getQuotes', 17950 AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy', 17951 AppBskyFeedGetSuggestedFeeds: 'app.bsky.feed.getSuggestedFeeds', 17952 AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline', 17953 AppBskyFeedLike: 'app.bsky.feed.like', 17954 AppBskyFeedPost: 'app.bsky.feed.post', 17955 AppBskyFeedPostgate: 'app.bsky.feed.postgate', 17956 AppBskyFeedRepost: 'app.bsky.feed.repost', 17957 AppBskyFeedSearchPosts: 'app.bsky.feed.searchPosts', 17958 AppBskyFeedSendInteractions: 'app.bsky.feed.sendInteractions', 17959 AppBskyFeedThreadgate: 'app.bsky.feed.threadgate', 17960 AppBskyGraphBlock: 'app.bsky.graph.block', 17961 AppBskyGraphDefs: 'app.bsky.graph.defs', 17962 AppBskyGraphFollow: 'app.bsky.graph.follow', 17963 AppBskyGraphGetActorStarterPacks: 'app.bsky.graph.getActorStarterPacks', 17964 AppBskyGraphGetBlocks: 'app.bsky.graph.getBlocks', 17965 AppBskyGraphGetFollowers: 'app.bsky.graph.getFollowers', 17966 AppBskyGraphGetFollows: 'app.bsky.graph.getFollows', 17967 AppBskyGraphGetKnownFollowers: 'app.bsky.graph.getKnownFollowers', 17968 AppBskyGraphGetList: 'app.bsky.graph.getList', 17969 AppBskyGraphGetListBlocks: 'app.bsky.graph.getListBlocks', 17970 AppBskyGraphGetListMutes: 'app.bsky.graph.getListMutes', 17971 AppBskyGraphGetLists: 'app.bsky.graph.getLists', 17972 AppBskyGraphGetListsWithMembership: 'app.bsky.graph.getListsWithMembership', 17973 AppBskyGraphGetMutes: 'app.bsky.graph.getMutes', 17974 AppBskyGraphGetRelationships: 'app.bsky.graph.getRelationships', 17975 AppBskyGraphGetStarterPack: 'app.bsky.graph.getStarterPack', 17976 AppBskyGraphGetStarterPacks: 'app.bsky.graph.getStarterPacks', 17977 AppBskyGraphGetStarterPacksWithMembership: 17978 'app.bsky.graph.getStarterPacksWithMembership', 17979 AppBskyGraphGetSuggestedFollowsByActor: 17980 'app.bsky.graph.getSuggestedFollowsByActor', 17981 AppBskyGraphList: 'app.bsky.graph.list', 17982 AppBskyGraphListblock: 'app.bsky.graph.listblock', 17983 AppBskyGraphListitem: 'app.bsky.graph.listitem', 17984 AppBskyGraphMuteActor: 'app.bsky.graph.muteActor', 17985 AppBskyGraphMuteActorList: 'app.bsky.graph.muteActorList', 17986 AppBskyGraphMuteThread: 'app.bsky.graph.muteThread', 17987 AppBskyGraphSearchStarterPacks: 'app.bsky.graph.searchStarterPacks', 17988 AppBskyGraphStarterpack: 'app.bsky.graph.starterpack', 17989 AppBskyGraphUnmuteActor: 'app.bsky.graph.unmuteActor', 17990 AppBskyGraphUnmuteActorList: 'app.bsky.graph.unmuteActorList', 17991 AppBskyGraphUnmuteThread: 'app.bsky.graph.unmuteThread', 17992 AppBskyGraphVerification: 'app.bsky.graph.verification', 17993 AppBskyLabelerDefs: 'app.bsky.labeler.defs', 17994 AppBskyLabelerGetServices: 'app.bsky.labeler.getServices', 17995 AppBskyLabelerService: 'app.bsky.labeler.service', 17996 AppBskyNotificationDeclaration: 'app.bsky.notification.declaration', 17997 AppBskyNotificationDefs: 'app.bsky.notification.defs', 17998 AppBskyNotificationGetPreferences: 'app.bsky.notification.getPreferences', 17999 AppBskyNotificationGetUnreadCount: 'app.bsky.notification.getUnreadCount', 18000 AppBskyNotificationListActivitySubscriptions: 18001 'app.bsky.notification.listActivitySubscriptions', 18002 AppBskyNotificationListNotifications: 18003 'app.bsky.notification.listNotifications', 18004 AppBskyNotificationPutActivitySubscription: 18005 'app.bsky.notification.putActivitySubscription', 18006 AppBskyNotificationPutPreferences: 'app.bsky.notification.putPreferences', 18007 AppBskyNotificationPutPreferencesV2: 'app.bsky.notification.putPreferencesV2', 18008 AppBskyNotificationRegisterPush: 'app.bsky.notification.registerPush', 18009 AppBskyNotificationUnregisterPush: 'app.bsky.notification.unregisterPush', 18010 AppBskyNotificationUpdateSeen: 'app.bsky.notification.updateSeen', 18011 AppBskyRichtextFacet: 'app.bsky.richtext.facet', 18012 AppBskyUnspeccedDefs: 'app.bsky.unspecced.defs', 18013 AppBskyUnspeccedGetAgeAssuranceState: 18014 'app.bsky.unspecced.getAgeAssuranceState', 18015 AppBskyUnspeccedGetConfig: 'app.bsky.unspecced.getConfig', 18016 AppBskyUnspeccedGetPopularFeedGenerators: 18017 'app.bsky.unspecced.getPopularFeedGenerators', 18018 AppBskyUnspeccedGetPostThreadOtherV2: 18019 'app.bsky.unspecced.getPostThreadOtherV2', 18020 AppBskyUnspeccedGetPostThreadV2: 'app.bsky.unspecced.getPostThreadV2', 18021 AppBskyUnspeccedGetSuggestedFeeds: 'app.bsky.unspecced.getSuggestedFeeds', 18022 AppBskyUnspeccedGetSuggestedFeedsSkeleton: 18023 'app.bsky.unspecced.getSuggestedFeedsSkeleton', 18024 AppBskyUnspeccedGetSuggestedStarterPacks: 18025 'app.bsky.unspecced.getSuggestedStarterPacks', 18026 AppBskyUnspeccedGetSuggestedStarterPacksSkeleton: 18027 'app.bsky.unspecced.getSuggestedStarterPacksSkeleton', 18028 AppBskyUnspeccedGetSuggestedUsers: 'app.bsky.unspecced.getSuggestedUsers', 18029 AppBskyUnspeccedGetSuggestedUsersSkeleton: 18030 'app.bsky.unspecced.getSuggestedUsersSkeleton', 18031 AppBskyUnspeccedGetSuggestionsSkeleton: 18032 'app.bsky.unspecced.getSuggestionsSkeleton', 18033 AppBskyUnspeccedGetTaggedSuggestions: 18034 'app.bsky.unspecced.getTaggedSuggestions', 18035 AppBskyUnspeccedGetTrendingTopics: 'app.bsky.unspecced.getTrendingTopics', 18036 AppBskyUnspeccedGetTrends: 'app.bsky.unspecced.getTrends', 18037 AppBskyUnspeccedGetTrendsSkeleton: 'app.bsky.unspecced.getTrendsSkeleton', 18038 AppBskyUnspeccedInitAgeAssurance: 'app.bsky.unspecced.initAgeAssurance', 18039 AppBskyUnspeccedSearchActorsSkeleton: 18040 'app.bsky.unspecced.searchActorsSkeleton', 18041 AppBskyUnspeccedSearchPostsSkeleton: 'app.bsky.unspecced.searchPostsSkeleton', 18042 AppBskyUnspeccedSearchStarterPacksSkeleton: 18043 'app.bsky.unspecced.searchStarterPacksSkeleton', 18044 AppBskyVideoDefs: 'app.bsky.video.defs', 18045 AppBskyVideoGetJobStatus: 'app.bsky.video.getJobStatus', 18046 AppBskyVideoGetUploadLimits: 'app.bsky.video.getUploadLimits', 18047 AppBskyVideoUploadVideo: 'app.bsky.video.uploadVideo', 18048 ChatBskyActorDeclaration: 'chat.bsky.actor.declaration', 18049 ChatBskyActorDefs: 'chat.bsky.actor.defs', 18050 ChatBskyActorDeleteAccount: 'chat.bsky.actor.deleteAccount', 18051 ChatBskyActorExportAccountData: 'chat.bsky.actor.exportAccountData', 18052 ChatBskyConvoAcceptConvo: 'chat.bsky.convo.acceptConvo', 18053 ChatBskyConvoAddReaction: 'chat.bsky.convo.addReaction', 18054 ChatBskyConvoDefs: 'chat.bsky.convo.defs', 18055 ChatBskyConvoDeleteMessageForSelf: 'chat.bsky.convo.deleteMessageForSelf', 18056 ChatBskyConvoGetConvo: 'chat.bsky.convo.getConvo', 18057 ChatBskyConvoGetConvoAvailability: 'chat.bsky.convo.getConvoAvailability', 18058 ChatBskyConvoGetConvoForMembers: 'chat.bsky.convo.getConvoForMembers', 18059 ChatBskyConvoGetLog: 'chat.bsky.convo.getLog', 18060 ChatBskyConvoGetMessages: 'chat.bsky.convo.getMessages', 18061 ChatBskyConvoLeaveConvo: 'chat.bsky.convo.leaveConvo', 18062 ChatBskyConvoListConvos: 'chat.bsky.convo.listConvos', 18063 ChatBskyConvoMuteConvo: 'chat.bsky.convo.muteConvo', 18064 ChatBskyConvoRemoveReaction: 'chat.bsky.convo.removeReaction', 18065 ChatBskyConvoSendMessage: 'chat.bsky.convo.sendMessage', 18066 ChatBskyConvoSendMessageBatch: 'chat.bsky.convo.sendMessageBatch', 18067 ChatBskyConvoUnmuteConvo: 'chat.bsky.convo.unmuteConvo', 18068 ChatBskyConvoUpdateAllRead: 'chat.bsky.convo.updateAllRead', 18069 ChatBskyConvoUpdateRead: 'chat.bsky.convo.updateRead', 18070 ChatBskyModerationGetActorMetadata: 'chat.bsky.moderation.getActorMetadata', 18071 ChatBskyModerationGetMessageContext: 'chat.bsky.moderation.getMessageContext', 18072 ChatBskyModerationUpdateActorAccess: 'chat.bsky.moderation.updateActorAccess', 18073 ComAtprotoAdminDefs: 'com.atproto.admin.defs', 18074 ComAtprotoAdminDeleteAccount: 'com.atproto.admin.deleteAccount', 18075 ComAtprotoAdminDisableAccountInvites: 18076 'com.atproto.admin.disableAccountInvites', 18077 ComAtprotoAdminDisableInviteCodes: 'com.atproto.admin.disableInviteCodes', 18078 ComAtprotoAdminEnableAccountInvites: 'com.atproto.admin.enableAccountInvites', 18079 ComAtprotoAdminGetAccountInfo: 'com.atproto.admin.getAccountInfo', 18080 ComAtprotoAdminGetAccountInfos: 'com.atproto.admin.getAccountInfos', 18081 ComAtprotoAdminGetInviteCodes: 'com.atproto.admin.getInviteCodes', 18082 ComAtprotoAdminGetSubjectStatus: 'com.atproto.admin.getSubjectStatus', 18083 ComAtprotoAdminSearchAccounts: 'com.atproto.admin.searchAccounts', 18084 ComAtprotoAdminSendEmail: 'com.atproto.admin.sendEmail', 18085 ComAtprotoAdminUpdateAccountEmail: 'com.atproto.admin.updateAccountEmail', 18086 ComAtprotoAdminUpdateAccountHandle: 'com.atproto.admin.updateAccountHandle', 18087 ComAtprotoAdminUpdateAccountPassword: 18088 'com.atproto.admin.updateAccountPassword', 18089 ComAtprotoAdminUpdateAccountSigningKey: 18090 'com.atproto.admin.updateAccountSigningKey', 18091 ComAtprotoAdminUpdateSubjectStatus: 'com.atproto.admin.updateSubjectStatus', 18092 ComAtprotoIdentityDefs: 'com.atproto.identity.defs', 18093 ComAtprotoIdentityGetRecommendedDidCredentials: 18094 'com.atproto.identity.getRecommendedDidCredentials', 18095 ComAtprotoIdentityRefreshIdentity: 'com.atproto.identity.refreshIdentity', 18096 ComAtprotoIdentityRequestPlcOperationSignature: 18097 'com.atproto.identity.requestPlcOperationSignature', 18098 ComAtprotoIdentityResolveDid: 'com.atproto.identity.resolveDid', 18099 ComAtprotoIdentityResolveHandle: 'com.atproto.identity.resolveHandle', 18100 ComAtprotoIdentityResolveIdentity: 'com.atproto.identity.resolveIdentity', 18101 ComAtprotoIdentitySignPlcOperation: 'com.atproto.identity.signPlcOperation', 18102 ComAtprotoIdentitySubmitPlcOperation: 18103 'com.atproto.identity.submitPlcOperation', 18104 ComAtprotoIdentityUpdateHandle: 'com.atproto.identity.updateHandle', 18105 ComAtprotoLabelDefs: 'com.atproto.label.defs', 18106 ComAtprotoLabelQueryLabels: 'com.atproto.label.queryLabels', 18107 ComAtprotoLabelSubscribeLabels: 'com.atproto.label.subscribeLabels', 18108 ComAtprotoLexiconSchema: 'com.atproto.lexicon.schema', 18109 ComAtprotoModerationCreateReport: 'com.atproto.moderation.createReport', 18110 ComAtprotoModerationDefs: 'com.atproto.moderation.defs', 18111 ComAtprotoRepoApplyWrites: 'com.atproto.repo.applyWrites', 18112 ComAtprotoRepoCreateRecord: 'com.atproto.repo.createRecord', 18113 ComAtprotoRepoDefs: 'com.atproto.repo.defs', 18114 ComAtprotoRepoDeleteRecord: 'com.atproto.repo.deleteRecord', 18115 ComAtprotoRepoDescribeRepo: 'com.atproto.repo.describeRepo', 18116 ComAtprotoRepoGetRecord: 'com.atproto.repo.getRecord', 18117 ComAtprotoRepoImportRepo: 'com.atproto.repo.importRepo', 18118 ComAtprotoRepoListMissingBlobs: 'com.atproto.repo.listMissingBlobs', 18119 ComAtprotoRepoListRecords: 'com.atproto.repo.listRecords', 18120 ComAtprotoRepoPutRecord: 'com.atproto.repo.putRecord', 18121 ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', 18122 ComAtprotoRepoUploadBlob: 'com.atproto.repo.uploadBlob', 18123 ComAtprotoServerActivateAccount: 'com.atproto.server.activateAccount', 18124 ComAtprotoServerCheckAccountStatus: 'com.atproto.server.checkAccountStatus', 18125 ComAtprotoServerConfirmEmail: 'com.atproto.server.confirmEmail', 18126 ComAtprotoServerCreateAccount: 'com.atproto.server.createAccount', 18127 ComAtprotoServerCreateAppPassword: 'com.atproto.server.createAppPassword', 18128 ComAtprotoServerCreateInviteCode: 'com.atproto.server.createInviteCode', 18129 ComAtprotoServerCreateInviteCodes: 'com.atproto.server.createInviteCodes', 18130 ComAtprotoServerCreateSession: 'com.atproto.server.createSession', 18131 ComAtprotoServerDeactivateAccount: 'com.atproto.server.deactivateAccount', 18132 ComAtprotoServerDefs: 'com.atproto.server.defs', 18133 ComAtprotoServerDeleteAccount: 'com.atproto.server.deleteAccount', 18134 ComAtprotoServerDeleteSession: 'com.atproto.server.deleteSession', 18135 ComAtprotoServerDescribeServer: 'com.atproto.server.describeServer', 18136 ComAtprotoServerGetAccountInviteCodes: 18137 'com.atproto.server.getAccountInviteCodes', 18138 ComAtprotoServerGetServiceAuth: 'com.atproto.server.getServiceAuth', 18139 ComAtprotoServerGetSession: 'com.atproto.server.getSession', 18140 ComAtprotoServerListAppPasswords: 'com.atproto.server.listAppPasswords', 18141 ComAtprotoServerRefreshSession: 'com.atproto.server.refreshSession', 18142 ComAtprotoServerRequestAccountDelete: 18143 'com.atproto.server.requestAccountDelete', 18144 ComAtprotoServerRequestEmailConfirmation: 18145 'com.atproto.server.requestEmailConfirmation', 18146 ComAtprotoServerRequestEmailUpdate: 'com.atproto.server.requestEmailUpdate', 18147 ComAtprotoServerRequestPasswordReset: 18148 'com.atproto.server.requestPasswordReset', 18149 ComAtprotoServerReserveSigningKey: 'com.atproto.server.reserveSigningKey', 18150 ComAtprotoServerResetPassword: 'com.atproto.server.resetPassword', 18151 ComAtprotoServerRevokeAppPassword: 'com.atproto.server.revokeAppPassword', 18152 ComAtprotoServerUpdateEmail: 'com.atproto.server.updateEmail', 18153 ComAtprotoSyncDefs: 'com.atproto.sync.defs', 18154 ComAtprotoSyncGetBlob: 'com.atproto.sync.getBlob', 18155 ComAtprotoSyncGetBlocks: 'com.atproto.sync.getBlocks', 18156 ComAtprotoSyncGetCheckout: 'com.atproto.sync.getCheckout', 18157 ComAtprotoSyncGetHead: 'com.atproto.sync.getHead', 18158 ComAtprotoSyncGetHostStatus: 'com.atproto.sync.getHostStatus', 18159 ComAtprotoSyncGetLatestCommit: 'com.atproto.sync.getLatestCommit', 18160 ComAtprotoSyncGetRecord: 'com.atproto.sync.getRecord', 18161 ComAtprotoSyncGetRepo: 'com.atproto.sync.getRepo', 18162 ComAtprotoSyncGetRepoStatus: 'com.atproto.sync.getRepoStatus', 18163 ComAtprotoSyncListBlobs: 'com.atproto.sync.listBlobs', 18164 ComAtprotoSyncListHosts: 'com.atproto.sync.listHosts', 18165 ComAtprotoSyncListRepos: 'com.atproto.sync.listRepos', 18166 ComAtprotoSyncListReposByCollection: 'com.atproto.sync.listReposByCollection', 18167 ComAtprotoSyncNotifyOfUpdate: 'com.atproto.sync.notifyOfUpdate', 18168 ComAtprotoSyncRequestCrawl: 'com.atproto.sync.requestCrawl', 18169 ComAtprotoSyncSubscribeRepos: 'com.atproto.sync.subscribeRepos', 18170 ComAtprotoTempAddReservedHandle: 'com.atproto.temp.addReservedHandle', 18171 ComAtprotoTempCheckHandleAvailability: 18172 'com.atproto.temp.checkHandleAvailability', 18173 ComAtprotoTempCheckSignupQueue: 'com.atproto.temp.checkSignupQueue', 18174 ComAtprotoTempFetchLabels: 'com.atproto.temp.fetchLabels', 18175 ComAtprotoTempRequestPhoneVerification: 18176 'com.atproto.temp.requestPhoneVerification', 18177 ToolsOzoneCommunicationCreateTemplate: 18178 'tools.ozone.communication.createTemplate', 18179 ToolsOzoneCommunicationDefs: 'tools.ozone.communication.defs', 18180 ToolsOzoneCommunicationDeleteTemplate: 18181 'tools.ozone.communication.deleteTemplate', 18182 ToolsOzoneCommunicationListTemplates: 18183 'tools.ozone.communication.listTemplates', 18184 ToolsOzoneCommunicationUpdateTemplate: 18185 'tools.ozone.communication.updateTemplate', 18186 ToolsOzoneHostingGetAccountHistory: 'tools.ozone.hosting.getAccountHistory', 18187 ToolsOzoneModerationDefs: 'tools.ozone.moderation.defs', 18188 ToolsOzoneModerationEmitEvent: 'tools.ozone.moderation.emitEvent', 18189 ToolsOzoneModerationGetAccountTimeline: 18190 'tools.ozone.moderation.getAccountTimeline', 18191 ToolsOzoneModerationGetEvent: 'tools.ozone.moderation.getEvent', 18192 ToolsOzoneModerationGetRecord: 'tools.ozone.moderation.getRecord', 18193 ToolsOzoneModerationGetRecords: 'tools.ozone.moderation.getRecords', 18194 ToolsOzoneModerationGetRepo: 'tools.ozone.moderation.getRepo', 18195 ToolsOzoneModerationGetReporterStats: 18196 'tools.ozone.moderation.getReporterStats', 18197 ToolsOzoneModerationGetRepos: 'tools.ozone.moderation.getRepos', 18198 ToolsOzoneModerationGetSubjects: 'tools.ozone.moderation.getSubjects', 18199 ToolsOzoneModerationQueryEvents: 'tools.ozone.moderation.queryEvents', 18200 ToolsOzoneModerationQueryStatuses: 'tools.ozone.moderation.queryStatuses', 18201 ToolsOzoneModerationSearchRepos: 'tools.ozone.moderation.searchRepos', 18202 ToolsOzoneSafelinkAddRule: 'tools.ozone.safelink.addRule', 18203 ToolsOzoneSafelinkDefs: 'tools.ozone.safelink.defs', 18204 ToolsOzoneSafelinkQueryEvents: 'tools.ozone.safelink.queryEvents', 18205 ToolsOzoneSafelinkQueryRules: 'tools.ozone.safelink.queryRules', 18206 ToolsOzoneSafelinkRemoveRule: 'tools.ozone.safelink.removeRule', 18207 ToolsOzoneSafelinkUpdateRule: 'tools.ozone.safelink.updateRule', 18208 ToolsOzoneServerGetConfig: 'tools.ozone.server.getConfig', 18209 ToolsOzoneSetAddValues: 'tools.ozone.set.addValues', 18210 ToolsOzoneSetDefs: 'tools.ozone.set.defs', 18211 ToolsOzoneSetDeleteSet: 'tools.ozone.set.deleteSet', 18212 ToolsOzoneSetDeleteValues: 'tools.ozone.set.deleteValues', 18213 ToolsOzoneSetGetValues: 'tools.ozone.set.getValues', 18214 ToolsOzoneSetQuerySets: 'tools.ozone.set.querySets', 18215 ToolsOzoneSetUpsertSet: 'tools.ozone.set.upsertSet', 18216 ToolsOzoneSettingDefs: 'tools.ozone.setting.defs', 18217 ToolsOzoneSettingListOptions: 'tools.ozone.setting.listOptions', 18218 ToolsOzoneSettingRemoveOptions: 'tools.ozone.setting.removeOptions', 18219 ToolsOzoneSettingUpsertOption: 'tools.ozone.setting.upsertOption', 18220 ToolsOzoneSignatureDefs: 'tools.ozone.signature.defs', 18221 ToolsOzoneSignatureFindCorrelation: 'tools.ozone.signature.findCorrelation', 18222 ToolsOzoneSignatureFindRelatedAccounts: 18223 'tools.ozone.signature.findRelatedAccounts', 18224 ToolsOzoneSignatureSearchAccounts: 'tools.ozone.signature.searchAccounts', 18225 ToolsOzoneTeamAddMember: 'tools.ozone.team.addMember', 18226 ToolsOzoneTeamDefs: 'tools.ozone.team.defs', 18227 ToolsOzoneTeamDeleteMember: 'tools.ozone.team.deleteMember', 18228 ToolsOzoneTeamListMembers: 'tools.ozone.team.listMembers', 18229 ToolsOzoneTeamUpdateMember: 'tools.ozone.team.updateMember', 18230 ToolsOzoneVerificationDefs: 'tools.ozone.verification.defs', 18231 ToolsOzoneVerificationGrantVerifications: 18232 'tools.ozone.verification.grantVerifications', 18233 ToolsOzoneVerificationListVerifications: 18234 'tools.ozone.verification.listVerifications', 18235 ToolsOzoneVerificationRevokeVerifications: 18236 'tools.ozone.verification.revokeVerifications', 18237} as const