[READ ONLY MIRROR] Spark Social AppView Server github.com/sprksocial/server
atproto deno hono lexicon
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: update bsky & atproto lexicon

+1781 -15
+63 -2
lexicons/app/bsky/actor/defs.json
··· 149 149 "activitySubscription": { 150 150 "type": "ref", 151 151 "ref": "#profileAssociatedActivitySubscription" 152 - } 152 + }, 153 + "germ": { "type": "ref", "ref": "#profileAssociatedGerm" } 153 154 } 154 155 }, 155 156 "profileAssociatedChat": { ··· 159 160 "allowIncoming": { 160 161 "type": "string", 161 162 "knownValues": ["all", "none", "following"] 163 + } 164 + } 165 + }, 166 + "profileAssociatedGerm": { 167 + "type": "object", 168 + "required": ["showButtonTo", "messageMeUrl"], 169 + "properties": { 170 + "messageMeUrl": { 171 + "type": "string", 172 + "format": "uri" 173 + }, 174 + "showButtonTo": { 175 + "type": "string", 176 + "knownValues": ["usersIFollow", "everyone"] 162 177 } 163 178 } 164 179 }, ··· 276 291 "#savedFeedsPref", 277 292 "#savedFeedsPrefV2", 278 293 "#personalDetailsPref", 294 + "#declaredAgePref", 279 295 "#feedViewPref", 280 296 "#threadViewPref", 281 297 "#interestsPref", ··· 284 300 "#bskyAppStatePref", 285 301 "#labelersPref", 286 302 "#postInteractionSettingsPref", 287 - "#verificationPrefs" 303 + "#verificationPrefs", 304 + "#liveEventPreferences" 288 305 ] 289 306 } 290 307 }, ··· 376 393 } 377 394 } 378 395 }, 396 + "declaredAgePref": { 397 + "type": "object", 398 + "description": "Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration.", 399 + "properties": { 400 + "isOverAge13": { 401 + "type": "boolean", 402 + "description": "Indicates if the user has declared that they are over 13 years of age." 403 + }, 404 + "isOverAge16": { 405 + "type": "boolean", 406 + "description": "Indicates if the user has declared that they are over 16 years of age." 407 + }, 408 + "isOverAge18": { 409 + "type": "boolean", 410 + "description": "Indicates if the user has declared that they are over 18 years of age." 411 + } 412 + } 413 + }, 379 414 "feedViewPref": { 380 415 "type": "object", 381 416 "required": ["feed"], ··· 587 622 } 588 623 } 589 624 }, 625 + "liveEventPreferences": { 626 + "type": "object", 627 + "description": "Preferences for live events.", 628 + "properties": { 629 + "hiddenFeedIds": { 630 + "description": "A list of feed IDs that the user has hidden from live events.", 631 + "type": "array", 632 + "items": { "type": "string" } 633 + }, 634 + "hideAllFeeds": { 635 + "description": "Whether to hide all feeds from live events.", 636 + "type": "boolean", 637 + "default": false 638 + } 639 + } 640 + }, 590 641 "postInteractionSettingsPref": { 591 642 "type": "object", 592 643 "description": "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.", ··· 621 672 "type": "object", 622 673 "required": ["status", "record"], 623 674 "properties": { 675 + "uri": { "type": "string", "format": "at-uri" }, 676 + "cid": { "type": "string", "format": "cid" }, 624 677 "status": { 625 678 "type": "string", 626 679 "description": "The status for the account.", ··· 632 685 "description": "An optional embed associated with the status.", 633 686 "refs": ["app.bsky.embed.external#view"] 634 687 }, 688 + "labels": { 689 + "type": "array", 690 + "items": { "type": "ref", "ref": "com.atproto.label.defs#label" } 691 + }, 635 692 "expiresAt": { 636 693 "type": "string", 637 694 "description": "The date when this status will expire. The application might choose to no longer return the status after expiration.", ··· 640 697 "isActive": { 641 698 "type": "boolean", 642 699 "description": "True if the status is not expired, false if it is expired. Only present if expiration was set." 700 + }, 701 + "isDisabled": { 702 + "type": "boolean", 703 + "description": "True if the user's go-live access has been disabled by a moderator, false otherwise." 643 704 } 644 705 } 645 706 }
+4
lexicons/app/bsky/actor/getSuggestions.json
··· 33 33 }, 34 34 "recId": { 35 35 "type": "integer", 36 + "description": "DEPRECATED: use recIdStr instead." 37 + }, 38 + "recIdStr": { 39 + "type": "string", 36 40 "description": "Snowflake for this recommendation, use when submitting recommendation events." 37 41 } 38 42 }
+5 -1
lexicons/app/bsky/ageassurance/defs.json
··· 62 62 "configRegion": { 63 63 "type": "object", 64 64 "description": "The Age Assurance configuration for a specific region.", 65 - "required": ["countryCode", "rules"], 65 + "required": ["countryCode", "minAccessAge", "rules"], 66 66 "properties": { 67 67 "countryCode": { 68 68 "type": "string", ··· 71 71 "regionCode": { 72 72 "type": "string", 73 73 "description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country." 74 + }, 75 + "minAccessAge": { 76 + "type": "integer", 77 + "description": "The minimum age (as a whole integer) required to use Bluesky in this region." 74 78 }, 75 79 "rules": { 76 80 "type": "array",
+35
lexicons/app/bsky/authCreatePosts.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authCreatePosts", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Create Bluesky Posts", 8 + "title:lang": {}, 9 + "detail": "Can not update or delete posts.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "rpc", 15 + "inheritAud": true, 16 + "lxm": [ 17 + "app.bsky.video.uploadVideo", 18 + "app.bsky.video.getJobStatus", 19 + "app.bsky.video.getUploadLimits" 20 + ] 21 + }, 22 + { 23 + "type": "permission", 24 + "resource": "repo", 25 + "action": ["create"], 26 + "collection": [ 27 + "app.bsky.feed.post", 28 + "app.bsky.feed.postgate", 29 + "app.bsky.feed.threadgate" 30 + ] 31 + } 32 + ] 33 + } 34 + } 35 + }
+27
lexicons/app/bsky/authDeleteContent.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authDeleteContent", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Delete Bluesky Content", 8 + "title:lang": {}, 9 + "detail": "Clean up public account history: posts, reposts, and likes.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "repo", 15 + "action": ["delete"], 16 + "collection": [ 17 + "app.bsky.feed.like", 18 + "app.bsky.feed.post", 19 + "app.bsky.feed.postgate", 20 + "app.bsky.feed.repost", 21 + "app.bsky.feed.threadgate" 22 + ] 23 + } 24 + ] 25 + } 26 + } 27 + }
+136
lexicons/app/bsky/authFullApp.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authFullApp", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Full Bluesky Social App Permissions", 8 + "title:lang": {}, 9 + "detail": "Manage all public content and interactions, private preferences and subscriptions, and other Bluesky-specific app features and data.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "rpc", 15 + "inheritAud": true, 16 + "lxm": [ 17 + "app.bsky.actor.getPreferences", 18 + "app.bsky.actor.getProfile", 19 + "app.bsky.actor.getProfiles", 20 + "app.bsky.actor.getSuggestions", 21 + "app.bsky.actor.putPreferences", 22 + "app.bsky.actor.searchActors", 23 + "app.bsky.actor.searchActorsTypeahead", 24 + "app.bsky.bookmark.createBookmark", 25 + "app.bsky.bookmark.deleteBookmark", 26 + "app.bsky.bookmark.getBookmarks", 27 + "app.bsky.contact.dismissMatch", 28 + "app.bsky.contact.getMatches", 29 + "app.bsky.contact.getSyncStatus", 30 + "app.bsky.contact.importContacts", 31 + "app.bsky.contact.removeData", 32 + "app.bsky.contact.startPhoneVerification", 33 + "app.bsky.contact.verifyPhone", 34 + "app.bsky.feed.describeFeedGenerator", 35 + "app.bsky.feed.getActorFeeds", 36 + "app.bsky.feed.getActorLikes", 37 + "app.bsky.feed.getAuthorFeed", 38 + "app.bsky.feed.getFeed", 39 + "app.bsky.feed.getFeedGenerator", 40 + "app.bsky.feed.getFeedGenerators", 41 + "app.bsky.feed.getFeedSkeleton", 42 + "app.bsky.feed.getLikes", 43 + "app.bsky.feed.getListFeed", 44 + "app.bsky.feed.getPostThread", 45 + "app.bsky.feed.getPosts", 46 + "app.bsky.feed.getQuotes", 47 + "app.bsky.feed.getRepostedBy", 48 + "app.bsky.feed.getSuggestedFeeds", 49 + "app.bsky.feed.getTimeline", 50 + "app.bsky.feed.searchPosts", 51 + "app.bsky.feed.sendInteractions", 52 + "app.bsky.graph.getActorStarterPacks", 53 + "app.bsky.graph.getBlocks", 54 + "app.bsky.graph.getFollowers", 55 + "app.bsky.graph.getFollows", 56 + "app.bsky.graph.getKnownFollowers", 57 + "app.bsky.graph.getList", 58 + "app.bsky.graph.getListBlocks", 59 + "app.bsky.graph.getListMutes", 60 + "app.bsky.graph.getLists", 61 + "app.bsky.graph.getListsWithMembership", 62 + "app.bsky.graph.getMutes", 63 + "app.bsky.graph.getRelationships", 64 + "app.bsky.graph.getStarterPack", 65 + "app.bsky.graph.getStarterPacks", 66 + "app.bsky.graph.getStarterPacksWithMembership", 67 + "app.bsky.graph.getSuggestedFollowsByActor", 68 + "app.bsky.graph.muteActor", 69 + "app.bsky.graph.muteActorList", 70 + "app.bsky.graph.muteThread", 71 + "app.bsky.graph.searchStarterPacks", 72 + "app.bsky.graph.unmuteActor", 73 + "app.bsky.graph.unmuteActorList", 74 + "app.bsky.graph.unmuteThread", 75 + "app.bsky.labeler.getServices", 76 + "app.bsky.notification.getPreferences", 77 + "app.bsky.notification.getUnreadCount", 78 + "app.bsky.notification.listActivitySubscriptions", 79 + "app.bsky.notification.listNotifications", 80 + "app.bsky.notification.putActivitySubscription", 81 + "app.bsky.notification.putPreferences", 82 + "app.bsky.notification.putPreferencesV2", 83 + "app.bsky.notification.registerPush", 84 + "app.bsky.notification.unregisterPush", 85 + "app.bsky.notification.updateSeen", 86 + "app.bsky.unspecced.getAgeAssuranceState", 87 + "app.bsky.unspecced.getConfig", 88 + "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", 89 + "app.bsky.unspecced.getPopularFeedGenerators", 90 + "app.bsky.unspecced.getPostThreadOtherV2", 91 + "app.bsky.unspecced.getPostThreadV2", 92 + "app.bsky.unspecced.getSuggestedFeeds", 93 + "app.bsky.unspecced.getSuggestedFeedsSkeleton", 94 + "app.bsky.unspecced.getSuggestedStarterPacks", 95 + "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", 96 + "app.bsky.unspecced.getSuggestedUsers", 97 + "app.bsky.unspecced.getSuggestedUsersSkeleton", 98 + "app.bsky.unspecced.getSuggestionsSkeleton", 99 + "app.bsky.unspecced.getTaggedSuggestions", 100 + "app.bsky.unspecced.getTrendingTopics", 101 + "app.bsky.unspecced.getTrends", 102 + "app.bsky.unspecced.getTrendsSkeleton", 103 + "app.bsky.unspecced.initAgeAssurance", 104 + "app.bsky.unspecced.searchActorsSkeleton", 105 + "app.bsky.unspecced.searchPostsSkeleton", 106 + "app.bsky.unspecced.searchStarterPacksSkeleton", 107 + "app.bsky.video.getJobStatus", 108 + "app.bsky.video.getUploadLimits", 109 + "app.bsky.video.uploadVideo" 110 + ] 111 + }, 112 + { 113 + "type": "permission", 114 + "resource": "repo", 115 + "action": ["create", "update", "delete"], 116 + "collection": [ 117 + "app.bsky.actor.profile", 118 + "app.bsky.actor.status", 119 + "app.bsky.feed.like", 120 + "app.bsky.feed.post", 121 + "app.bsky.feed.postgate", 122 + "app.bsky.feed.repost", 123 + "app.bsky.feed.threadgate", 124 + "app.bsky.graph.block", 125 + "app.bsky.graph.follow", 126 + "app.bsky.graph.list", 127 + "app.bsky.graph.listblock", 128 + "app.bsky.graph.listitem", 129 + "app.bsky.graph.starterpack", 130 + "app.bsky.notification.declaration" 131 + ] 132 + } 133 + ] 134 + } 135 + } 136 + }
+21
lexicons/app/bsky/authManageFeedDeclarations.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authManageFeedDeclarations", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Manage Hosted Feeds", 8 + "title:lang": {}, 9 + "detail": "Configure feed generator declaration records.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "repo", 15 + "action": ["create", "update", "delete"], 16 + "collection": ["app.bsky.feed.generator"] 17 + } 18 + ] 19 + } 20 + } 21 + }
+21
lexicons/app/bsky/authManageLabelerService.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authManageLabelerService", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Manage Hosted Labeling Service", 8 + "title:lang": {}, 9 + "detail": "Configure labeler declaration records.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "repo", 15 + "action": ["create", "update", "delete"], 16 + "collection": ["app.bsky.labeler.service"] 17 + } 18 + ] 19 + } 20 + } 21 + }
+36
lexicons/app/bsky/authManageModeration.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authManageModeration", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Manage Personal Moderation", 8 + "title:lang": {}, 9 + "detail": "Control over blocks, mutes, mod lists, mod services, and preferences.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "rpc", 15 + "inheritAud": true, 16 + "lxm": [ 17 + "app.bsky.actor.getPreferences", 18 + "app.bsky.actor.putPreferences", 19 + "app.bsky.graph.muteActor", 20 + "app.bsky.graph.muteActorList", 21 + "app.bsky.graph.muteThread", 22 + "app.bsky.graph.unmuteActor", 23 + "app.bsky.graph.unmuteActorList", 24 + "app.bsky.graph.unmuteThread" 25 + ] 26 + }, 27 + { 28 + "type": "permission", 29 + "resource": "repo", 30 + "action": ["create", "update", "delete"], 31 + "collection": ["app.bsky.graph.block", "app.bsky.graph.listblock"] 32 + } 33 + ] 34 + } 35 + } 36 + }
+32
lexicons/app/bsky/authManageNotifications.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authManageNotifications", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Manage Bluesky Notifications", 8 + "title:lang": {}, 9 + "detail": "View and configure notifications for the Bluesky app.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "rpc", 15 + "inheritAud": true, 16 + "lxm": [ 17 + "app.bsky.notification.getPreferences", 18 + "app.bsky.notification.getUnreadCount", 19 + "app.bsky.notification.listActivitySubscriptions", 20 + "app.bsky.notification.listNotifications", 21 + "app.bsky.notification.putActivitySubscription", 22 + "app.bsky.notification.putPreferences", 23 + "app.bsky.notification.putPreferencesV2", 24 + "app.bsky.notification.registerPush", 25 + "app.bsky.notification.unregisterPush", 26 + "app.bsky.notification.updateSeen" 27 + ] 28 + } 29 + ] 30 + } 31 + } 32 + }
+25
lexicons/app/bsky/authManageProfile.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authManageProfile", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Manage Bluesky Profile", 8 + "title:lang": {}, 9 + "detail": "Update profile data, as well as status and public chat visibility.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "repo", 15 + "action": ["create", "update", "delete"], 16 + "collection": [ 17 + "app.bsky.actor.profile", 18 + "app.bsky.actor.status", 19 + "app.bsky.notification.declaration" 20 + ] 21 + } 22 + ] 23 + } 24 + } 25 + }
+89
lexicons/app/bsky/authViewAll.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.authViewAll", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Read-only access to all content", 8 + "title:lang": {}, 9 + "detail": "View Bluesky network content from account perspective, and read all notifications and preferences.", 10 + "detail:lang": {}, 11 + "permissions": [ 12 + { 13 + "type": "permission", 14 + "resource": "rpc", 15 + "inheritAud": true, 16 + "lxm": [ 17 + "app.bsky.actor.getPreferences", 18 + "app.bsky.actor.getProfile", 19 + "app.bsky.actor.getProfiles", 20 + "app.bsky.actor.getSuggestions", 21 + "app.bsky.actor.searchActors", 22 + "app.bsky.actor.searchActorsTypeahead", 23 + "app.bsky.bookmark.getBookmarks", 24 + "app.bsky.feed.describeFeedGenerator", 25 + "app.bsky.feed.getActorFeeds", 26 + "app.bsky.feed.getActorLikes", 27 + "app.bsky.feed.getAuthorFeed", 28 + "app.bsky.feed.getFeed", 29 + "app.bsky.feed.getFeedGenerator", 30 + "app.bsky.feed.getFeedGenerators", 31 + "app.bsky.feed.getFeedSkeleton", 32 + "app.bsky.feed.getLikes", 33 + "app.bsky.feed.getListFeed", 34 + "app.bsky.feed.getPostThread", 35 + "app.bsky.feed.getPosts", 36 + "app.bsky.feed.getQuotes", 37 + "app.bsky.feed.getRepostedBy", 38 + "app.bsky.feed.getSuggestedFeeds", 39 + "app.bsky.feed.getTimeline", 40 + "app.bsky.feed.searchPosts", 41 + "app.bsky.graph.getActorStarterPacks", 42 + "app.bsky.graph.getBlocks", 43 + "app.bsky.graph.getFollowers", 44 + "app.bsky.graph.getFollows", 45 + "app.bsky.graph.getKnownFollowers", 46 + "app.bsky.graph.getListBlocks", 47 + "app.bsky.graph.getListMutes", 48 + "app.bsky.graph.getLists", 49 + "app.bsky.graph.getListsWithMembership", 50 + "app.bsky.graph.getMutes", 51 + "app.bsky.graph.getRelationships", 52 + "app.bsky.graph.getStarterPack", 53 + "app.bsky.graph.getStarterPacks", 54 + "app.bsky.graph.getStarterPacksWithMembership", 55 + "app.bsky.graph.getSuggestedFollowsByActor", 56 + "app.bsky.graph.searchStarterPacks", 57 + "app.bsky.labeler.getServices", 58 + "app.bsky.notification.getPreferences", 59 + "app.bsky.notification.getUnreadCount", 60 + "app.bsky.notification.listActivitySubscriptions", 61 + "app.bsky.notification.listNotifications", 62 + "app.bsky.notification.updateSeen", 63 + "app.bsky.unspecced.getAgeAssuranceState", 64 + "app.bsky.unspecced.getConfig", 65 + "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", 66 + "app.bsky.unspecced.getPopularFeedGenerators", 67 + "app.bsky.unspecced.getPostThreadOtherV2", 68 + "app.bsky.unspecced.getPostThreadV2", 69 + "app.bsky.unspecced.getSuggestedFeeds", 70 + "app.bsky.unspecced.getSuggestedFeedsSkeleton", 71 + "app.bsky.unspecced.getSuggestedStarterPacks", 72 + "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", 73 + "app.bsky.unspecced.getSuggestedUsers", 74 + "app.bsky.unspecced.getSuggestedUsersSkeleton", 75 + "app.bsky.unspecced.getSuggestionsSkeleton", 76 + "app.bsky.unspecced.getTaggedSuggestions", 77 + "app.bsky.unspecced.getTrendingTopics", 78 + "app.bsky.unspecced.getTrends", 79 + "app.bsky.unspecced.getTrendsSkeleton", 80 + "app.bsky.unspecced.searchActorsSkeleton", 81 + "app.bsky.unspecced.searchPostsSkeleton", 82 + "app.bsky.unspecced.searchStarterPacksSkeleton", 83 + "app.bsky.video.getUploadLimits" 84 + ] 85 + } 86 + ] 87 + } 88 + } 89 + }
+57
lexicons/app/bsky/contact/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.defs", 4 + "defs": { 5 + "matchAndContactIndex": { 6 + "description": "Associates a profile with the positional index of the contact import input in the call to `app.bsky.contact.importContacts`, so clients can know which phone caused a particular match.", 7 + "type": "object", 8 + "required": ["match", "contactIndex"], 9 + "properties": { 10 + "match": { 11 + "description": "Profile of the matched user.", 12 + "type": "ref", 13 + "ref": "app.bsky.actor.defs#profileView" 14 + }, 15 + "contactIndex": { 16 + "description": "The index of this match in the import contact input.", 17 + "type": "integer", 18 + "minimum": 0, 19 + "maximum": 999 20 + } 21 + } 22 + }, 23 + "syncStatus": { 24 + "type": "object", 25 + "required": ["syncedAt", "matchesCount"], 26 + "properties": { 27 + "syncedAt": { 28 + "description": "Last date when contacts where imported.", 29 + "type": "string", 30 + "format": "datetime" 31 + }, 32 + "matchesCount": { 33 + "description": "Number of existing contact matches resulting of the user imports and of their imported contacts having imported the user. Matches stop being counted when the user either follows the matched contact or dismisses the match.", 34 + "type": "integer", 35 + "minimum": 0 36 + } 37 + } 38 + }, 39 + "notification": { 40 + "description": "A stash object to be sent via bsync representing a notification to be created.", 41 + "type": "object", 42 + "required": ["from", "to"], 43 + "properties": { 44 + "from": { 45 + "description": "The DID of who this notification comes from.", 46 + "type": "string", 47 + "format": "did" 48 + }, 49 + "to": { 50 + "description": "The DID of who this notification should go to.", 51 + "type": "string", 52 + "format": "did" 53 + } 54 + } 55 + } 56 + } 57 + }
+39
lexicons/app/bsky/contact/dismissMatch.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.dismissMatch", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Removes a match that was found via contact import. It shouldn't appear again if the same contact is re-imported. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["subject"], 13 + "properties": { 14 + "subject": { 15 + "description": "The subject's DID to dismiss the match with.", 16 + "type": "string", 17 + "format": "did" 18 + } 19 + } 20 + } 21 + }, 22 + "output": { 23 + "encoding": "application/json", 24 + "schema": { 25 + "type": "object", 26 + "properties": {} 27 + } 28 + }, 29 + "errors": [ 30 + { 31 + "name": "InvalidDid" 32 + }, 33 + { 34 + "name": "InternalError" 35 + } 36 + ] 37 + } 38 + } 39 + }
+53
lexicons/app/bsky/contact/getMatches.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.getMatches", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Returns the matched contacts (contacts that were mutually imported). Excludes dismissed matches. Requires authentication.", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "limit": { 12 + "type": "integer", 13 + "minimum": 1, 14 + "maximum": 100, 15 + "default": 50 16 + }, 17 + "cursor": { "type": "string" } 18 + } 19 + }, 20 + "output": { 21 + "encoding": "application/json", 22 + "schema": { 23 + "type": "object", 24 + "required": ["matches"], 25 + "properties": { 26 + "cursor": { "type": "string" }, 27 + "matches": { 28 + "type": "array", 29 + "items": { 30 + "type": "ref", 31 + "ref": "app.bsky.actor.defs#profileView" 32 + } 33 + } 34 + } 35 + } 36 + }, 37 + "errors": [ 38 + { 39 + "name": "InvalidDid" 40 + }, 41 + { 42 + "name": "InvalidLimit" 43 + }, 44 + { 45 + "name": "InvalidCursor" 46 + }, 47 + { 48 + "name": "InternalError" 49 + } 50 + ] 51 + } 52 + } 53 + }
+35
lexicons/app/bsky/contact/getSyncStatus.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.getSyncStatus", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Gets the user's current contact import status. Requires authentication.", 8 + "parameters": { 9 + "type": "params", 10 + "properties": {} 11 + }, 12 + "output": { 13 + "encoding": "application/json", 14 + "schema": { 15 + "type": "object", 16 + "properties": { 17 + "syncStatus": { 18 + "description": "If present, indicates the user has imported their contacts. If not present, indicates the user never used the feature or called `app.bsky.contact.removeData` and didn't import again since.", 19 + "type": "ref", 20 + "ref": "app.bsky.contact.defs#syncStatus" 21 + } 22 + } 23 + } 24 + }, 25 + "errors": [ 26 + { 27 + "name": "InvalidDid" 28 + }, 29 + { 30 + "name": "InternalError" 31 + } 32 + ] 33 + } 34 + } 35 + }
+66
lexicons/app/bsky/contact/importContacts.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.importContacts", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Import contacts for securely matching with other users. This follows the protocol explained in https://docs.bsky.app/blog/contact-import-rfc. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["token", "contacts"], 13 + "properties": { 14 + "token": { 15 + "description": "JWT to authenticate the call. Use the JWT received as a response to the call to `app.bsky.contact.verifyPhone`.", 16 + "type": "string" 17 + }, 18 + "contacts": { 19 + "description": "List of phone numbers in global E.164 format (e.g., '+12125550123'). Phone numbers that cannot be normalized into a valid phone number will be discarded. Should not repeat the 'phone' input used in `app.bsky.contact.verifyPhone`.", 20 + "type": "array", 21 + "items": { 22 + "type": "string" 23 + }, 24 + "minLength": 1, 25 + "maxLength": 1000 26 + } 27 + } 28 + } 29 + }, 30 + "output": { 31 + "encoding": "application/json", 32 + "schema": { 33 + "type": "object", 34 + "required": ["matchesAndContactIndexes"], 35 + "properties": { 36 + "matchesAndContactIndexes": { 37 + "description": "The users that matched during import and their indexes on the input contacts, so the client can correlate with its local list.", 38 + "type": "array", 39 + "items": { 40 + "type": "ref", 41 + "ref": "app.bsky.contact.defs#matchAndContactIndex" 42 + } 43 + } 44 + } 45 + } 46 + }, 47 + "errors": [ 48 + { 49 + "name": "InvalidDid" 50 + }, 51 + { 52 + "name": "InvalidContacts" 53 + }, 54 + { 55 + "name": "TooManyContacts" 56 + }, 57 + { 58 + "name": "InvalidToken" 59 + }, 60 + { 61 + "name": "InternalError" 62 + } 63 + ] 64 + } 65 + } 66 + }
+32
lexicons/app/bsky/contact/removeData.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.removeData", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Removes all stored hashes used for contact matching, existing matches, and sync status. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "properties": {} 13 + } 14 + }, 15 + "output": { 16 + "encoding": "application/json", 17 + "schema": { 18 + "type": "object", 19 + "properties": {} 20 + } 21 + }, 22 + "errors": [ 23 + { 24 + "name": "InvalidDid" 25 + }, 26 + { 27 + "name": "InternalError" 28 + } 29 + ] 30 + } 31 + } 32 + }
+36
lexicons/app/bsky/contact/sendNotification.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.sendNotification", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "System endpoint to send notifications related to contact imports. Requires role authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["from", "to"], 13 + "properties": { 14 + "from": { 15 + "description": "The DID of who this notification comes from.", 16 + "type": "string", 17 + "format": "did" 18 + }, 19 + "to": { 20 + "description": "The DID of who this notification should go to.", 21 + "type": "string", 22 + "format": "did" 23 + } 24 + } 25 + } 26 + }, 27 + "output": { 28 + "encoding": "application/json", 29 + "schema": { 30 + "type": "object", 31 + "properties": {} 32 + } 33 + } 34 + } 35 + } 36 + }
+44
lexicons/app/bsky/contact/startPhoneVerification.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.startPhoneVerification", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Starts a phone verification flow. The phone passed will receive a code via SMS that should be passed to `app.bsky.contact.verifyPhone`. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["phone"], 13 + "properties": { 14 + "phone": { 15 + "description": "The phone number to receive the code via SMS.", 16 + "type": "string" 17 + } 18 + } 19 + } 20 + }, 21 + "output": { 22 + "encoding": "application/json", 23 + "schema": { 24 + "type": "object", 25 + "properties": {} 26 + } 27 + }, 28 + "errors": [ 29 + { 30 + "name": "RateLimitExceeded" 31 + }, 32 + { 33 + "name": "InvalidDid" 34 + }, 35 + { 36 + "name": "InvalidPhone" 37 + }, 38 + { 39 + "name": "InternalError" 40 + } 41 + ] 42 + } 43 + } 44 + }
+57
lexicons/app/bsky/contact/verifyPhone.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.contact.verifyPhone", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Verifies control over a phone number with a code received via SMS and starts a contact import session. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["phone", "code"], 13 + "properties": { 14 + "phone": { 15 + "description": "The phone number to verify. Should be the same as the one passed to `app.bsky.contact.startPhoneVerification`.", 16 + "type": "string" 17 + }, 18 + "code": { 19 + "description": "The code received via SMS as a result of the call to `app.bsky.contact.startPhoneVerification`.", 20 + "type": "string" 21 + } 22 + } 23 + } 24 + }, 25 + "output": { 26 + "encoding": "application/json", 27 + "schema": { 28 + "type": "object", 29 + "required": ["token"], 30 + "properties": { 31 + "token": { 32 + "description": "JWT to be used in a call to `app.bsky.contact.importContacts`. It is only valid for a single call.", 33 + "type": "string" 34 + } 35 + } 36 + } 37 + }, 38 + "errors": [ 39 + { 40 + "name": "RateLimitExceeded" 41 + }, 42 + { 43 + "name": "InvalidDid" 44 + }, 45 + { 46 + "name": "InvalidPhone" 47 + }, 48 + { 49 + "name": "InvalidCode" 50 + }, 51 + { 52 + "name": "InternalError" 53 + } 54 + ] 55 + } 56 + } 57 + }
+42
lexicons/app/bsky/draft/createDraft.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.draft.createDraft", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Inserts a draft using private storage (stash). An upper limit of drafts might be enforced. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["draft"], 13 + "properties": { 14 + "draft": { 15 + "type": "ref", 16 + "ref": "app.bsky.draft.defs#draft" 17 + } 18 + } 19 + } 20 + }, 21 + "output": { 22 + "encoding": "application/json", 23 + "schema": { 24 + "type": "object", 25 + "required": ["id"], 26 + "properties": { 27 + "id": { 28 + "type": "string", 29 + "description": "The ID of the created draft." 30 + } 31 + } 32 + } 33 + }, 34 + "errors": [ 35 + { 36 + "name": "DraftLimitReached", 37 + "description": "Trying to insert a new draft when the limit was already reached." 38 + } 39 + ] 40 + } 41 + } 42 + }
+221
lexicons/app/bsky/draft/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.draft.defs", 4 + "defs": { 5 + "draftWithId": { 6 + "description": "A draft with an identifier, used to store drafts in private storage (stash).", 7 + "type": "object", 8 + "required": ["id", "draft"], 9 + "properties": { 10 + "id": { 11 + "description": "A TID to be used as a draft identifier.", 12 + "type": "string", 13 + "format": "tid" 14 + }, 15 + "draft": { 16 + "type": "ref", 17 + "ref": "#draft" 18 + } 19 + } 20 + }, 21 + "draft": { 22 + "description": "A draft containing an array of draft posts.", 23 + "type": "object", 24 + "required": ["posts"], 25 + "properties": { 26 + "deviceId": { 27 + "type": "string", 28 + "description": "UUIDv4 identifier of the device that created this draft.", 29 + "maxLength": 100 30 + }, 31 + "deviceName": { 32 + "type": "string", 33 + "description": "The device and/or platform on which the draft was created.", 34 + "maxLength": 100 35 + }, 36 + "posts": { 37 + "description": "Array of draft posts that compose this draft.", 38 + "type": "array", 39 + "minLength": 1, 40 + "maxLength": 100, 41 + "items": { 42 + "type": "ref", 43 + "ref": "#draftPost" 44 + } 45 + }, 46 + "langs": { 47 + "type": "array", 48 + "description": "Indicates human language of posts primary text content.", 49 + "maxLength": 3, 50 + "items": { "type": "string", "format": "language" } 51 + }, 52 + "postgateEmbeddingRules": { 53 + "description": "Embedding rules for the postgates to be created when this draft is published.", 54 + "type": "array", 55 + "maxLength": 5, 56 + "items": { 57 + "type": "union", 58 + "refs": ["app.bsky.feed.postgate#disableRule"] 59 + } 60 + }, 61 + "threadgateAllow": { 62 + "description": "Allow-rules for the threadgate to be created when this draft is published.", 63 + "type": "array", 64 + "maxLength": 5, 65 + "items": { 66 + "type": "union", 67 + "refs": [ 68 + "app.bsky.feed.threadgate#mentionRule", 69 + "app.bsky.feed.threadgate#followerRule", 70 + "app.bsky.feed.threadgate#followingRule", 71 + "app.bsky.feed.threadgate#listRule" 72 + ] 73 + } 74 + } 75 + } 76 + }, 77 + "draftPost": { 78 + "description": "One of the posts that compose a draft.", 79 + "type": "object", 80 + "required": ["text"], 81 + "properties": { 82 + "text": { 83 + "type": "string", 84 + "maxLength": 10000, 85 + "maxGraphemes": 1000, 86 + "description": "The primary post content. It has a higher limit than post contents to allow storing a larger text that can later be refined into smaller posts." 87 + }, 88 + "labels": { 89 + "type": "union", 90 + "description": "Self-label values for this post. Effectively content warnings.", 91 + "refs": ["com.atproto.label.defs#selfLabels"] 92 + }, 93 + "embedImages": { 94 + "type": "array", 95 + "items": { "type": "ref", "ref": "#draftEmbedImage" }, 96 + "maxLength": 4 97 + }, 98 + "embedVideos": { 99 + "type": "array", 100 + "items": { "type": "ref", "ref": "#draftEmbedVideo" }, 101 + "maxLength": 1 102 + }, 103 + "embedExternals": { 104 + "type": "array", 105 + "items": { "type": "ref", "ref": "#draftEmbedExternal" }, 106 + "maxLength": 1 107 + }, 108 + "embedRecords": { 109 + "type": "array", 110 + "items": { "type": "ref", "ref": "#draftEmbedRecord" }, 111 + "maxLength": 1 112 + } 113 + } 114 + }, 115 + 116 + "draftView": { 117 + "description": "View to present drafts data to users.", 118 + "type": "object", 119 + "required": ["id", "draft", "createdAt", "updatedAt"], 120 + "properties": { 121 + "id": { 122 + "description": "A TID to be used as a draft identifier.", 123 + "type": "string", 124 + "format": "tid" 125 + }, 126 + "draft": { 127 + "type": "ref", 128 + "ref": "#draft" 129 + }, 130 + "createdAt": { 131 + "description": "The time the draft was created.", 132 + "type": "string", 133 + "format": "datetime" 134 + }, 135 + "updatedAt": { 136 + "description": "The time the draft was last updated.", 137 + "type": "string", 138 + "format": "datetime" 139 + } 140 + } 141 + }, 142 + 143 + "draftEmbedLocalRef": { 144 + "type": "object", 145 + "required": ["path"], 146 + "properties": { 147 + "path": { 148 + "type": "string", 149 + "description": "Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts.", 150 + "minLength": 1, 151 + "maxLength": 1024 152 + } 153 + } 154 + }, 155 + "draftEmbedCaption": { 156 + "type": "object", 157 + "required": ["lang", "content"], 158 + "properties": { 159 + "lang": { 160 + "type": "string", 161 + "format": "language" 162 + }, 163 + "content": { 164 + "type": "string", 165 + "maxLength": 10000 166 + } 167 + } 168 + }, 169 + 170 + "draftEmbedImage": { 171 + "type": "object", 172 + "required": ["localRef"], 173 + "properties": { 174 + "localRef": { 175 + "type": "ref", 176 + "ref": "#draftEmbedLocalRef" 177 + }, 178 + "alt": { 179 + "type": "string", 180 + "maxGraphemes": 2000 181 + } 182 + } 183 + }, 184 + "draftEmbedVideo": { 185 + "type": "object", 186 + "required": ["localRef"], 187 + "properties": { 188 + "localRef": { 189 + "type": "ref", 190 + "ref": "#draftEmbedLocalRef" 191 + }, 192 + "alt": { 193 + "type": "string", 194 + "maxGraphemes": 2000 195 + }, 196 + "captions": { 197 + "type": "array", 198 + "items": { 199 + "type": "ref", 200 + "ref": "#draftEmbedCaption" 201 + }, 202 + "maxLength": 20 203 + } 204 + } 205 + }, 206 + "draftEmbedExternal": { 207 + "type": "object", 208 + "required": ["uri"], 209 + "properties": { 210 + "uri": { "type": "string", "format": "uri" } 211 + } 212 + }, 213 + "draftEmbedRecord": { 214 + "type": "object", 215 + "required": ["record"], 216 + "properties": { 217 + "record": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 218 + } 219 + } 220 + } 221 + }
+23
lexicons/app/bsky/draft/deleteDraft.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.draft.deleteDraft", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Deletes a draft by ID. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["id"], 13 + "properties": { 14 + "id": { 15 + "type": "string", 16 + "format": "tid" 17 + } 18 + } 19 + } 20 + } 21 + } 22 + } 23 + }
+39
lexicons/app/bsky/draft/getDrafts.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.draft.getDrafts", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Gets views of user drafts. Requires authentication.", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "limit": { 12 + "type": "integer", 13 + "minimum": 1, 14 + "maximum": 100, 15 + "default": 50 16 + }, 17 + "cursor": { "type": "string" } 18 + } 19 + }, 20 + "output": { 21 + "encoding": "application/json", 22 + "schema": { 23 + "type": "object", 24 + "required": ["drafts"], 25 + "properties": { 26 + "cursor": { "type": "string" }, 27 + "drafts": { 28 + "type": "array", 29 + "items": { 30 + "type": "ref", 31 + "ref": "app.bsky.draft.defs#draftView" 32 + } 33 + } 34 + } 35 + } 36 + } 37 + } 38 + } 39 + }
+23
lexicons/app/bsky/draft/updateDraft.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.draft.updateDraft", 4 + "defs": { 5 + "main": { 6 + "type": "procedure", 7 + "description": "Updates a draft using private storage (stash). If the draft ID points to a non-existing ID, the update will be silently ignored. This is done because updates don't enforce draft limit, so it accepts all writes, but will ignore invalid ones. Requires authentication.", 8 + "input": { 9 + "encoding": "application/json", 10 + "schema": { 11 + "type": "object", 12 + "required": ["draft"], 13 + "properties": { 14 + "draft": { 15 + "type": "ref", 16 + "ref": "app.bsky.draft.defs#draftWithId" 17 + } 18 + } 19 + } 20 + } 21 + } 22 + } 23 + }
+2 -1
lexicons/app/bsky/embed/images.json
··· 20 20 "properties": { 21 21 "image": { 22 22 "type": "blob", 23 + "description": "The raw image file. May be up to 2 MB, formerly limited to 1 MB.", 23 24 "accept": ["image/*"], 24 - "maxSize": 1000000 25 + "maxSize": 2000000 25 26 }, 26 27 "alt": { 27 28 "type": "string",
+10
lexicons/app/bsky/embed/video.json
··· 27 27 "aspectRatio": { 28 28 "type": "ref", 29 29 "ref": "app.bsky.embed.defs#aspectRatio" 30 + }, 31 + "presentation": { 32 + "type": "string", 33 + "description": "A hint to the client about how to present the video.", 34 + "knownValues": ["default", "gif"] 30 35 } 31 36 } 32 37 }, ··· 60 65 "aspectRatio": { 61 66 "type": "ref", 62 67 "ref": "app.bsky.embed.defs#aspectRatio" 68 + }, 69 + "presentation": { 70 + "type": "string", 71 + "description": "A hint to the client about how to present the video.", 72 + "knownValues": ["default", "gif"] 63 73 } 64 74 } 65 75 }
+1
lexicons/app/bsky/feed/sendInteractions.json
··· 11 11 "type": "object", 12 12 "required": ["interactions"], 13 13 "properties": { 14 + "feed": { "type": "string", "format": "at-uri" }, 14 15 "interactions": { 15 16 "type": "array", 16 17 "items": {
+20
lexicons/app/bsky/graph/defs.json
··· 159 159 "type": "string", 160 160 "format": "at-uri", 161 161 "description": "if the actor is followed by this DID, contains the AT-URI of the follow record" 162 + }, 163 + "blocking": { 164 + "type": "string", 165 + "format": "at-uri", 166 + "description": "if the actor blocks this DID, this is the AT-URI of the block record" 167 + }, 168 + "blockedBy": { 169 + "type": "string", 170 + "format": "at-uri", 171 + "description": "if the actor is blocked by this DID, contains the AT-URI of the block record" 172 + }, 173 + "blockingByList": { 174 + "type": "string", 175 + "format": "at-uri", 176 + "description": "if the actor blocks this DID via a block list, this is the AT-URI of the listblock record" 177 + }, 178 + "blockedByList": { 179 + "type": "string", 180 + "format": "at-uri", 181 + "description": "if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record" 162 182 } 163 183 } 164 184 }
+6 -2
lexicons/app/bsky/graph/getSuggestedFollowsByActor.json
··· 25 25 "ref": "app.bsky.actor.defs#profileView" 26 26 } 27 27 }, 28 + "recIdStr": { 29 + "type": "string", 30 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 31 + }, 28 32 "isFallback": { 29 33 "type": "boolean", 30 - "description": "If true, response has fallen-back to generic results, and is not scoped using relativeToDid", 34 + "description": "DEPRECATED, unused. Previously: if true, response has fallen-back to generic results, and is not scoped using relativeToDid", 31 35 "default": false 32 36 }, 33 37 "recId": { 34 38 "type": "integer", 35 - "description": "Snowflake for this recommendation, use when submitting recommendation events." 39 + "description": "DEPRECATED: use recIdStr instead." 36 40 } 37 41 } 38 42 }
+2 -1
lexicons/app/bsky/notification/listNotifications.json
··· 74 74 "unverified", 75 75 "like-via-repost", 76 76 "repost-via-repost", 77 - "subscribed-post" 77 + "subscribed-post", 78 + "contact-match" 78 79 ] 79 80 }, 80 81 "reasonSubject": { "type": "string", "format": "at-uri" },
+54
lexicons/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a skeleton of suggested users for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedOnboardingUsers", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "viewer": { 12 + "type": "string", 13 + "format": "did", 14 + "description": "DID of the account making the request (not included for public/unauthenticated queries)." 15 + }, 16 + "category": { 17 + "type": "string", 18 + "description": "Category of users to get suggestions for." 19 + }, 20 + "limit": { 21 + "type": "integer", 22 + "minimum": 1, 23 + "maximum": 50, 24 + "default": 25 25 + } 26 + } 27 + }, 28 + "output": { 29 + "encoding": "application/json", 30 + "schema": { 31 + "type": "object", 32 + "required": ["dids"], 33 + "properties": { 34 + "dids": { 35 + "type": "array", 36 + "items": { 37 + "type": "string", 38 + "format": "did" 39 + } 40 + }, 41 + "recId": { 42 + "type": "string", 43 + "description": "DEPRECATED: use recIdStr instead." 44 + }, 45 + "recIdStr": { 46 + "type": "string", 47 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 48 + } 49 + } 50 + } 51 + } 52 + } 53 + } 54 + }
+49
lexicons/app/bsky/unspecced/getSuggestedOnboardingUsers.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getSuggestedOnboardingUsers", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of suggested users for onboarding", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "category": { 12 + "type": "string", 13 + "description": "Category of users to get suggestions for." 14 + }, 15 + "limit": { 16 + "type": "integer", 17 + "minimum": 1, 18 + "maximum": 50, 19 + "default": 25 20 + } 21 + } 22 + }, 23 + "output": { 24 + "encoding": "application/json", 25 + "schema": { 26 + "type": "object", 27 + "required": ["actors"], 28 + "properties": { 29 + "actors": { 30 + "type": "array", 31 + "items": { 32 + "type": "ref", 33 + "ref": "app.bsky.actor.defs#profileView" 34 + } 35 + }, 36 + "recId": { 37 + "type": "string", 38 + "description": "DEPRECATED: use recIdStr instead." 39 + }, 40 + "recIdStr": { 41 + "type": "string", 42 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 43 + } 44 + } 45 + } 46 + } 47 + } 48 + } 49 + }
+8
lexicons/app/bsky/unspecced/getSuggestedUsers.json
··· 32 32 "type": "ref", 33 33 "ref": "app.bsky.actor.defs#profileView" 34 34 } 35 + }, 36 + "recId": { 37 + "type": "string", 38 + "description": "DEPRECATED: use recIdStr instead." 39 + }, 40 + "recIdStr": { 41 + "type": "string", 42 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 35 43 } 36 44 } 37 45 }
+41
lexicons/app/bsky/unspecced/getSuggestedUsersForDiscover.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getSuggestedUsersForDiscover", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of suggested users for the Discover page", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "limit": { 12 + "type": "integer", 13 + "minimum": 1, 14 + "maximum": 50, 15 + "default": 25 16 + } 17 + } 18 + }, 19 + "output": { 20 + "encoding": "application/json", 21 + "schema": { 22 + "type": "object", 23 + "required": ["actors"], 24 + "properties": { 25 + "actors": { 26 + "type": "array", 27 + "items": { 28 + "type": "ref", 29 + "ref": "app.bsky.actor.defs#profileView" 30 + } 31 + }, 32 + "recIdStr": { 33 + "type": "string", 34 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 35 + } 36 + } 37 + } 38 + } 39 + } 40 + } 41 + }
+46
lexicons/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getSuggestedUsersForDiscoverSkeleton", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a skeleton of suggested users for the Discover page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForDiscover", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "viewer": { 12 + "type": "string", 13 + "format": "did", 14 + "description": "DID of the account making the request (not included for public/unauthenticated queries)." 15 + }, 16 + "limit": { 17 + "type": "integer", 18 + "minimum": 1, 19 + "maximum": 50, 20 + "default": 25 21 + } 22 + } 23 + }, 24 + "output": { 25 + "encoding": "application/json", 26 + "schema": { 27 + "type": "object", 28 + "required": ["dids"], 29 + "properties": { 30 + "dids": { 31 + "type": "array", 32 + "items": { 33 + "type": "string", 34 + "format": "did" 35 + } 36 + }, 37 + "recIdStr": { 38 + "type": "string", 39 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 40 + } 41 + } 42 + } 43 + } 44 + } 45 + } 46 + }
+45
lexicons/app/bsky/unspecced/getSuggestedUsersForExplore.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getSuggestedUsersForExplore", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of suggested users for the Explore page", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "category": { 12 + "type": "string", 13 + "description": "Category of users to get suggestions for." 14 + }, 15 + "limit": { 16 + "type": "integer", 17 + "minimum": 1, 18 + "maximum": 50, 19 + "default": 25 20 + } 21 + } 22 + }, 23 + "output": { 24 + "encoding": "application/json", 25 + "schema": { 26 + "type": "object", 27 + "required": ["actors"], 28 + "properties": { 29 + "actors": { 30 + "type": "array", 31 + "items": { 32 + "type": "ref", 33 + "ref": "app.bsky.actor.defs#profileView" 34 + } 35 + }, 36 + "recIdStr": { 37 + "type": "string", 38 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 39 + } 40 + } 41 + } 42 + } 43 + } 44 + } 45 + }
+50
lexicons/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getSuggestedUsersForExploreSkeleton", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a skeleton of suggested users for the Explore page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForExplore", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "viewer": { 12 + "type": "string", 13 + "format": "did", 14 + "description": "DID of the account making the request (not included for public/unauthenticated queries)." 15 + }, 16 + "category": { 17 + "type": "string", 18 + "description": "Category of users to get suggestions for." 19 + }, 20 + "limit": { 21 + "type": "integer", 22 + "minimum": 1, 23 + "maximum": 50, 24 + "default": 25 25 + } 26 + } 27 + }, 28 + "output": { 29 + "encoding": "application/json", 30 + "schema": { 31 + "type": "object", 32 + "required": ["dids"], 33 + "properties": { 34 + "dids": { 35 + "type": "array", 36 + "items": { 37 + "type": "string", 38 + "format": "did" 39 + } 40 + }, 41 + "recIdStr": { 42 + "type": "string", 43 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 44 + } 45 + } 46 + } 47 + } 48 + } 49 + } 50 + }
+45
lexicons/app/bsky/unspecced/getSuggestedUsersForSeeMore.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getSuggestedUsersForSeeMore", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a list of suggested users for the See More page", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "category": { 12 + "type": "string", 13 + "description": "Category of users to get suggestions for." 14 + }, 15 + "limit": { 16 + "type": "integer", 17 + "minimum": 1, 18 + "maximum": 50, 19 + "default": 25 20 + } 21 + } 22 + }, 23 + "output": { 24 + "encoding": "application/json", 25 + "schema": { 26 + "type": "object", 27 + "required": ["actors"], 28 + "properties": { 29 + "actors": { 30 + "type": "array", 31 + "items": { 32 + "type": "ref", 33 + "ref": "app.bsky.actor.defs#profileView" 34 + } 35 + }, 36 + "recIdStr": { 37 + "type": "string", 38 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 39 + } 40 + } 41 + } 42 + } 43 + } 44 + } 45 + }
+50
lexicons/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeleton", 4 + "defs": { 5 + "main": { 6 + "type": "query", 7 + "description": "Get a skeleton of suggested users for the See More page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForSeeMore", 8 + "parameters": { 9 + "type": "params", 10 + "properties": { 11 + "viewer": { 12 + "type": "string", 13 + "format": "did", 14 + "description": "DID of the account making the request (not included for public/unauthenticated queries)." 15 + }, 16 + "category": { 17 + "type": "string", 18 + "description": "Category of users to get suggestions for." 19 + }, 20 + "limit": { 21 + "type": "integer", 22 + "minimum": 1, 23 + "maximum": 50, 24 + "default": 25 25 + } 26 + } 27 + }, 28 + "output": { 29 + "encoding": "application/json", 30 + "schema": { 31 + "type": "object", 32 + "required": ["dids"], 33 + "properties": { 34 + "dids": { 35 + "type": "array", 36 + "items": { 37 + "type": "string", 38 + "format": "did" 39 + } 40 + }, 41 + "recIdStr": { 42 + "type": "string", 43 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 44 + } 45 + } 46 + } 47 + } 48 + } 49 + } 50 + }
+8
lexicons/app/bsky/unspecced/getSuggestedUsersSkeleton.json
··· 37 37 "type": "string", 38 38 "format": "did" 39 39 } 40 + }, 41 + "recId": { 42 + "type": "string", 43 + "description": "DEPRECATED: use recIdStr instead." 44 + }, 45 + "recIdStr": { 46 + "type": "string", 47 + "description": "Snowflake for this recommendation, use when submitting recommendation events." 40 48 } 41 49 } 42 50 }
+4
lexicons/app/bsky/unspecced/getSuggestionsSkeleton.json
··· 48 48 }, 49 49 "recId": { 50 50 "type": "integer", 51 + "description": "DEPRECATED: use recIdStr instead." 52 + }, 53 + "recIdStr": { 54 + "type": "string", 51 55 "description": "Snowflake for this recommendation, use when submitting recommendation events." 52 56 } 53 57 }
+49
lexicons/chat/bsky/authFullChatClient.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "chat.bsky.authFullChatClient", 4 + "defs": { 5 + "main": { 6 + "type": "permission-set", 7 + "title": "Full Chat Client (All Conversations)", 8 + "title:lang": {}, 9 + "detail": "Control of all chat conversations and configuration management.", 10 + "detail:lang": { 11 + "en": "All Chat Conversations" 12 + }, 13 + "permissions": [ 14 + { 15 + "type": "permission", 16 + "resource": "rpc", 17 + "inheritAud": true, 18 + "lxm": [ 19 + "chat.bsky.actor.deleteAccount", 20 + "chat.bsky.actor.exportAccountData", 21 + "chat.bsky.convo.acceptConvo", 22 + "chat.bsky.convo.addReaction", 23 + "chat.bsky.convo.deleteMessageForSelf", 24 + "chat.bsky.convo.getConvo", 25 + "chat.bsky.convo.getConvoAvailability", 26 + "chat.bsky.convo.getConvoForMembers", 27 + "chat.bsky.convo.getLog", 28 + "chat.bsky.convo.getMessages", 29 + "chat.bsky.convo.leaveConvo", 30 + "chat.bsky.convo.listConvos", 31 + "chat.bsky.convo.muteConvo", 32 + "chat.bsky.convo.removeReaction", 33 + "chat.bsky.convo.sendMessage", 34 + "chat.bsky.convo.sendMessageBatch", 35 + "chat.bsky.convo.unmuteConvo", 36 + "chat.bsky.convo.updateAllRead", 37 + "chat.bsky.convo.updateRead" 38 + ] 39 + }, 40 + { 41 + "type": "permission", 42 + "resource": "repo", 43 + "action": ["create", "update", "delete"], 44 + "collection": ["chat.bsky.actor.declaration"] 45 + } 46 + ] 47 + } 48 + } 49 + }
+2 -5
lexicons/com/atproto/label/defs.json
··· 140 140 "type": "string", 141 141 "knownValues": [ 142 142 "!hide", 143 - "!no-promote", 144 143 "!warn", 145 144 "!no-unauthenticated", 146 - "dmca-violation", 147 - "doxxing", 148 145 "porn", 149 146 "sexual", 150 147 "nudity", 151 - "nsfl", 152 - "gore" 148 + "graphic-media", 149 + "bot" 153 150 ] 154 151 } 155 152 }
+2 -1
lexicons/com/atproto/server/deleteSession.json
··· 4 4 "defs": { 5 5 "main": { 6 6 "type": "procedure", 7 - "description": "Delete the current session. Requires auth." 7 + "description": "Delete the current session. Requires auth using the 'refreshJwt' (not the 'accessJwt').", 8 + "errors": [{ "name": "InvalidToken" }, { "name": "ExpiredToken" }] 8 9 } 9 10 } 10 11 }
+1 -1
lexicons/com/atproto/server/getSession.json
··· 13 13 "properties": { 14 14 "handle": { "type": "string", "format": "handle" }, 15 15 "did": { "type": "string", "format": "did" }, 16 + "didDoc": { "type": "unknown" }, 16 17 "email": { "type": "string" }, 17 18 "emailConfirmed": { "type": "boolean" }, 18 19 "emailAuthFactor": { "type": "boolean" }, 19 - "didDoc": { "type": "unknown" }, 20 20 "active": { "type": "boolean" }, 21 21 "status": { 22 22 "type": "string",
+8 -1
lexicons/com/atproto/server/refreshSession.json
··· 16 16 "handle": { "type": "string", "format": "handle" }, 17 17 "did": { "type": "string", "format": "did" }, 18 18 "didDoc": { "type": "unknown" }, 19 + "email": { "type": "string" }, 20 + "emailConfirmed": { "type": "boolean" }, 21 + "emailAuthFactor": { "type": "boolean" }, 19 22 "active": { "type": "boolean" }, 20 23 "status": { 21 24 "type": "string", ··· 25 28 } 26 29 } 27 30 }, 28 - "errors": [{ "name": "AccountTakedown" }] 31 + "errors": [ 32 + { "name": "AccountTakedown" }, 33 + { "name": "InvalidToken" }, 34 + { "name": "ExpiredToken" } 35 + ] 29 36 } 30 37 } 31 38 }
+16
lexicons/tools/ozone/moderation/defs.json
··· 38 38 "#modEventPriorityScore", 39 39 "#ageAssuranceEvent", 40 40 "#ageAssuranceOverrideEvent", 41 + "#ageAssurancePurgeEvent", 41 42 "#revokeAccountCredentialsEvent", 42 43 "#scheduleTakedownEvent", 43 44 "#cancelScheduledTakedownEvent" ··· 95 96 "#modEventPriorityScore", 96 97 "#ageAssuranceEvent", 97 98 "#ageAssuranceOverrideEvent", 99 + "#ageAssurancePurgeEvent", 98 100 "#revokeAccountCredentialsEvent", 99 101 "#scheduleTakedownEvent", 100 102 "#cancelScheduledTakedownEvent" ··· 582 584 }, 583 585 "comment": { 584 586 "type": "string", 587 + "minLength": 1, 585 588 "description": "Comment describing the reason for the override." 586 589 } 587 590 } 588 591 }, 592 + "ageAssurancePurgeEvent": { 593 + "type": "object", 594 + "description": "Purges all age assurance events for the subject. Only works on DID subjects. Moderator-only.", 595 + "required": ["comment"], 596 + "properties": { 597 + "comment": { 598 + "type": "string", 599 + "minLength": 1, 600 + "description": "Comment describing the reason for the purge." 601 + } 602 + } 603 + }, 589 604 "revokeAccountCredentialsEvent": { 590 605 "type": "object", 591 606 "description": "Account credentials revocation by moderators. Only works on DID subjects.", 592 607 "required": ["comment"], 593 608 "properties": { 594 609 "comment": { 610 + "minLength": 1, 595 611 "type": "string", 596 612 "description": "Comment describing the reason for the revocation." 597 613 }
+1
lexicons/tools/ozone/moderation/emitEvent.json
··· 35 35 "tools.ozone.moderation.defs#modEventPriorityScore", 36 36 "tools.ozone.moderation.defs#ageAssuranceEvent", 37 37 "tools.ozone.moderation.defs#ageAssuranceOverrideEvent", 38 + "tools.ozone.moderation.defs#ageAssurancePurgeEvent", 38 39 "tools.ozone.moderation.defs#revokeAccountCredentialsEvent", 39 40 "tools.ozone.moderation.defs#scheduleTakedownEvent", 40 41 "tools.ozone.moderation.defs#cancelScheduledTakedownEvent"