lexrpc 2.1__tar.gz → 2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lexrpc-2.1 → lexrpc-2.2}/PKG-INFO +40 -16
- lexrpc-2.1/lexrpc.egg-info/PKG-INFO → lexrpc-2.2/README.md +27 -38
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/base.py +12 -8
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/client.py +22 -10
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/flask_server.py +6 -1
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/defs.json +17 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/getSuggestions.json +4 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authViewAll.json +1 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/draft/defs.json +23 -3
- lexrpc-2.2/lexrpc/lexicons/app/bsky/embed/external.json +149 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/embed/gallery.json +79 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/embed/getEmbedExternalView.json +55 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/embed/images.json +2 -1
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/embed/record.json +1 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/embed/recordWithMedia.json +2 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/defs.json +1 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/post.json +1 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/sendInteractions.json +1 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getSuggestedFollowsByActor.json +6 -2
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.json +54 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getSuggestedOnboardingUsers.json +49 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsers.json +4 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsersForDiscover.json +41 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.json +46 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsersForExplore.json +45 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.json +50 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsersForSeeMore.json +45 -0
- lexrpc-2.2/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.json +50 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getSuggestedUsersSkeleton.json +4 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getSuggestionsSkeleton.json +4 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/actor/declaration.json +5 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/actor/defs.json +79 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/actor/getStatus.json +31 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/authFullChatClient.json +21 -1
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/acceptConvo.json +2 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/addReaction.json +5 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/defs.json +848 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/deleteMessageForSelf.json +8 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/getConvo.json +2 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/getConvoAvailability.json +1 -1
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/getConvoForMembers.json +9 -0
- lexrpc-2.1/lexrpc/lexicons/chat/bsky/convo/getMessages.json → lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/getConvoMembers.json +7 -8
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/getLog.json +69 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/getMessages.json +54 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/leaveConvo.json +8 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/listConvoRequests.json +42 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/listConvos.json +58 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/lockConvo.json +38 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/muteConvo.json +2 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/removeReaction.json +5 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/sendMessage.json +2 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/sendMessageBatch.json +2 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/convo/unlockConvo.json +34 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/unmuteConvo.json +2 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/updateAllRead.json +1 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/convo/updateRead.json +2 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/embed/joinLink.json +27 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/addMembers.json +57 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/approveJoinRequest.json +39 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/createGroup.json +55 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/createJoinLink.json +46 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/defs.json +111 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/disableJoinLink.json +38 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/editGroup.json +44 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/editJoinLink.json +43 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/enableJoinLink.json +39 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/getJoinLinkPreviews.json +38 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/listJoinRequests.json +42 -0
- lexrpc-2.1/lexrpc/lexicons/chat/bsky/convo/listConvos.json → lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/listMutualGroups.json +8 -10
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/rejectJoinRequest.json +30 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/removeMembers.json +39 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/requestJoin.json +46 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/updateJoinRequestsRead.json +29 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/group/withdrawJoinRequest.json +29 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/moderation/defs.json +70 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/moderation/getConvo.json +31 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/moderation/getConvoMembers.json +42 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/moderation/getConvos.json +38 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/moderation/getMessageContext.json +56 -0
- lexrpc-2.2/lexrpc/lexicons/chat/bsky/moderation/subscribeModEvents.json +559 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/label/defs.json +2 -5
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/getServiceAuth.json +2 -2
- lexrpc-2.2/lexrpc/lexicons/com/germnetwork/declaration.json +64 -0
- lexrpc-2.2/lexrpc/lexicons/community/lexicon/bookmarks/authManageBookmarks.json +41 -0
- lexrpc-2.2/lexrpc/lexicons/community/lexicon/bookmarks/authViewBookmarks.json +34 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/calendar/event.json +4 -0
- lexrpc-2.2/lexrpc/lexicons/community/lexicon/preference/ai.json +99 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/authFull.json +23 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/authSocial.json +21 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/document.json +125 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/graph/recommend.json +29 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/graph/subscription.json +28 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/publication.json +72 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/theme/basic.json +50 -0
- lexrpc-2.2/lexrpc/lexicons/site/standard/theme/color.json +62 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/defs.json +32 -3
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/emitEvent.json +34 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/queryEvents.json +2 -2
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/queryStatuses.json +2 -2
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/assignModerator.json +40 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/createQueue.json +69 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/defs.json +148 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/deleteQueue.json +43 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/getAssignments.json +63 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/listQueues.json +61 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/routeReports.json +50 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/unassignModerator.json +34 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/queue/updateQueue.json +48 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/assignModerator.json +53 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/createActivity.json +75 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/defs.json +587 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/getAssignments.json +65 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/getHistoricalStats.json +71 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/getLatestReport.json +33 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/getLiveStats.json +45 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/getReport.json +33 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/listActivities.json +48 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/queryReports.json +120 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/reassignQueue.json +66 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/refreshStats.json +41 -0
- lexrpc-2.2/lexrpc/lexicons/tools/ozone/report/unassignModerator.json +36 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/server.py +9 -1
- lexrpc-2.1/README.md → lexrpc-2.2/lexrpc.egg-info/PKG-INFO +62 -8
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc.egg-info/SOURCES.txt +68 -0
- lexrpc-2.2/lexrpc.egg-info/requires.txt +18 -0
- lexrpc-2.2/lexrpc.egg-info/top_level.txt +1 -0
- {lexrpc-2.1 → lexrpc-2.2}/pyproject.toml +47 -17
- lexrpc-2.1/lexrpc/lexicons/app/bsky/embed/external.json +0 -51
- lexrpc-2.1/lexrpc/lexicons/chat/bsky/actor/defs.json +0 -37
- lexrpc-2.1/lexrpc/lexicons/chat/bsky/convo/defs.json +0 -236
- lexrpc-2.1/lexrpc/lexicons/chat/bsky/convo/getLog.json +0 -44
- lexrpc-2.1/lexrpc/lexicons/chat/bsky/moderation/getMessageContext.json +0 -41
- lexrpc-2.1/lexrpc/lexicons/com/germnetwork/declaration.json +0 -45
- lexrpc-2.1/lexrpc/lexicons/site/standard/document.json +0 -85
- lexrpc-2.1/lexrpc/lexicons/site/standard/publication.json +0 -67
- lexrpc-2.1/lexrpc/lexicons/tools/ozone/report/defs.json +0 -223
- lexrpc-2.1/lexrpc.egg-info/requires.txt +0 -12
- lexrpc-2.1/lexrpc.egg-info/top_level.txt +0 -8
- {lexrpc-2.1 → lexrpc-2.2}/LICENSE +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/MANIFEST.in +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/__init__.py +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/getPreferences.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/getProfile.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/getProfiles.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/profile.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/putPreferences.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/searchActors.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/searchActorsTypeahead.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/actor/status.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/ageassurance/begin.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/ageassurance/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/ageassurance/getConfig.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/ageassurance/getState.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authCreatePosts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authDeleteContent.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authFullApp.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authManageFeedDeclarations.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authManageLabelerService.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authManageModeration.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authManageNotifications.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/authManageProfile.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/bookmark/createBookmark.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/bookmark/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/bookmark/deleteBookmark.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/bookmark/getBookmarks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/dismissMatch.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/getMatches.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/getSyncStatus.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/importContacts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/removeData.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/sendNotification.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/startPhoneVerification.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/contact/verifyPhone.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/draft/createDraft.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/draft/deleteDraft.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/draft/getDrafts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/draft/updateDraft.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/embed/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/embed/video.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/describeFeedGenerator.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/generator.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getActorFeeds.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getActorLikes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getAuthorFeed.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getFeed.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getFeedGenerator.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getFeedGenerators.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getFeedSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getLikes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getListFeed.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getPostThread.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getPosts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getQuotes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getRepostedBy.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getSuggestedFeeds.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/getTimeline.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/like.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/postgate.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/repost.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/searchPosts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/feed/threadgate.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/block.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/follow.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getActorStarterPacks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getBlocks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getFollowers.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getFollows.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getKnownFollowers.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getList.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getListBlocks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getListMutes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getLists.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getListsWithMembership.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getMutes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getRelationships.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getStarterPack.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getStarterPacks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/getStarterPacksWithMembership.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/list.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/listblock.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/listitem.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/muteActor.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/muteActorList.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/muteThread.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/searchStarterPacks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/starterpack.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/unmuteActor.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/unmuteActorList.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/unmuteThread.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/graph/verification.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/labeler/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/labeler/getServices.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/labeler/service.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/declaration.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/getPreferences.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/getUnreadCount.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/listActivitySubscriptions.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/listNotifications.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/putActivitySubscription.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/putPreferences.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/putPreferencesV2.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/registerPush.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/unregisterPush.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/notification/updateSeen.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/richtext/facet.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getAgeAssuranceState.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getConfig.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getPopularFeedGenerators.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getPostThreadOtherV2.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getPostThreadV2.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getSuggestedFeeds.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getSuggestedFeedsSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getSuggestedStarterPacks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getTaggedSuggestions.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getTrendingTopics.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getTrends.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/getTrendsSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/initAgeAssurance.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/searchActorsSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/searchPostsSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/unspecced/searchStarterPacksSkeleton.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/video/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/video/getJobStatus.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/video/getUploadLimits.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/app/bsky/video/uploadVideo.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/actor/deleteAccount.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/actor/exportAccountData.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/moderation/getActorMetadata.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/chat/bsky/moderation/updateActorAccess.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/deleteAccount.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/disableAccountInvites.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/disableInviteCodes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/enableAccountInvites.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/getAccountInfo.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/getAccountInfos.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/getInviteCodes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/getSubjectStatus.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/searchAccounts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/sendEmail.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/updateAccountEmail.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/updateAccountHandle.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/updateAccountPassword.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/updateAccountSigningKey.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/admin/updateSubjectStatus.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/getRecommendedDidCredentials.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/refreshIdentity.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/requestPlcOperationSignature.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/resolveDid.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/resolveHandle.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/resolveIdentity.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/signPlcOperation.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/submitPlcOperation.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/identity/updateHandle.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/label/queryLabels.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/label/subscribeLabels.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/lexicon/resolveLexicon.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/lexicon/schema.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/moderation/createReport.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/moderation/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/applyWrites.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/createRecord.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/deleteRecord.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/describeRepo.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/getRecord.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/importRepo.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/listMissingBlobs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/listRecords.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/putRecord.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/strongRef.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/repo/uploadBlob.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/activateAccount.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/checkAccountStatus.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/confirmEmail.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/createAccount.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/createAppPassword.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/createInviteCode.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/createInviteCodes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/createSession.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/deactivateAccount.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/deleteAccount.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/deleteSession.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/describeServer.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/getAccountInviteCodes.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/getSession.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/listAppPasswords.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/refreshSession.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/requestAccountDelete.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/requestEmailConfirmation.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/requestEmailUpdate.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/requestPasswordReset.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/reserveSigningKey.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/resetPassword.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/revokeAppPassword.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/server/updateEmail.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getBlob.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getBlocks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getCheckout.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getHead.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getHostStatus.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getLatestCommit.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getRecord.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getRepo.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/getRepoStatus.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/listBlobs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/listHosts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/listRepos.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/listReposByCollection.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/notifyOfUpdate.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/requestCrawl.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/sync/subscribeRepos.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/temp/addReservedHandle.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/temp/checkHandleAvailability.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/temp/checkSignupQueue.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/temp/dereferenceScope.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/temp/fetchLabels.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/temp/requestPhoneVerification.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/com/atproto/temp/revokeAccountCredentials.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/bookmarks/bookmark.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/bookmarks/getActorBookmarks.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/calendar/rsvp.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/interaction/like.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/location/address.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/location/fsq.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/location/geo.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/location/hthree.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/community/lexicon/payments/webMonetization.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/communication/createTemplate.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/communication/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/communication/deleteTemplate.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/communication/listTemplates.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/communication/updateTemplate.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/hosting/getAccountHistory.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/cancelScheduledActions.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getAccountTimeline.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getEvent.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getRecord.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getRecords.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getRepo.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getReporterStats.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getRepos.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/getSubjects.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/listScheduledActions.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/scheduleAction.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/moderation/searchRepos.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/safelink/addRule.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/safelink/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/safelink/queryEvents.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/safelink/queryRules.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/safelink/removeRule.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/safelink/updateRule.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/server/getConfig.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/set/addValues.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/set/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/set/deleteSet.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/set/deleteValues.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/set/getValues.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/set/querySets.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/set/upsertSet.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/setting/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/setting/listOptions.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/setting/removeOptions.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/setting/upsertOption.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/signature/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/signature/findCorrelation.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/signature/findRelatedAccounts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/signature/searchAccounts.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/team/addMember.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/team/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/team/deleteMember.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/team/listMembers.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/team/updateMember.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/verification/defs.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/verification/grantVerifications.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/verification/listVerifications.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc/lexicons/tools/ozone/verification/revokeVerifications.json +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/lexrpc.egg-info/dependency_links.txt +0 -0
- {lexrpc-2.1 → lexrpc-2.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lexrpc
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2
|
|
4
4
|
Summary: Python implementation of AT Protocol's XRPC + Lexicon
|
|
5
5
|
Author-email: Ryan Barrett <lexrpc@ryanb.org>
|
|
6
6
|
Project-URL: Homepage, https://github.com/snarfed/lexrpc
|
|
@@ -12,20 +12,25 @@ Classifier: Operating System :: OS Independent
|
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Development Status :: 3 - Alpha
|
|
14
14
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.9
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: dag-cbor
|
|
18
|
+
Requires-Dist: dag-cbor>=0.3
|
|
19
19
|
Requires-Dist: dag-json>=0.3
|
|
20
|
-
Requires-Dist: grapheme
|
|
21
|
-
Requires-Dist: iterators
|
|
22
|
-
Requires-Dist: libipld<4.0.0
|
|
20
|
+
Requires-Dist: grapheme>=0.6.0
|
|
21
|
+
Requires-Dist: iterators>=0.2.0
|
|
22
|
+
Requires-Dist: libipld<4.0.0,>=3.0.0
|
|
23
23
|
Requires-Dist: multiformats>=0.3.1.post4
|
|
24
24
|
Requires-Dist: requests>=2.0
|
|
25
|
-
Requires-Dist: simple-websocket
|
|
25
|
+
Requires-Dist: simple-websocket>=0.10.0
|
|
26
26
|
Provides-Extra: flask
|
|
27
27
|
Requires-Dist: Flask>=2.0; extra == "flask"
|
|
28
|
-
Requires-Dist: flask-sock; extra == "flask"
|
|
28
|
+
Requires-Dist: flask-sock>=0.6.0; extra == "flask"
|
|
29
|
+
Requires-Dist: werkzeug>=2.0; extra == "flask"
|
|
30
|
+
Requires-Dist: wsproto>=1.0; extra == "flask"
|
|
31
|
+
Provides-Extra: docs
|
|
32
|
+
Requires-Dist: sphinx>=7.0.0; extra == "docs"
|
|
33
|
+
Requires-Dist: sphinx-rtd-theme>=3.0.0; extra == "docs"
|
|
29
34
|
Dynamic: license-file
|
|
30
35
|
|
|
31
36
|
lexrpc [](https://circleci.com/gh/snarfed/lexrpc) [](https://coveralls.io/github/snarfed/lexrpc?branch=master)
|
|
@@ -176,25 +181,26 @@ Here's how to package, test, and ship a new release.
|
|
|
176
181
|
```
|
|
177
182
|
1. Run the unit tests.
|
|
178
183
|
```sh
|
|
179
|
-
source
|
|
184
|
+
source .venv/bin/activate.csh
|
|
180
185
|
python -m unittest discover
|
|
181
186
|
```
|
|
182
187
|
1. Bump the version number in `pyproject.toml` and `docs/conf.py`. `git grep` the old version number to make sure it only appears in the changelog. Change the current changelog entry in `README.md` for this new version from _unreleased_ to the current date.
|
|
183
188
|
1. Build the docs. If you added any new modules, add them to the appropriate file(s) in `docs/source/`. Then run `./docs/build.sh`. Check that the generated HTML looks fine by opening `docs/_build/html/index.html` and looking around.
|
|
184
|
-
1.
|
|
189
|
+
1. ```sh
|
|
190
|
+
setenv ver X.Y
|
|
191
|
+
git commit -am "release v$ver"
|
|
192
|
+
```
|
|
185
193
|
1. Upload to [test.pypi.org](https://test.pypi.org/) for testing.
|
|
186
194
|
```sh
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
twine upload -r pypitest dist/lexrpc-$ver*
|
|
195
|
+
uv build
|
|
196
|
+
twine upload -r pypitest dist/lexrpc-$ver.tar.gz dist/lexrpc-$ver-py3-none-any.whl
|
|
190
197
|
```
|
|
191
198
|
1. Install from test.pypi.org.
|
|
192
199
|
```sh
|
|
193
200
|
cd /tmp
|
|
194
|
-
python -m venv
|
|
195
|
-
source
|
|
201
|
+
python -m venv .venv
|
|
202
|
+
source .venv/bin/activate.csh
|
|
196
203
|
pip uninstall lexrpc # make sure we force pip to use the uploaded version
|
|
197
|
-
pip install --upgrade pip
|
|
198
204
|
pip install -i https://test.pypi.org/simple --extra-index-url https://pypi.org/simple lexrpc==$ver
|
|
199
205
|
```
|
|
200
206
|
1. Smoke test that the code trivially loads and runs.
|
|
@@ -248,6 +254,24 @@ Here's how to package, test, and ship a new release.
|
|
|
248
254
|
|
|
249
255
|
## Changelog
|
|
250
256
|
|
|
257
|
+
### 2.2 - 2026-06-29
|
|
258
|
+
|
|
259
|
+
* Schema validation:
|
|
260
|
+
* Fix crash (`KeyError`) when validating a `blob` value inside an open union; now raises `ValidationError` for invalid blob refs.
|
|
261
|
+
* `client`:
|
|
262
|
+
* For websocket event streams, close the websocket connection when a non-`ConnectionClosed` exception is raised.
|
|
263
|
+
* Use the lexicon method's `input.encoding` as the `Content-Type` request header.
|
|
264
|
+
* `Client.__init__`: new `requests_session` kwarg, an optional :class:`requests.Session` to use for HTTP requests.
|
|
265
|
+
* `server`:
|
|
266
|
+
* `Server.call`: unknown parameters not in the lexicon are now silently ignored instead of raising `ValidationError`. [Background.](https://github.com/bluesky-social/atproto/discussions/5094)
|
|
267
|
+
* `flask_server`:
|
|
268
|
+
* Close websocket connections with reason 1011 for unknown/not implemented endpoint NSIDs.
|
|
269
|
+
* Update bundled lexicons:
|
|
270
|
+
* Bluesky PBC's (`app.bsky.*` etc) at [cf4843c](https://github.com/bluesky-social/atproto/commit/cf4843c339396e98fc0191b5c7ccf8db2e48da5b)
|
|
271
|
+
* [`site.standard.*`](https://standard.site/) at [549453e](https://tangled.org/standard.site/lexicons/commit/549453e37a4e15e8318f5b7655b230d0925b9e02)
|
|
272
|
+
* [`lexicon.community.*`](https://lexicon.community/) at [91c50cb](https://github.com/lexicon-community/lexicon/commit/91c50cbd84a9da8014332a6e37812c276889c8ac)
|
|
273
|
+
|
|
274
|
+
|
|
251
275
|
### 2.1 - 2026-02-06
|
|
252
276
|
|
|
253
277
|
* Bundle new lexicons:
|
|
@@ -1,33 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: lexrpc
|
|
3
|
-
Version: 2.1
|
|
4
|
-
Summary: Python implementation of AT Protocol's XRPC + Lexicon
|
|
5
|
-
Author-email: Ryan Barrett <lexrpc@ryanb.org>
|
|
6
|
-
Project-URL: Homepage, https://github.com/snarfed/lexrpc
|
|
7
|
-
Project-URL: Documentation, https://lexrpc.readthedocs.io/
|
|
8
|
-
Keywords: XRPC,Lexicon,AT Protocol,ATP
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: License :: Public Domain
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: Development Status :: 3 - Alpha
|
|
14
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
Requires-Python: >=3.7
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE
|
|
18
|
-
Requires-Dist: dag-cbor
|
|
19
|
-
Requires-Dist: dag-json>=0.3
|
|
20
|
-
Requires-Dist: grapheme
|
|
21
|
-
Requires-Dist: iterators
|
|
22
|
-
Requires-Dist: libipld<4.0.0
|
|
23
|
-
Requires-Dist: multiformats>=0.3.1.post4
|
|
24
|
-
Requires-Dist: requests>=2.0
|
|
25
|
-
Requires-Dist: simple-websocket
|
|
26
|
-
Provides-Extra: flask
|
|
27
|
-
Requires-Dist: Flask>=2.0; extra == "flask"
|
|
28
|
-
Requires-Dist: flask-sock; extra == "flask"
|
|
29
|
-
Dynamic: license-file
|
|
30
|
-
|
|
31
1
|
lexrpc [](https://circleci.com/gh/snarfed/lexrpc) [](https://coveralls.io/github/snarfed/lexrpc?branch=master)
|
|
32
2
|
===
|
|
33
3
|
|
|
@@ -176,25 +146,26 @@ Here's how to package, test, and ship a new release.
|
|
|
176
146
|
```
|
|
177
147
|
1. Run the unit tests.
|
|
178
148
|
```sh
|
|
179
|
-
source
|
|
149
|
+
source .venv/bin/activate.csh
|
|
180
150
|
python -m unittest discover
|
|
181
151
|
```
|
|
182
152
|
1. Bump the version number in `pyproject.toml` and `docs/conf.py`. `git grep` the old version number to make sure it only appears in the changelog. Change the current changelog entry in `README.md` for this new version from _unreleased_ to the current date.
|
|
183
153
|
1. Build the docs. If you added any new modules, add them to the appropriate file(s) in `docs/source/`. Then run `./docs/build.sh`. Check that the generated HTML looks fine by opening `docs/_build/html/index.html` and looking around.
|
|
184
|
-
1.
|
|
154
|
+
1. ```sh
|
|
155
|
+
setenv ver X.Y
|
|
156
|
+
git commit -am "release v$ver"
|
|
157
|
+
```
|
|
185
158
|
1. Upload to [test.pypi.org](https://test.pypi.org/) for testing.
|
|
186
159
|
```sh
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
twine upload -r pypitest dist/lexrpc-$ver*
|
|
160
|
+
uv build
|
|
161
|
+
twine upload -r pypitest dist/lexrpc-$ver.tar.gz dist/lexrpc-$ver-py3-none-any.whl
|
|
190
162
|
```
|
|
191
163
|
1. Install from test.pypi.org.
|
|
192
164
|
```sh
|
|
193
165
|
cd /tmp
|
|
194
|
-
python -m venv
|
|
195
|
-
source
|
|
166
|
+
python -m venv .venv
|
|
167
|
+
source .venv/bin/activate.csh
|
|
196
168
|
pip uninstall lexrpc # make sure we force pip to use the uploaded version
|
|
197
|
-
pip install --upgrade pip
|
|
198
169
|
pip install -i https://test.pypi.org/simple --extra-index-url https://pypi.org/simple lexrpc==$ver
|
|
199
170
|
```
|
|
200
171
|
1. Smoke test that the code trivially loads and runs.
|
|
@@ -248,6 +219,24 @@ Here's how to package, test, and ship a new release.
|
|
|
248
219
|
|
|
249
220
|
## Changelog
|
|
250
221
|
|
|
222
|
+
### 2.2 - 2026-06-29
|
|
223
|
+
|
|
224
|
+
* Schema validation:
|
|
225
|
+
* Fix crash (`KeyError`) when validating a `blob` value inside an open union; now raises `ValidationError` for invalid blob refs.
|
|
226
|
+
* `client`:
|
|
227
|
+
* For websocket event streams, close the websocket connection when a non-`ConnectionClosed` exception is raised.
|
|
228
|
+
* Use the lexicon method's `input.encoding` as the `Content-Type` request header.
|
|
229
|
+
* `Client.__init__`: new `requests_session` kwarg, an optional :class:`requests.Session` to use for HTTP requests.
|
|
230
|
+
* `server`:
|
|
231
|
+
* `Server.call`: unknown parameters not in the lexicon are now silently ignored instead of raising `ValidationError`. [Background.](https://github.com/bluesky-social/atproto/discussions/5094)
|
|
232
|
+
* `flask_server`:
|
|
233
|
+
* Close websocket connections with reason 1011 for unknown/not implemented endpoint NSIDs.
|
|
234
|
+
* Update bundled lexicons:
|
|
235
|
+
* Bluesky PBC's (`app.bsky.*` etc) at [cf4843c](https://github.com/bluesky-social/atproto/commit/cf4843c339396e98fc0191b5c7ccf8db2e48da5b)
|
|
236
|
+
* [`site.standard.*`](https://standard.site/) at [549453e](https://tangled.org/standard.site/lexicons/commit/549453e37a4e15e8318f5b7655b230d0925b9e02)
|
|
237
|
+
* [`lexicon.community.*`](https://lexicon.community/) at [91c50cb](https://github.com/lexicon-community/lexicon/commit/91c50cbd84a9da8014332a6e37812c276889c8ac)
|
|
238
|
+
|
|
239
|
+
|
|
251
240
|
### 2.1 - 2026-02-06
|
|
252
241
|
|
|
253
242
|
* Bundle new lexicons:
|
|
@@ -6,7 +6,7 @@ import json
|
|
|
6
6
|
import logging
|
|
7
7
|
import re
|
|
8
8
|
import string
|
|
9
|
-
from urllib.parse import urlencode,
|
|
9
|
+
from urllib.parse import urlencode, urlparse
|
|
10
10
|
|
|
11
11
|
import grapheme
|
|
12
12
|
from multiformats import CID
|
|
@@ -55,7 +55,7 @@ BLOB_DEF = {
|
|
|
55
55
|
'required': ['ref', 'mimeType', 'size'],
|
|
56
56
|
'properties': {
|
|
57
57
|
'ref': {
|
|
58
|
-
'type': '
|
|
58
|
+
'type': 'cid-link',
|
|
59
59
|
},
|
|
60
60
|
'mimeType': {
|
|
61
61
|
'type': 'string',
|
|
@@ -293,7 +293,10 @@ class Base():
|
|
|
293
293
|
|
|
294
294
|
def get_schema(lex_name):
|
|
295
295
|
"""Returns (fully qualified lexicon name, lexicon) tuple."""
|
|
296
|
-
|
|
296
|
+
if lex_name.startswith('#'):
|
|
297
|
+
schema_name = lexicon.split('#')[0] + lex_name
|
|
298
|
+
else:
|
|
299
|
+
schema_name = lex_name
|
|
297
300
|
schema = self._get_def(schema_name)
|
|
298
301
|
if schema.get('type') == 'record':
|
|
299
302
|
schema = schema.get('record')
|
|
@@ -379,10 +382,11 @@ class Base():
|
|
|
379
382
|
|
|
380
383
|
if type_ == 'union':
|
|
381
384
|
if isinstance(val, dict):
|
|
382
|
-
inner_type
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
385
|
+
if not (inner_type := val.get('$type')):
|
|
386
|
+
if name == 'message':
|
|
387
|
+
# event stream subscription messages (payloads) don't
|
|
388
|
+
# require $type, it's in the header
|
|
389
|
+
return
|
|
386
390
|
fail('missing $type')
|
|
387
391
|
elif isinstance(val, str):
|
|
388
392
|
inner_type = val
|
|
@@ -390,7 +394,7 @@ class Base():
|
|
|
390
394
|
fail("is invalid")
|
|
391
395
|
|
|
392
396
|
if schema.get('closed'):
|
|
393
|
-
refs = [
|
|
397
|
+
refs = [get_schema(ref)[0] for ref in schema['refs']]
|
|
394
398
|
if inner_type not in refs:
|
|
395
399
|
fail(f"{inner_type} isn't one of {refs}")
|
|
396
400
|
|
|
@@ -70,12 +70,14 @@ class Client(Base):
|
|
|
70
70
|
address (str): base URL of XRPC server, eg ``https://bsky.social/``
|
|
71
71
|
session (dict): ``createSession`` response with ``accessJwt``,
|
|
72
72
|
`refreshJwt``, ``handle``, and ``did``
|
|
73
|
-
requests_kwargs (dict): passed to :func:`requests.get
|
|
73
|
+
requests_kwargs (dict): passed to :func:`requests.Session.get` /
|
|
74
|
+
:func:`requests.Session.post`
|
|
75
|
+
requests_session (requests.Session): HTTP session to use for requests
|
|
74
76
|
"""
|
|
75
77
|
|
|
76
78
|
def __init__(self, address=None, access_token=None, refresh_token=None,
|
|
77
79
|
session_callback=None, lexicons=None, validate=True, truncate=False,
|
|
78
|
-
**requests_kwargs):
|
|
80
|
+
requests_session=None, **requests_kwargs):
|
|
79
81
|
"""Constructor.
|
|
80
82
|
|
|
81
83
|
Args:
|
|
@@ -96,9 +98,12 @@ class Client(Base):
|
|
|
96
98
|
and output bodies
|
|
97
99
|
truncate (bool): whether to truncate string values that are longer
|
|
98
100
|
than their ``maxGraphemes`` or ``maxLength`` in their lexicon
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
requests_session (requests.Session): optional HTTP session to use for
|
|
102
|
+
requests. Defaults to a new :class:`requests.Session`.
|
|
103
|
+
requests_kwargs: passed to :func:`requests.Session.get` /
|
|
104
|
+
:func:`requests.Session.post`, eg ``auth``
|
|
105
|
+
(:class:`requests.auth.AuthBase`), ``headers`` (dict), ``timeout``
|
|
106
|
+
(int seconds), etc.
|
|
102
107
|
|
|
103
108
|
Raises:
|
|
104
109
|
ValidationError: if any lexicon schema is invalid
|
|
@@ -115,6 +120,7 @@ class Client(Base):
|
|
|
115
120
|
self.address = DEFAULT_PDS
|
|
116
121
|
# logger.debug(f'Using server at {address}')
|
|
117
122
|
|
|
123
|
+
self.requests_session = requests_session or requests.Session()
|
|
118
124
|
self.requests_kwargs = copy.copy(requests_kwargs)
|
|
119
125
|
headers = self.requests_kwargs.setdefault('headers', {})
|
|
120
126
|
for name, val in DEFAULT_HEADERS.items():
|
|
@@ -169,13 +175,15 @@ class Client(Base):
|
|
|
169
175
|
params = self.validate(nsid, 'parameters', params)
|
|
170
176
|
params_str = self.encode_params(params)
|
|
171
177
|
|
|
172
|
-
|
|
178
|
+
lexicon = self._get_def(nsid)
|
|
179
|
+
type = lexicon['type']
|
|
173
180
|
if type == 'subscription':
|
|
174
181
|
input = self.validate(nsid, 'input', input)
|
|
175
182
|
|
|
176
183
|
requests_kwargs = copy.copy(self.requests_kwargs)
|
|
184
|
+
content_type = lexicon.get('input', {}).get('encoding', 'application/json')
|
|
177
185
|
headers = {
|
|
178
|
-
'Content-Type':
|
|
186
|
+
'Content-Type': content_type,
|
|
179
187
|
**requests_kwargs.pop('headers'),
|
|
180
188
|
**headers,
|
|
181
189
|
}
|
|
@@ -196,7 +204,8 @@ class Client(Base):
|
|
|
196
204
|
return self._subscribe(url, nsid, decode=decode)
|
|
197
205
|
|
|
198
206
|
# query or procedure
|
|
199
|
-
fn =
|
|
207
|
+
fn = (self.requests_session.get if type == 'query'
|
|
208
|
+
else self.requests_session.post)
|
|
200
209
|
|
|
201
210
|
# buffer binary inputs in memory. ideally we'd stream instead, but if we
|
|
202
211
|
# have to refresh our token below, we need to seek the stream back to the
|
|
@@ -204,7 +213,7 @@ class Client(Base):
|
|
|
204
213
|
if isinstance(input, IOBase) or hasattr(input, 'read'):
|
|
205
214
|
input = input.read()
|
|
206
215
|
|
|
207
|
-
logger.debug(f'requests.{
|
|
216
|
+
logger.debug(f'requests.{"get" if type == "query" else "post"} {url} {params_str} {self.loggable(input)} {headers} {requests_kwargs}')
|
|
208
217
|
|
|
209
218
|
if auth := requests_kwargs.get('auth'):
|
|
210
219
|
orig_token = getattr(auth, 'token', None)
|
|
@@ -276,7 +285,7 @@ class Client(Base):
|
|
|
276
285
|
ValidationError: if ``decode`` is True and an output payload doesn't
|
|
277
286
|
validate gainst the subscription method's lexicon
|
|
278
287
|
"""
|
|
279
|
-
ws = simple_websocket.Client(url, headers={
|
|
288
|
+
ws = simple_websocket.Client.connect(url, headers={
|
|
280
289
|
**DEFAULT_HEADERS,
|
|
281
290
|
**self.requests_kwargs.get('headers', {}),
|
|
282
291
|
})
|
|
@@ -292,3 +301,6 @@ class Client(Base):
|
|
|
292
301
|
yield msg
|
|
293
302
|
except simple_websocket.ConnectionClosed as cc:
|
|
294
303
|
logger.debug(cc)
|
|
304
|
+
finally:
|
|
305
|
+
if ws.connected:
|
|
306
|
+
ws.close()
|
|
@@ -168,7 +168,7 @@ def subscription(xrpc_server, nsid, limit_ips=False):
|
|
|
168
168
|
continue
|
|
169
169
|
|
|
170
170
|
header, payload = result
|
|
171
|
-
#
|
|
171
|
+
# payload was validated in Server.call; header has no schema
|
|
172
172
|
|
|
173
173
|
# log
|
|
174
174
|
seq = payload.get('seq')
|
|
@@ -218,6 +218,11 @@ def subscription(xrpc_server, nsid, limit_ips=False):
|
|
|
218
218
|
|
|
219
219
|
try:
|
|
220
220
|
handle(ws)
|
|
221
|
+
except NotImplementedError as e:
|
|
222
|
+
msg = str(e)
|
|
223
|
+
logger.info(msg)
|
|
224
|
+
# WebSocket closure code 1011 is for "unexpected conditions"
|
|
225
|
+
ws.close(reason=1011, message=msg)
|
|
221
226
|
finally:
|
|
222
227
|
# ideally I'd use Flask's after_this_request instead, but it doesn't
|
|
223
228
|
# guarantee that it'll run if the request raises an uncaught
|
|
@@ -160,6 +160,10 @@
|
|
|
160
160
|
"allowIncoming": {
|
|
161
161
|
"type": "string",
|
|
162
162
|
"knownValues": ["all", "none", "following"]
|
|
163
|
+
},
|
|
164
|
+
"allowGroupInvites": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"knownValues": ["all", "none", "following"]
|
|
163
167
|
}
|
|
164
168
|
}
|
|
165
169
|
},
|
|
@@ -265,6 +269,15 @@
|
|
|
265
269
|
"description": "The user who issued this verification.",
|
|
266
270
|
"format": "did"
|
|
267
271
|
},
|
|
272
|
+
"issuerDisplayName": {
|
|
273
|
+
"type": "string",
|
|
274
|
+
"description": "The display name of the issuer."
|
|
275
|
+
},
|
|
276
|
+
"issuerHandle": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"description": "The handle of the issuer.",
|
|
279
|
+
"format": "handle"
|
|
280
|
+
},
|
|
268
281
|
"uri": {
|
|
269
282
|
"type": "string",
|
|
270
283
|
"description": "The AT-URI of the verification record.",
|
|
@@ -685,6 +698,10 @@
|
|
|
685
698
|
"description": "An optional embed associated with the status.",
|
|
686
699
|
"refs": ["app.bsky.embed.external#view"]
|
|
687
700
|
},
|
|
701
|
+
"labels": {
|
|
702
|
+
"type": "array",
|
|
703
|
+
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
|
|
704
|
+
},
|
|
688
705
|
"expiresAt": {
|
|
689
706
|
"type": "string",
|
|
690
707
|
"description": "The date when this status will expire. The application might choose to no longer return the status after expiration.",
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
"properties": {
|
|
82
82
|
"text": {
|
|
83
83
|
"type": "string",
|
|
84
|
-
"maxLength":
|
|
85
|
-
"maxGraphemes":
|
|
86
|
-
"description": "The primary post content."
|
|
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
87
|
},
|
|
88
88
|
"labels": {
|
|
89
89
|
"type": "union",
|
|
@@ -95,6 +95,10 @@
|
|
|
95
95
|
"items": { "type": "ref", "ref": "#draftEmbedImage" },
|
|
96
96
|
"maxLength": 4
|
|
97
97
|
},
|
|
98
|
+
"embedGallery": {
|
|
99
|
+
"type": "ref",
|
|
100
|
+
"ref": "#draftEmbedGallery"
|
|
101
|
+
},
|
|
98
102
|
"embedVideos": {
|
|
99
103
|
"type": "array",
|
|
100
104
|
"items": { "type": "ref", "ref": "#draftEmbedVideo" },
|
|
@@ -167,6 +171,22 @@
|
|
|
167
171
|
}
|
|
168
172
|
},
|
|
169
173
|
|
|
174
|
+
"draftEmbedGallery": {
|
|
175
|
+
"type": "object",
|
|
176
|
+
"required": ["items"],
|
|
177
|
+
"properties": {
|
|
178
|
+
"items": {
|
|
179
|
+
"type": "ref",
|
|
180
|
+
"ref": "#draftEmbedGalleryItems"
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"draftEmbedGalleryItems": {
|
|
185
|
+
"type": "array",
|
|
186
|
+
"items": { "type": "union", "refs": ["#draftEmbedImage"] },
|
|
187
|
+
"maxLength": 20,
|
|
188
|
+
"description": "The schema-level maxLength of 20 is a future-proof ceiling. Clients should currently enforce a soft limit of 10 items in authoring UIs."
|
|
189
|
+
},
|
|
170
190
|
"draftEmbedImage": {
|
|
171
191
|
"type": "object",
|
|
172
192
|
"required": ["localRef"],
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lexicon": 1,
|
|
3
|
+
"id": "app.bsky.embed.external",
|
|
4
|
+
"defs": {
|
|
5
|
+
"main": {
|
|
6
|
+
"type": "object",
|
|
7
|
+
"description": "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).",
|
|
8
|
+
"required": ["external"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"external": {
|
|
11
|
+
"type": "ref",
|
|
12
|
+
"ref": "#external"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"external": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"required": ["uri", "title", "description"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"uri": { "type": "string", "format": "uri" },
|
|
21
|
+
"title": { "type": "string" },
|
|
22
|
+
"description": { "type": "string" },
|
|
23
|
+
"thumb": {
|
|
24
|
+
"type": "blob",
|
|
25
|
+
"accept": ["image/*"],
|
|
26
|
+
"maxSize": 1000000
|
|
27
|
+
},
|
|
28
|
+
"associatedRefs": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": {
|
|
31
|
+
"type": "ref",
|
|
32
|
+
"ref": "com.atproto.repo.strongRef"
|
|
33
|
+
},
|
|
34
|
+
"description": "StrongRefs (uri+cid) of the Atmosphere records that backed this view."
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"view": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"required": ["external"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"external": {
|
|
43
|
+
"type": "ref",
|
|
44
|
+
"ref": "#viewExternal"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"viewExternal": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": ["uri", "title", "description"],
|
|
51
|
+
"properties": {
|
|
52
|
+
"uri": { "type": "string", "format": "uri" },
|
|
53
|
+
"title": { "type": "string" },
|
|
54
|
+
"description": { "type": "string" },
|
|
55
|
+
"thumb": { "type": "string", "format": "uri" },
|
|
56
|
+
"createdAt": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"format": "datetime",
|
|
59
|
+
"description": "When the external content was created, if available. Example: a publication date, for an article."
|
|
60
|
+
},
|
|
61
|
+
"updatedAt": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"format": "datetime",
|
|
64
|
+
"description": "When the external content was updated, if available."
|
|
65
|
+
},
|
|
66
|
+
"readingTime": {
|
|
67
|
+
"type": "integer",
|
|
68
|
+
"description": "Estimated reading time in minutes, if applicable and available."
|
|
69
|
+
},
|
|
70
|
+
"labels": {
|
|
71
|
+
"type": "array",
|
|
72
|
+
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
|
|
73
|
+
},
|
|
74
|
+
"source": { "type": "ref", "ref": "#viewExternalSource" },
|
|
75
|
+
"associatedRefs": {
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": {
|
|
78
|
+
"type": "ref",
|
|
79
|
+
"ref": "com.atproto.repo.strongRef"
|
|
80
|
+
},
|
|
81
|
+
"description": "StrongRefs (uri+cid) of the Atmosphere records that backed this view."
|
|
82
|
+
},
|
|
83
|
+
"associatedProfiles": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": {
|
|
86
|
+
"type": "ref",
|
|
87
|
+
"ref": "app.bsky.actor.defs#profileViewBasic"
|
|
88
|
+
},
|
|
89
|
+
"description": "Profiles of the owners of the Atmosphere records that backed this view."
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"viewExternalSource": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"description": "The source of an external embed, such as a standard.site publication.",
|
|
96
|
+
"required": ["uri", "title"],
|
|
97
|
+
"properties": {
|
|
98
|
+
"uri": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"format": "uri",
|
|
101
|
+
"description": "URI of the source, if available. Example: the https:// URL of a site.standard.publication record."
|
|
102
|
+
},
|
|
103
|
+
"icon": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"format": "uri",
|
|
106
|
+
"description": "Fully-qualified URL where an icon representing the source can be fetched. For example, CDN location provided by the App View."
|
|
107
|
+
},
|
|
108
|
+
"title": { "type": "string" },
|
|
109
|
+
"description": { "type": "string" },
|
|
110
|
+
"theme": {
|
|
111
|
+
"type": "ref",
|
|
112
|
+
"ref": "#viewExternalSourceTheme"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"viewExternalSourceTheme": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"description": "The theme colors of an external source, such as a site.standard.publication. These colors may be used when rendering an embed from that source.",
|
|
119
|
+
"properties": {
|
|
120
|
+
"backgroundRGB": {
|
|
121
|
+
"type": "ref",
|
|
122
|
+
"ref": "#colorRGB"
|
|
123
|
+
},
|
|
124
|
+
"foregroundRGB": {
|
|
125
|
+
"type": "ref",
|
|
126
|
+
"ref": "#colorRGB"
|
|
127
|
+
},
|
|
128
|
+
"accentRGB": {
|
|
129
|
+
"type": "ref",
|
|
130
|
+
"ref": "#colorRGB"
|
|
131
|
+
},
|
|
132
|
+
"accentForegroundRGB": {
|
|
133
|
+
"type": "ref",
|
|
134
|
+
"ref": "#colorRGB"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"colorRGB": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"description": "RGB color definition, inspired by site.standard.theme.color#rgb",
|
|
141
|
+
"required": ["r", "g", "b"],
|
|
142
|
+
"properties": {
|
|
143
|
+
"r": { "type": "integer", "minimum": 0, "maximum": 255 },
|
|
144
|
+
"g": { "type": "integer", "minimum": 0, "maximum": 255 },
|
|
145
|
+
"b": { "type": "integer", "minimum": 0, "maximum": 255 }
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|