···1414import * as ToolsOzoneSignatureSearchAccounts from "./types/tools/ozone/signature/searchAccounts.ts";
1515import * as ToolsOzoneSignatureFindRelatedAccounts from "./types/tools/ozone/signature/findRelatedAccounts.ts";
1616import * as ToolsOzoneServerGetConfig from "./types/tools/ozone/server/getConfig.ts";
1717+import * as ToolsOzoneVerificationRevokeVerifications from "./types/tools/ozone/verification/revokeVerifications.ts";
1818+import * as ToolsOzoneVerificationGrantVerifications from "./types/tools/ozone/verification/grantVerifications.ts";
1919+import * as ToolsOzoneVerificationListVerifications from "./types/tools/ozone/verification/listVerifications.ts";
2020+import * as ToolsOzoneSafelinkAddRule from "./types/tools/ozone/safelink/addRule.ts";
2121+import * as ToolsOzoneSafelinkRemoveRule from "./types/tools/ozone/safelink/removeRule.ts";
2222+import * as ToolsOzoneSafelinkUpdateRule from "./types/tools/ozone/safelink/updateRule.ts";
2323+import * as ToolsOzoneSafelinkQueryEvents from "./types/tools/ozone/safelink/queryEvents.ts";
2424+import * as ToolsOzoneSafelinkQueryRules from "./types/tools/ozone/safelink/queryRules.ts";
1725import * as ToolsOzoneTeamListMembers from "./types/tools/ozone/team/listMembers.ts";
1826import * as ToolsOzoneTeamDeleteMember from "./types/tools/ozone/team/deleteMember.ts";
1927import * as ToolsOzoneTeamUpdateMember from "./types/tools/ozone/team/updateMember.ts";
2028import * as ToolsOzoneTeamAddMember from "./types/tools/ozone/team/addMember.ts";
2929+import * as ToolsOzoneHostingGetAccountHistory from "./types/tools/ozone/hosting/getAccountHistory.ts";
2130import * as ToolsOzoneCommunicationUpdateTemplate from "./types/tools/ozone/communication/updateTemplate.ts";
2231import * as ToolsOzoneCommunicationCreateTemplate from "./types/tools/ozone/communication/createTemplate.ts";
2332import * as ToolsOzoneCommunicationListTemplates from "./types/tools/ozone/communication/listTemplates.ts";
···3241import * as ToolsOzoneSettingRemoveOptions from "./types/tools/ozone/setting/removeOptions.ts";
3342import * as ToolsOzoneSettingUpsertOption from "./types/tools/ozone/setting/upsertOption.ts";
3443import * as ToolsOzoneModerationGetReporterStats from "./types/tools/ozone/moderation/getReporterStats.ts";
4444+import * as ToolsOzoneModerationCancelScheduledActions from "./types/tools/ozone/moderation/cancelScheduledActions.ts";
4545+import * as ToolsOzoneModerationListScheduledActions from "./types/tools/ozone/moderation/listScheduledActions.ts";
3546import * as ToolsOzoneModerationQueryStatuses from "./types/tools/ozone/moderation/queryStatuses.ts";
3647import * as ToolsOzoneModerationGetRepo from "./types/tools/ozone/moderation/getRepo.ts";
4848+import * as ToolsOzoneModerationGetSubjects from "./types/tools/ozone/moderation/getSubjects.ts";
3749import * as ToolsOzoneModerationGetRecords from "./types/tools/ozone/moderation/getRecords.ts";
5050+import * as ToolsOzoneModerationScheduleAction from "./types/tools/ozone/moderation/scheduleAction.ts";
3851import * as ToolsOzoneModerationGetEvent from "./types/tools/ozone/moderation/getEvent.ts";
3952import * as ToolsOzoneModerationQueryEvents from "./types/tools/ozone/moderation/queryEvents.ts";
4053import * as ToolsOzoneModerationGetRecord from "./types/tools/ozone/moderation/getRecord.ts";
4154import * as ToolsOzoneModerationEmitEvent from "./types/tools/ozone/moderation/emitEvent.ts";
4255import * as ToolsOzoneModerationSearchRepos from "./types/tools/ozone/moderation/searchRepos.ts";
5656+import * as ToolsOzoneModerationGetAccountTimeline from "./types/tools/ozone/moderation/getAccountTimeline.ts";
4357import * as ToolsOzoneModerationGetRepos from "./types/tools/ozone/moderation/getRepos.ts";
4458import * as AppBskyVideoUploadVideo from "./types/app/bsky/video/uploadVideo.ts";
4559import * as AppBskyVideoGetJobStatus from "./types/app/bsky/video/getJobStatus.ts";
4660import * as AppBskyVideoGetUploadLimits from "./types/app/bsky/video/getUploadLimits.ts";
6161+import * as AppBskyBookmarkDeleteBookmark from "./types/app/bsky/bookmark/deleteBookmark.ts";
6262+import * as AppBskyBookmarkGetBookmarks from "./types/app/bsky/bookmark/getBookmarks.ts";
6363+import * as AppBskyBookmarkCreateBookmark from "./types/app/bsky/bookmark/createBookmark.ts";
4764import * as AppBskyNotificationRegisterPush from "./types/app/bsky/notification/registerPush.ts";
4865import * as AppBskyNotificationPutPreferences from "./types/app/bsky/notification/putPreferences.ts";
6666+import * as AppBskyNotificationPutActivitySubscription from "./types/app/bsky/notification/putActivitySubscription.ts";
6767+import * as AppBskyNotificationPutPreferencesV2 from "./types/app/bsky/notification/putPreferencesV2.ts";
4968import * as AppBskyNotificationUpdateSeen from "./types/app/bsky/notification/updateSeen.ts";
6969+import * as AppBskyNotificationListActivitySubscriptions from "./types/app/bsky/notification/listActivitySubscriptions.ts";
7070+import * as AppBskyNotificationUnregisterPush from "./types/app/bsky/notification/unregisterPush.ts";
7171+import * as AppBskyNotificationGetPreferences from "./types/app/bsky/notification/getPreferences.ts";
5072import * as AppBskyNotificationListNotifications from "./types/app/bsky/notification/listNotifications.ts";
5173import * as AppBskyNotificationGetUnreadCount from "./types/app/bsky/notification/getUnreadCount.ts";
7474+import * as AppBskyUnspeccedGetSuggestedFeedsSkeleton from "./types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts";
5275import * as AppBskyUnspeccedSearchStarterPacksSkeleton from "./types/app/bsky/unspecced/searchStarterPacksSkeleton.ts";
7676+import * as AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton from "./types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.ts";
7777+import * as AppBskyUnspeccedGetSuggestedUsers from "./types/app/bsky/unspecced/getSuggestedUsers.ts";
7878+import * as AppBskyUnspeccedGetPostThreadOtherV2 from "./types/app/bsky/unspecced/getPostThreadOtherV2.ts";
7979+import * as AppBskyUnspeccedGetSuggestedStarterPacks from "./types/app/bsky/unspecced/getSuggestedStarterPacks.ts";
8080+import * as AppBskyUnspeccedGetSuggestedStarterPacksSkeleton from "./types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts";
8181+import * as AppBskyUnspeccedGetOnboardingSuggestedStarterPacks from "./types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts";
8282+import * as AppBskyUnspeccedGetSuggestedUsersSkeleton from "./types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts";
8383+import * as AppBskyUnspeccedGetPostThreadV2 from "./types/app/bsky/unspecced/getPostThreadV2.ts";
8484+import * as AppBskyUnspeccedGetTrends from "./types/app/bsky/unspecced/getTrends.ts";
5385import * as AppBskyUnspeccedSearchActorsSkeleton from "./types/app/bsky/unspecced/searchActorsSkeleton.ts";
5486import * as AppBskyUnspeccedGetSuggestionsSkeleton from "./types/app/bsky/unspecced/getSuggestionsSkeleton.ts";
5587import * as AppBskyUnspeccedSearchPostsSkeleton from "./types/app/bsky/unspecced/searchPostsSkeleton.ts";
8888+import * as AppBskyUnspeccedGetAgeAssuranceState from "./types/app/bsky/unspecced/getAgeAssuranceState.ts";
5689import * as AppBskyUnspeccedGetPopularFeedGenerators from "./types/app/bsky/unspecced/getPopularFeedGenerators.ts";
9090+import * as AppBskyUnspeccedInitAgeAssurance from "./types/app/bsky/unspecced/initAgeAssurance.ts";
5791import * as AppBskyUnspeccedGetTrendingTopics from "./types/app/bsky/unspecced/getTrendingTopics.ts";
5892import * as AppBskyUnspeccedGetTaggedSuggestions from "./types/app/bsky/unspecced/getTaggedSuggestions.ts";
9393+import * as AppBskyUnspeccedGetSuggestedFeeds from "./types/app/bsky/unspecced/getSuggestedFeeds.ts";
9494+import * as AppBskyUnspeccedGetTrendsSkeleton from "./types/app/bsky/unspecced/getTrendsSkeleton.ts";
5995import * as AppBskyUnspeccedGetConfig from "./types/app/bsky/unspecced/getConfig.ts";
6096import * as AppBskyGraphGetStarterPacks from "./types/app/bsky/graph/getStarterPacks.ts";
6197import * as AppBskyGraphGetSuggestedFollowsByActor from "./types/app/bsky/graph/getSuggestedFollowsByActor.ts";
9898+import * as AppBskyGraphGetStarterPacksWithMembership from "./types/app/bsky/graph/getStarterPacksWithMembership.ts";
9999+import * as AppBskyGraphGetListsWithMembership from "./types/app/bsky/graph/getListsWithMembership.ts";
62100import * as AppBskyGraphUnmuteActorList from "./types/app/bsky/graph/unmuteActorList.ts";
63101import * as AppBskyGraphGetListBlocks from "./types/app/bsky/graph/getListBlocks.ts";
64102import * as AppBskyGraphGetStarterPack from "./types/app/bsky/graph/getStarterPack.ts";
···96134import * as AppBskyFeedGetListFeed from "./types/app/bsky/feed/getListFeed.ts";
97135import * as AppBskyFeedGetSuggestedFeeds from "./types/app/bsky/feed/getSuggestedFeeds.ts";
98136import * as AppBskyFeedGetActorFeeds from "./types/app/bsky/feed/getActorFeeds.ts";
137137+import * as AppBskyAgeassuranceBegin from "./types/app/bsky/ageassurance/begin.ts";
138138+import * as AppBskyAgeassuranceGetState from "./types/app/bsky/ageassurance/getState.ts";
139139+import * as AppBskyAgeassuranceGetConfig from "./types/app/bsky/ageassurance/getConfig.ts";
99140import * as AppBskyActorSearchActorsTypeahead from "./types/app/bsky/actor/searchActorsTypeahead.ts";
100141import * as AppBskyActorPutPreferences from "./types/app/bsky/actor/putPreferences.ts";
101142import * as AppBskyActorGetProfile from "./types/app/bsky/actor/getProfile.ts";
···110151import * as ChatBskyConvoGetLog from "./types/chat/bsky/convo/getLog.ts";
111152import * as ChatBskyConvoSendMessage from "./types/chat/bsky/convo/sendMessage.ts";
112153import * as ChatBskyConvoLeaveConvo from "./types/chat/bsky/convo/leaveConvo.ts";
154154+import * as ChatBskyConvoAddReaction from "./types/chat/bsky/convo/addReaction.ts";
113155import * as ChatBskyConvoAcceptConvo from "./types/chat/bsky/convo/acceptConvo.ts";
114156import * as ChatBskyConvoMuteConvo from "./types/chat/bsky/convo/muteConvo.ts";
115157import * as ChatBskyConvoDeleteMessageForSelf from "./types/chat/bsky/convo/deleteMessageForSelf.ts";
158158+import * as ChatBskyConvoRemoveReaction from "./types/chat/bsky/convo/removeReaction.ts";
116159import * as ChatBskyConvoUpdateRead from "./types/chat/bsky/convo/updateRead.ts";
117160import * as ChatBskyConvoUpdateAllRead from "./types/chat/bsky/convo/updateAllRead.ts";
118161import * as ChatBskyConvoGetConvo from "./types/chat/bsky/convo/getConvo.ts";
···173216import * as SoSprkStoryGetTimeline from "./types/so/sprk/story/getTimeline.ts";
174217import * as SoSprkStoryGetStories from "./types/so/sprk/story/getStories.ts";
175218import * as SoSprkLabelerGetServices from "./types/so/sprk/labeler/getServices.ts";
219219+import * as ComAtprotoTempDereferenceScope from "./types/com/atproto/temp/dereferenceScope.ts";
176220import * as ComAtprotoTempAddReservedHandle from "./types/com/atproto/temp/addReservedHandle.ts";
177221import * as ComAtprotoTempCheckSignupQueue from "./types/com/atproto/temp/checkSignupQueue.ts";
222222+import * as ComAtprotoTempCheckHandleAvailability from "./types/com/atproto/temp/checkHandleAvailability.ts";
178223import * as ComAtprotoTempRequestPhoneVerification from "./types/com/atproto/temp/requestPhoneVerification.ts";
224224+import * as ComAtprotoTempRevokeAccountCredentials from "./types/com/atproto/temp/revokeAccountCredentials.ts";
179225import * as ComAtprotoTempFetchLabels from "./types/com/atproto/temp/fetchLabels.ts";
180226import * as ComAtprotoIdentityUpdateHandle from "./types/com/atproto/identity/updateHandle.ts";
181227import * as ComAtprotoIdentitySignPlcOperation from "./types/com/atproto/identity/signPlcOperation.ts";
182228import * as ComAtprotoIdentitySubmitPlcOperation from "./types/com/atproto/identity/submitPlcOperation.ts";
229229+import * as ComAtprotoIdentityResolveIdentity from "./types/com/atproto/identity/resolveIdentity.ts";
230230+import * as ComAtprotoIdentityRefreshIdentity from "./types/com/atproto/identity/refreshIdentity.ts";
183231import * as ComAtprotoIdentityResolveHandle from "./types/com/atproto/identity/resolveHandle.ts";
184232import * as ComAtprotoIdentityRequestPlcOperationSignature from "./types/com/atproto/identity/requestPlcOperationSignature.ts";
185233import * as ComAtprotoIdentityGetRecommendedDidCredentials from "./types/com/atproto/identity/getRecommendedDidCredentials.ts";
234234+import * as ComAtprotoIdentityResolveDid from "./types/com/atproto/identity/resolveDid.ts";
186235import * as ComAtprotoAdminUpdateAccountEmail from "./types/com/atproto/admin/updateAccountEmail.ts";
187236import * as ComAtprotoAdminGetAccountInfo from "./types/com/atproto/admin/getAccountInfo.ts";
188237import * as ComAtprotoAdminGetSubjectStatus from "./types/com/atproto/admin/getSubjectStatus.ts";
···190239import * as ComAtprotoAdminUpdateAccountPassword from "./types/com/atproto/admin/updateAccountPassword.ts";
191240import * as ComAtprotoAdminUpdateAccountHandle from "./types/com/atproto/admin/updateAccountHandle.ts";
192241import * as ComAtprotoAdminGetInviteCodes from "./types/com/atproto/admin/getInviteCodes.ts";
242242+import * as ComAtprotoAdminUpdateAccountSigningKey from "./types/com/atproto/admin/updateAccountSigningKey.ts";
193243import * as ComAtprotoAdminEnableAccountInvites from "./types/com/atproto/admin/enableAccountInvites.ts";
194244import * as ComAtprotoAdminDisableAccountInvites from "./types/com/atproto/admin/disableAccountInvites.ts";
195245import * as ComAtprotoAdminDisableInviteCodes from "./types/com/atproto/admin/disableInviteCodes.ts";
···224274import * as ComAtprotoServerCreateAccount from "./types/com/atproto/server/createAccount.ts";
225275import * as ComAtprotoServerDeleteAccount from "./types/com/atproto/server/deleteAccount.ts";
226276import * as ComAtprotoServerCreateInviteCode from "./types/com/atproto/server/createInviteCode.ts";
277277+import * as ComAtprotoLexiconResolveLexicon from "./types/com/atproto/lexicon/resolveLexicon.ts";
227278import * as ComAtprotoSyncGetHead from "./types/com/atproto/sync/getHead.ts";
228279import * as ComAtprotoSyncGetBlob from "./types/com/atproto/sync/getBlob.ts";
229280import * as ComAtprotoSyncGetRepo from "./types/com/atproto/sync/getRepo.ts";
···234285import * as ComAtprotoSyncSubscribeRepos from "./types/com/atproto/sync/subscribeRepos.ts";
235286import * as ComAtprotoSyncGetRepoStatus from "./types/com/atproto/sync/getRepoStatus.ts";
236287import * as ComAtprotoSyncGetRecord from "./types/com/atproto/sync/getRecord.ts";
288288+import * as ComAtprotoSyncListHosts from "./types/com/atproto/sync/listHosts.ts";
237289import * as ComAtprotoSyncListRepos from "./types/com/atproto/sync/listRepos.ts";
290290+import * as ComAtprotoSyncGetHostStatus from "./types/com/atproto/sync/getHostStatus.ts";
238291import * as ComAtprotoSyncGetBlocks from "./types/com/atproto/sync/getBlocks.ts";
239292import * as ComAtprotoSyncListReposByCollection from "./types/com/atproto/sync/listReposByCollection.ts";
240293import * as ComAtprotoSyncGetCheckout from "./types/com/atproto/sync/getCheckout.ts";
···254307 DefsRoleAdmin: "tools.ozone.team.defs#roleAdmin",
255308 DefsRoleModerator: "tools.ozone.team.defs#roleModerator",
256309 DefsRoleTriage: "tools.ozone.team.defs#roleTriage",
310310+ DefsRoleVerifier: "tools.ozone.team.defs#roleVerifier",
311311+};
312312+export const TOOLS_OZONE_REPORT = {
313313+ DefsReasonAppeal: "tools.ozone.report.defs#reasonAppeal",
314314+ DefsReasonOther: "tools.ozone.report.defs#reasonOther",
315315+ DefsReasonViolenceAnimal: "tools.ozone.report.defs#reasonViolenceAnimal",
316316+ DefsReasonViolenceThreats: "tools.ozone.report.defs#reasonViolenceThreats",
317317+ DefsReasonViolenceGraphicContent:
318318+ "tools.ozone.report.defs#reasonViolenceGraphicContent",
319319+ DefsReasonViolenceGlorification:
320320+ "tools.ozone.report.defs#reasonViolenceGlorification",
321321+ DefsReasonViolenceExtremistContent:
322322+ "tools.ozone.report.defs#reasonViolenceExtremistContent",
323323+ DefsReasonViolenceTrafficking:
324324+ "tools.ozone.report.defs#reasonViolenceTrafficking",
325325+ DefsReasonViolenceOther: "tools.ozone.report.defs#reasonViolenceOther",
326326+ DefsReasonSexualAbuseContent:
327327+ "tools.ozone.report.defs#reasonSexualAbuseContent",
328328+ DefsReasonSexualNCII: "tools.ozone.report.defs#reasonSexualNCII",
329329+ DefsReasonSexualDeepfake: "tools.ozone.report.defs#reasonSexualDeepfake",
330330+ DefsReasonSexualAnimal: "tools.ozone.report.defs#reasonSexualAnimal",
331331+ DefsReasonSexualUnlabeled: "tools.ozone.report.defs#reasonSexualUnlabeled",
332332+ DefsReasonSexualOther: "tools.ozone.report.defs#reasonSexualOther",
333333+ DefsReasonChildSafetyCSAM: "tools.ozone.report.defs#reasonChildSafetyCSAM",
334334+ DefsReasonChildSafetyGroom: "tools.ozone.report.defs#reasonChildSafetyGroom",
335335+ DefsReasonChildSafetyPrivacy:
336336+ "tools.ozone.report.defs#reasonChildSafetyPrivacy",
337337+ DefsReasonChildSafetyHarassment:
338338+ "tools.ozone.report.defs#reasonChildSafetyHarassment",
339339+ DefsReasonChildSafetyOther: "tools.ozone.report.defs#reasonChildSafetyOther",
340340+ DefsReasonHarassmentTroll: "tools.ozone.report.defs#reasonHarassmentTroll",
341341+ DefsReasonHarassmentTargeted:
342342+ "tools.ozone.report.defs#reasonHarassmentTargeted",
343343+ DefsReasonHarassmentHateSpeech:
344344+ "tools.ozone.report.defs#reasonHarassmentHateSpeech",
345345+ DefsReasonHarassmentDoxxing:
346346+ "tools.ozone.report.defs#reasonHarassmentDoxxing",
347347+ DefsReasonHarassmentOther: "tools.ozone.report.defs#reasonHarassmentOther",
348348+ DefsReasonMisleadingBot: "tools.ozone.report.defs#reasonMisleadingBot",
349349+ DefsReasonMisleadingImpersonation:
350350+ "tools.ozone.report.defs#reasonMisleadingImpersonation",
351351+ DefsReasonMisleadingSpam: "tools.ozone.report.defs#reasonMisleadingSpam",
352352+ DefsReasonMisleadingScam: "tools.ozone.report.defs#reasonMisleadingScam",
353353+ DefsReasonMisleadingElections:
354354+ "tools.ozone.report.defs#reasonMisleadingElections",
355355+ DefsReasonMisleadingOther: "tools.ozone.report.defs#reasonMisleadingOther",
356356+ DefsReasonRuleSiteSecurity: "tools.ozone.report.defs#reasonRuleSiteSecurity",
357357+ DefsReasonRuleProhibitedSales:
358358+ "tools.ozone.report.defs#reasonRuleProhibitedSales",
359359+ DefsReasonRuleBanEvasion: "tools.ozone.report.defs#reasonRuleBanEvasion",
360360+ DefsReasonRuleOther: "tools.ozone.report.defs#reasonRuleOther",
361361+ DefsReasonSelfHarmContent: "tools.ozone.report.defs#reasonSelfHarmContent",
362362+ DefsReasonSelfHarmED: "tools.ozone.report.defs#reasonSelfHarmED",
363363+ DefsReasonSelfHarmStunts: "tools.ozone.report.defs#reasonSelfHarmStunts",
364364+ DefsReasonSelfHarmSubstances:
365365+ "tools.ozone.report.defs#reasonSelfHarmSubstances",
366366+ DefsReasonSelfHarmOther: "tools.ozone.report.defs#reasonSelfHarmOther",
257367};
258368export const TOOLS_OZONE_MODERATION = {
259369 DefsReviewOpen: "tools.ozone.moderation.defs#reviewOpen",
260370 DefsReviewEscalated: "tools.ozone.moderation.defs#reviewEscalated",
261371 DefsReviewClosed: "tools.ozone.moderation.defs#reviewClosed",
262372 DefsReviewNone: "tools.ozone.moderation.defs#reviewNone",
373373+ DefsTimelineEventPlcCreate:
374374+ "tools.ozone.moderation.defs#timelineEventPlcCreate",
375375+ DefsTimelineEventPlcOperation:
376376+ "tools.ozone.moderation.defs#timelineEventPlcOperation",
377377+ DefsTimelineEventPlcTombstone:
378378+ "tools.ozone.moderation.defs#timelineEventPlcTombstone",
263379};
264380export const APP_BSKY_GRAPH = {
265381 DefsModlist: "app.bsky.graph.defs#modlist",
···281397 DefsInteractionReply: "app.bsky.feed.defs#interactionReply",
282398 DefsInteractionQuote: "app.bsky.feed.defs#interactionQuote",
283399 DefsInteractionShare: "app.bsky.feed.defs#interactionShare",
400400+};
401401+export const APP_BSKY_ACTOR = {
402402+ StatusLive: "app.bsky.actor.status#live",
284403};
285404export const SO_SPRK_FEED = {
286405 DefsRequestLess: "so.sprk.feed.defs#requestLess",
···341460 _server: Server;
342461 signature: ToolsOzoneSignatureNS;
343462 server: ToolsOzoneServerNS;
463463+ verification: ToolsOzoneVerificationNS;
464464+ safelink: ToolsOzoneSafelinkNS;
344465 team: ToolsOzoneTeamNS;
466466+ hosting: ToolsOzoneHostingNS;
345467 communication: ToolsOzoneCommunicationNS;
346468 set: ToolsOzoneSetNS;
347469 setting: ToolsOzoneSettingNS;
···351473 this._server = server;
352474 this.signature = new ToolsOzoneSignatureNS(server);
353475 this.server = new ToolsOzoneServerNS(server);
476476+ this.verification = new ToolsOzoneVerificationNS(server);
477477+ this.safelink = new ToolsOzoneSafelinkNS(server);
354478 this.team = new ToolsOzoneTeamNS(server);
479479+ this.hosting = new ToolsOzoneHostingNS(server);
355480 this.communication = new ToolsOzoneCommunicationNS(server);
356481 this.set = new ToolsOzoneSetNS(server);
357482 this.setting = new ToolsOzoneSettingNS(server);
···423548 }
424549}
425550551551+export class ToolsOzoneVerificationNS {
552552+ _server: Server;
553553+554554+ constructor(server: Server) {
555555+ this._server = server;
556556+ }
557557+558558+ revokeVerifications<A extends Auth = void>(
559559+ cfg: MethodConfigOrHandler<
560560+ A,
561561+ ToolsOzoneVerificationRevokeVerifications.QueryParams,
562562+ ToolsOzoneVerificationRevokeVerifications.HandlerInput,
563563+ ToolsOzoneVerificationRevokeVerifications.HandlerOutput
564564+ >,
565565+ ) {
566566+ const nsid = "tools.ozone.verification.revokeVerifications"; // @ts-ignore - dynamically generated
567567+ return this._server.xrpc.method(nsid, cfg);
568568+ }
569569+570570+ grantVerifications<A extends Auth = void>(
571571+ cfg: MethodConfigOrHandler<
572572+ A,
573573+ ToolsOzoneVerificationGrantVerifications.QueryParams,
574574+ ToolsOzoneVerificationGrantVerifications.HandlerInput,
575575+ ToolsOzoneVerificationGrantVerifications.HandlerOutput
576576+ >,
577577+ ) {
578578+ const nsid = "tools.ozone.verification.grantVerifications"; // @ts-ignore - dynamically generated
579579+ return this._server.xrpc.method(nsid, cfg);
580580+ }
581581+582582+ listVerifications<A extends Auth = void>(
583583+ cfg: MethodConfigOrHandler<
584584+ A,
585585+ ToolsOzoneVerificationListVerifications.QueryParams,
586586+ ToolsOzoneVerificationListVerifications.HandlerInput,
587587+ ToolsOzoneVerificationListVerifications.HandlerOutput
588588+ >,
589589+ ) {
590590+ const nsid = "tools.ozone.verification.listVerifications"; // @ts-ignore - dynamically generated
591591+ return this._server.xrpc.method(nsid, cfg);
592592+ }
593593+}
594594+595595+export class ToolsOzoneSafelinkNS {
596596+ _server: Server;
597597+598598+ constructor(server: Server) {
599599+ this._server = server;
600600+ }
601601+602602+ addRule<A extends Auth = void>(
603603+ cfg: MethodConfigOrHandler<
604604+ A,
605605+ ToolsOzoneSafelinkAddRule.QueryParams,
606606+ ToolsOzoneSafelinkAddRule.HandlerInput,
607607+ ToolsOzoneSafelinkAddRule.HandlerOutput
608608+ >,
609609+ ) {
610610+ const nsid = "tools.ozone.safelink.addRule"; // @ts-ignore - dynamically generated
611611+ return this._server.xrpc.method(nsid, cfg);
612612+ }
613613+614614+ removeRule<A extends Auth = void>(
615615+ cfg: MethodConfigOrHandler<
616616+ A,
617617+ ToolsOzoneSafelinkRemoveRule.QueryParams,
618618+ ToolsOzoneSafelinkRemoveRule.HandlerInput,
619619+ ToolsOzoneSafelinkRemoveRule.HandlerOutput
620620+ >,
621621+ ) {
622622+ const nsid = "tools.ozone.safelink.removeRule"; // @ts-ignore - dynamically generated
623623+ return this._server.xrpc.method(nsid, cfg);
624624+ }
625625+626626+ updateRule<A extends Auth = void>(
627627+ cfg: MethodConfigOrHandler<
628628+ A,
629629+ ToolsOzoneSafelinkUpdateRule.QueryParams,
630630+ ToolsOzoneSafelinkUpdateRule.HandlerInput,
631631+ ToolsOzoneSafelinkUpdateRule.HandlerOutput
632632+ >,
633633+ ) {
634634+ const nsid = "tools.ozone.safelink.updateRule"; // @ts-ignore - dynamically generated
635635+ return this._server.xrpc.method(nsid, cfg);
636636+ }
637637+638638+ queryEvents<A extends Auth = void>(
639639+ cfg: MethodConfigOrHandler<
640640+ A,
641641+ ToolsOzoneSafelinkQueryEvents.QueryParams,
642642+ ToolsOzoneSafelinkQueryEvents.HandlerInput,
643643+ ToolsOzoneSafelinkQueryEvents.HandlerOutput
644644+ >,
645645+ ) {
646646+ const nsid = "tools.ozone.safelink.queryEvents"; // @ts-ignore - dynamically generated
647647+ return this._server.xrpc.method(nsid, cfg);
648648+ }
649649+650650+ queryRules<A extends Auth = void>(
651651+ cfg: MethodConfigOrHandler<
652652+ A,
653653+ ToolsOzoneSafelinkQueryRules.QueryParams,
654654+ ToolsOzoneSafelinkQueryRules.HandlerInput,
655655+ ToolsOzoneSafelinkQueryRules.HandlerOutput
656656+ >,
657657+ ) {
658658+ const nsid = "tools.ozone.safelink.queryRules"; // @ts-ignore - dynamically generated
659659+ return this._server.xrpc.method(nsid, cfg);
660660+ }
661661+}
662662+426663export class ToolsOzoneTeamNS {
427664 _server: Server;
428665···475712 >,
476713 ) {
477714 const nsid = "tools.ozone.team.addMember"; // @ts-ignore - dynamically generated
715715+ return this._server.xrpc.method(nsid, cfg);
716716+ }
717717+}
718718+719719+export class ToolsOzoneHostingNS {
720720+ _server: Server;
721721+722722+ constructor(server: Server) {
723723+ this._server = server;
724724+ }
725725+726726+ getAccountHistory<A extends Auth = void>(
727727+ cfg: MethodConfigOrHandler<
728728+ A,
729729+ ToolsOzoneHostingGetAccountHistory.QueryParams,
730730+ ToolsOzoneHostingGetAccountHistory.HandlerInput,
731731+ ToolsOzoneHostingGetAccountHistory.HandlerOutput
732732+ >,
733733+ ) {
734734+ const nsid = "tools.ozone.hosting.getAccountHistory"; // @ts-ignore - dynamically generated
478735 return this._server.xrpc.method(nsid, cfg);
479736 }
480737}
···678935 return this._server.xrpc.method(nsid, cfg);
679936 }
680937938938+ cancelScheduledActions<A extends Auth = void>(
939939+ cfg: MethodConfigOrHandler<
940940+ A,
941941+ ToolsOzoneModerationCancelScheduledActions.QueryParams,
942942+ ToolsOzoneModerationCancelScheduledActions.HandlerInput,
943943+ ToolsOzoneModerationCancelScheduledActions.HandlerOutput
944944+ >,
945945+ ) {
946946+ const nsid = "tools.ozone.moderation.cancelScheduledActions"; // @ts-ignore - dynamically generated
947947+ return this._server.xrpc.method(nsid, cfg);
948948+ }
949949+950950+ listScheduledActions<A extends Auth = void>(
951951+ cfg: MethodConfigOrHandler<
952952+ A,
953953+ ToolsOzoneModerationListScheduledActions.QueryParams,
954954+ ToolsOzoneModerationListScheduledActions.HandlerInput,
955955+ ToolsOzoneModerationListScheduledActions.HandlerOutput
956956+ >,
957957+ ) {
958958+ const nsid = "tools.ozone.moderation.listScheduledActions"; // @ts-ignore - dynamically generated
959959+ return this._server.xrpc.method(nsid, cfg);
960960+ }
961961+681962 queryStatuses<A extends Auth = void>(
682963 cfg: MethodConfigOrHandler<
683964 A,
···702983 return this._server.xrpc.method(nsid, cfg);
703984 }
704985986986+ getSubjects<A extends Auth = void>(
987987+ cfg: MethodConfigOrHandler<
988988+ A,
989989+ ToolsOzoneModerationGetSubjects.QueryParams,
990990+ ToolsOzoneModerationGetSubjects.HandlerInput,
991991+ ToolsOzoneModerationGetSubjects.HandlerOutput
992992+ >,
993993+ ) {
994994+ const nsid = "tools.ozone.moderation.getSubjects"; // @ts-ignore - dynamically generated
995995+ return this._server.xrpc.method(nsid, cfg);
996996+ }
997997+705998 getRecords<A extends Auth = void>(
706999 cfg: MethodConfigOrHandler<
7071000 A,
···7141007 return this._server.xrpc.method(nsid, cfg);
7151008 }
716100910101010+ scheduleAction<A extends Auth = void>(
10111011+ cfg: MethodConfigOrHandler<
10121012+ A,
10131013+ ToolsOzoneModerationScheduleAction.QueryParams,
10141014+ ToolsOzoneModerationScheduleAction.HandlerInput,
10151015+ ToolsOzoneModerationScheduleAction.HandlerOutput
10161016+ >,
10171017+ ) {
10181018+ const nsid = "tools.ozone.moderation.scheduleAction"; // @ts-ignore - dynamically generated
10191019+ return this._server.xrpc.method(nsid, cfg);
10201020+ }
10211021+7171022 getEvent<A extends Auth = void>(
7181023 cfg: MethodConfigOrHandler<
7191024 A,
···7741079 return this._server.xrpc.method(nsid, cfg);
7751080 }
776108110821082+ getAccountTimeline<A extends Auth = void>(
10831083+ cfg: MethodConfigOrHandler<
10841084+ A,
10851085+ ToolsOzoneModerationGetAccountTimeline.QueryParams,
10861086+ ToolsOzoneModerationGetAccountTimeline.HandlerInput,
10871087+ ToolsOzoneModerationGetAccountTimeline.HandlerOutput
10881088+ >,
10891089+ ) {
10901090+ const nsid = "tools.ozone.moderation.getAccountTimeline"; // @ts-ignore - dynamically generated
10911091+ return this._server.xrpc.method(nsid, cfg);
10921092+ }
10931093+7771094 getRepos<A extends Auth = void>(
7781095 cfg: MethodConfigOrHandler<
7791096 A,
···8001117export class AppBskyNS {
8011118 _server: Server;
8021119 video: AppBskyVideoNS;
11201120+ bookmark: AppBskyBookmarkNS;
8031121 embed: AppBskyEmbedNS;
8041122 notification: AppBskyNotificationNS;
8051123 unspecced: AppBskyUnspeccedNS;
8061124 graph: AppBskyGraphNS;
8071125 feed: AppBskyFeedNS;
8081126 richtext: AppBskyRichtextNS;
11271127+ ageassurance: AppBskyAgeassuranceNS;
8091128 actor: AppBskyActorNS;
8101129 labeler: AppBskyLabelerNS;
81111308121131 constructor(server: Server) {
8131132 this._server = server;
8141133 this.video = new AppBskyVideoNS(server);
11341134+ this.bookmark = new AppBskyBookmarkNS(server);
8151135 this.embed = new AppBskyEmbedNS(server);
8161136 this.notification = new AppBskyNotificationNS(server);
8171137 this.unspecced = new AppBskyUnspeccedNS(server);
8181138 this.graph = new AppBskyGraphNS(server);
8191139 this.feed = new AppBskyFeedNS(server);
8201140 this.richtext = new AppBskyRichtextNS(server);
11411141+ this.ageassurance = new AppBskyAgeassuranceNS(server);
8211142 this.actor = new AppBskyActorNS(server);
8221143 this.labeler = new AppBskyLabelerNS(server);
8231144 }
···8671188 }
8681189}
869119011911191+export class AppBskyBookmarkNS {
11921192+ _server: Server;
11931193+11941194+ constructor(server: Server) {
11951195+ this._server = server;
11961196+ }
11971197+11981198+ deleteBookmark<A extends Auth = void>(
11991199+ cfg: MethodConfigOrHandler<
12001200+ A,
12011201+ AppBskyBookmarkDeleteBookmark.QueryParams,
12021202+ AppBskyBookmarkDeleteBookmark.HandlerInput,
12031203+ AppBskyBookmarkDeleteBookmark.HandlerOutput
12041204+ >,
12051205+ ) {
12061206+ const nsid = "app.bsky.bookmark.deleteBookmark"; // @ts-ignore - dynamically generated
12071207+ return this._server.xrpc.method(nsid, cfg);
12081208+ }
12091209+12101210+ getBookmarks<A extends Auth = void>(
12111211+ cfg: MethodConfigOrHandler<
12121212+ A,
12131213+ AppBskyBookmarkGetBookmarks.QueryParams,
12141214+ AppBskyBookmarkGetBookmarks.HandlerInput,
12151215+ AppBskyBookmarkGetBookmarks.HandlerOutput
12161216+ >,
12171217+ ) {
12181218+ const nsid = "app.bsky.bookmark.getBookmarks"; // @ts-ignore - dynamically generated
12191219+ return this._server.xrpc.method(nsid, cfg);
12201220+ }
12211221+12221222+ createBookmark<A extends Auth = void>(
12231223+ cfg: MethodConfigOrHandler<
12241224+ A,
12251225+ AppBskyBookmarkCreateBookmark.QueryParams,
12261226+ AppBskyBookmarkCreateBookmark.HandlerInput,
12271227+ AppBskyBookmarkCreateBookmark.HandlerOutput
12281228+ >,
12291229+ ) {
12301230+ const nsid = "app.bsky.bookmark.createBookmark"; // @ts-ignore - dynamically generated
12311231+ return this._server.xrpc.method(nsid, cfg);
12321232+ }
12331233+}
12341234+8701235export class AppBskyEmbedNS {
8711236 _server: Server;
8721237···9061271 return this._server.xrpc.method(nsid, cfg);
9071272 }
908127312741274+ putActivitySubscription<A extends Auth = void>(
12751275+ cfg: MethodConfigOrHandler<
12761276+ A,
12771277+ AppBskyNotificationPutActivitySubscription.QueryParams,
12781278+ AppBskyNotificationPutActivitySubscription.HandlerInput,
12791279+ AppBskyNotificationPutActivitySubscription.HandlerOutput
12801280+ >,
12811281+ ) {
12821282+ const nsid = "app.bsky.notification.putActivitySubscription"; // @ts-ignore - dynamically generated
12831283+ return this._server.xrpc.method(nsid, cfg);
12841284+ }
12851285+12861286+ putPreferencesV2<A extends Auth = void>(
12871287+ cfg: MethodConfigOrHandler<
12881288+ A,
12891289+ AppBskyNotificationPutPreferencesV2.QueryParams,
12901290+ AppBskyNotificationPutPreferencesV2.HandlerInput,
12911291+ AppBskyNotificationPutPreferencesV2.HandlerOutput
12921292+ >,
12931293+ ) {
12941294+ const nsid = "app.bsky.notification.putPreferencesV2"; // @ts-ignore - dynamically generated
12951295+ return this._server.xrpc.method(nsid, cfg);
12961296+ }
12971297+9091298 updateSeen<A extends Auth = void>(
9101299 cfg: MethodConfigOrHandler<
9111300 A,
···9181307 return this._server.xrpc.method(nsid, cfg);
9191308 }
920130913101310+ listActivitySubscriptions<A extends Auth = void>(
13111311+ cfg: MethodConfigOrHandler<
13121312+ A,
13131313+ AppBskyNotificationListActivitySubscriptions.QueryParams,
13141314+ AppBskyNotificationListActivitySubscriptions.HandlerInput,
13151315+ AppBskyNotificationListActivitySubscriptions.HandlerOutput
13161316+ >,
13171317+ ) {
13181318+ const nsid = "app.bsky.notification.listActivitySubscriptions"; // @ts-ignore - dynamically generated
13191319+ return this._server.xrpc.method(nsid, cfg);
13201320+ }
13211321+13221322+ unregisterPush<A extends Auth = void>(
13231323+ cfg: MethodConfigOrHandler<
13241324+ A,
13251325+ AppBskyNotificationUnregisterPush.QueryParams,
13261326+ AppBskyNotificationUnregisterPush.HandlerInput,
13271327+ AppBskyNotificationUnregisterPush.HandlerOutput
13281328+ >,
13291329+ ) {
13301330+ const nsid = "app.bsky.notification.unregisterPush"; // @ts-ignore - dynamically generated
13311331+ return this._server.xrpc.method(nsid, cfg);
13321332+ }
13331333+13341334+ getPreferences<A extends Auth = void>(
13351335+ cfg: MethodConfigOrHandler<
13361336+ A,
13371337+ AppBskyNotificationGetPreferences.QueryParams,
13381338+ AppBskyNotificationGetPreferences.HandlerInput,
13391339+ AppBskyNotificationGetPreferences.HandlerOutput
13401340+ >,
13411341+ ) {
13421342+ const nsid = "app.bsky.notification.getPreferences"; // @ts-ignore - dynamically generated
13431343+ return this._server.xrpc.method(nsid, cfg);
13441344+ }
13451345+9211346 listNotifications<A extends Auth = void>(
9221347 cfg: MethodConfigOrHandler<
9231348 A,
···9501375 this._server = server;
9511376 }
952137713781378+ getSuggestedFeedsSkeleton<A extends Auth = void>(
13791379+ cfg: MethodConfigOrHandler<
13801380+ A,
13811381+ AppBskyUnspeccedGetSuggestedFeedsSkeleton.QueryParams,
13821382+ AppBskyUnspeccedGetSuggestedFeedsSkeleton.HandlerInput,
13831383+ AppBskyUnspeccedGetSuggestedFeedsSkeleton.HandlerOutput
13841384+ >,
13851385+ ) {
13861386+ const nsid = "app.bsky.unspecced.getSuggestedFeedsSkeleton"; // @ts-ignore - dynamically generated
13871387+ return this._server.xrpc.method(nsid, cfg);
13881388+ }
13891389+9531390 searchStarterPacksSkeleton<A extends Auth = void>(
9541391 cfg: MethodConfigOrHandler<
9551392 A,
···9621399 return this._server.xrpc.method(nsid, cfg);
9631400 }
964140114021402+ getOnboardingSuggestedStarterPacksSkeleton<A extends Auth = void>(
14031403+ cfg: MethodConfigOrHandler<
14041404+ A,
14051405+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton.QueryParams,
14061406+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton.HandlerInput,
14071407+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton.HandlerOutput
14081408+ >,
14091409+ ) {
14101410+ const nsid =
14111411+ "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton"; // @ts-ignore - dynamically generated
14121412+ return this._server.xrpc.method(nsid, cfg);
14131413+ }
14141414+14151415+ getSuggestedUsers<A extends Auth = void>(
14161416+ cfg: MethodConfigOrHandler<
14171417+ A,
14181418+ AppBskyUnspeccedGetSuggestedUsers.QueryParams,
14191419+ AppBskyUnspeccedGetSuggestedUsers.HandlerInput,
14201420+ AppBskyUnspeccedGetSuggestedUsers.HandlerOutput
14211421+ >,
14221422+ ) {
14231423+ const nsid = "app.bsky.unspecced.getSuggestedUsers"; // @ts-ignore - dynamically generated
14241424+ return this._server.xrpc.method(nsid, cfg);
14251425+ }
14261426+14271427+ getPostThreadOtherV2<A extends Auth = void>(
14281428+ cfg: MethodConfigOrHandler<
14291429+ A,
14301430+ AppBskyUnspeccedGetPostThreadOtherV2.QueryParams,
14311431+ AppBskyUnspeccedGetPostThreadOtherV2.HandlerInput,
14321432+ AppBskyUnspeccedGetPostThreadOtherV2.HandlerOutput
14331433+ >,
14341434+ ) {
14351435+ const nsid = "app.bsky.unspecced.getPostThreadOtherV2"; // @ts-ignore - dynamically generated
14361436+ return this._server.xrpc.method(nsid, cfg);
14371437+ }
14381438+14391439+ getSuggestedStarterPacks<A extends Auth = void>(
14401440+ cfg: MethodConfigOrHandler<
14411441+ A,
14421442+ AppBskyUnspeccedGetSuggestedStarterPacks.QueryParams,
14431443+ AppBskyUnspeccedGetSuggestedStarterPacks.HandlerInput,
14441444+ AppBskyUnspeccedGetSuggestedStarterPacks.HandlerOutput
14451445+ >,
14461446+ ) {
14471447+ const nsid = "app.bsky.unspecced.getSuggestedStarterPacks"; // @ts-ignore - dynamically generated
14481448+ return this._server.xrpc.method(nsid, cfg);
14491449+ }
14501450+14511451+ getSuggestedStarterPacksSkeleton<A extends Auth = void>(
14521452+ cfg: MethodConfigOrHandler<
14531453+ A,
14541454+ AppBskyUnspeccedGetSuggestedStarterPacksSkeleton.QueryParams,
14551455+ AppBskyUnspeccedGetSuggestedStarterPacksSkeleton.HandlerInput,
14561456+ AppBskyUnspeccedGetSuggestedStarterPacksSkeleton.HandlerOutput
14571457+ >,
14581458+ ) {
14591459+ const nsid = "app.bsky.unspecced.getSuggestedStarterPacksSkeleton"; // @ts-ignore - dynamically generated
14601460+ return this._server.xrpc.method(nsid, cfg);
14611461+ }
14621462+14631463+ getOnboardingSuggestedStarterPacks<A extends Auth = void>(
14641464+ cfg: MethodConfigOrHandler<
14651465+ A,
14661466+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacks.QueryParams,
14671467+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacks.HandlerInput,
14681468+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacks.HandlerOutput
14691469+ >,
14701470+ ) {
14711471+ const nsid = "app.bsky.unspecced.getOnboardingSuggestedStarterPacks"; // @ts-ignore - dynamically generated
14721472+ return this._server.xrpc.method(nsid, cfg);
14731473+ }
14741474+14751475+ getSuggestedUsersSkeleton<A extends Auth = void>(
14761476+ cfg: MethodConfigOrHandler<
14771477+ A,
14781478+ AppBskyUnspeccedGetSuggestedUsersSkeleton.QueryParams,
14791479+ AppBskyUnspeccedGetSuggestedUsersSkeleton.HandlerInput,
14801480+ AppBskyUnspeccedGetSuggestedUsersSkeleton.HandlerOutput
14811481+ >,
14821482+ ) {
14831483+ const nsid = "app.bsky.unspecced.getSuggestedUsersSkeleton"; // @ts-ignore - dynamically generated
14841484+ return this._server.xrpc.method(nsid, cfg);
14851485+ }
14861486+14871487+ getPostThreadV2<A extends Auth = void>(
14881488+ cfg: MethodConfigOrHandler<
14891489+ A,
14901490+ AppBskyUnspeccedGetPostThreadV2.QueryParams,
14911491+ AppBskyUnspeccedGetPostThreadV2.HandlerInput,
14921492+ AppBskyUnspeccedGetPostThreadV2.HandlerOutput
14931493+ >,
14941494+ ) {
14951495+ const nsid = "app.bsky.unspecced.getPostThreadV2"; // @ts-ignore - dynamically generated
14961496+ return this._server.xrpc.method(nsid, cfg);
14971497+ }
14981498+14991499+ getTrends<A extends Auth = void>(
15001500+ cfg: MethodConfigOrHandler<
15011501+ A,
15021502+ AppBskyUnspeccedGetTrends.QueryParams,
15031503+ AppBskyUnspeccedGetTrends.HandlerInput,
15041504+ AppBskyUnspeccedGetTrends.HandlerOutput
15051505+ >,
15061506+ ) {
15071507+ const nsid = "app.bsky.unspecced.getTrends"; // @ts-ignore - dynamically generated
15081508+ return this._server.xrpc.method(nsid, cfg);
15091509+ }
15101510+9651511 searchActorsSkeleton<A extends Auth = void>(
9661512 cfg: MethodConfigOrHandler<
9671513 A,
···9981544 return this._server.xrpc.method(nsid, cfg);
9991545 }
1000154615471547+ getAgeAssuranceState<A extends Auth = void>(
15481548+ cfg: MethodConfigOrHandler<
15491549+ A,
15501550+ AppBskyUnspeccedGetAgeAssuranceState.QueryParams,
15511551+ AppBskyUnspeccedGetAgeAssuranceState.HandlerInput,
15521552+ AppBskyUnspeccedGetAgeAssuranceState.HandlerOutput
15531553+ >,
15541554+ ) {
15551555+ const nsid = "app.bsky.unspecced.getAgeAssuranceState"; // @ts-ignore - dynamically generated
15561556+ return this._server.xrpc.method(nsid, cfg);
15571557+ }
15581558+10011559 getPopularFeedGenerators<A extends Auth = void>(
10021560 cfg: MethodConfigOrHandler<
10031561 A,
···10101568 return this._server.xrpc.method(nsid, cfg);
10111569 }
1012157015711571+ initAgeAssurance<A extends Auth = void>(
15721572+ cfg: MethodConfigOrHandler<
15731573+ A,
15741574+ AppBskyUnspeccedInitAgeAssurance.QueryParams,
15751575+ AppBskyUnspeccedInitAgeAssurance.HandlerInput,
15761576+ AppBskyUnspeccedInitAgeAssurance.HandlerOutput
15771577+ >,
15781578+ ) {
15791579+ const nsid = "app.bsky.unspecced.initAgeAssurance"; // @ts-ignore - dynamically generated
15801580+ return this._server.xrpc.method(nsid, cfg);
15811581+ }
15821582+10131583 getTrendingTopics<A extends Auth = void>(
10141584 cfg: MethodConfigOrHandler<
10151585 A,
···10341604 return this._server.xrpc.method(nsid, cfg);
10351605 }
1036160616071607+ getSuggestedFeeds<A extends Auth = void>(
16081608+ cfg: MethodConfigOrHandler<
16091609+ A,
16101610+ AppBskyUnspeccedGetSuggestedFeeds.QueryParams,
16111611+ AppBskyUnspeccedGetSuggestedFeeds.HandlerInput,
16121612+ AppBskyUnspeccedGetSuggestedFeeds.HandlerOutput
16131613+ >,
16141614+ ) {
16151615+ const nsid = "app.bsky.unspecced.getSuggestedFeeds"; // @ts-ignore - dynamically generated
16161616+ return this._server.xrpc.method(nsid, cfg);
16171617+ }
16181618+16191619+ getTrendsSkeleton<A extends Auth = void>(
16201620+ cfg: MethodConfigOrHandler<
16211621+ A,
16221622+ AppBskyUnspeccedGetTrendsSkeleton.QueryParams,
16231623+ AppBskyUnspeccedGetTrendsSkeleton.HandlerInput,
16241624+ AppBskyUnspeccedGetTrendsSkeleton.HandlerOutput
16251625+ >,
16261626+ ) {
16271627+ const nsid = "app.bsky.unspecced.getTrendsSkeleton"; // @ts-ignore - dynamically generated
16281628+ return this._server.xrpc.method(nsid, cfg);
16291629+ }
16301630+10371631 getConfig<A extends Auth = void>(
10381632 cfg: MethodConfigOrHandler<
10391633 A,
···10781672 return this._server.xrpc.method(nsid, cfg);
10791673 }
1080167416751675+ getStarterPacksWithMembership<A extends Auth = void>(
16761676+ cfg: MethodConfigOrHandler<
16771677+ A,
16781678+ AppBskyGraphGetStarterPacksWithMembership.QueryParams,
16791679+ AppBskyGraphGetStarterPacksWithMembership.HandlerInput,
16801680+ AppBskyGraphGetStarterPacksWithMembership.HandlerOutput
16811681+ >,
16821682+ ) {
16831683+ const nsid = "app.bsky.graph.getStarterPacksWithMembership"; // @ts-ignore - dynamically generated
16841684+ return this._server.xrpc.method(nsid, cfg);
16851685+ }
16861686+16871687+ getListsWithMembership<A extends Auth = void>(
16881688+ cfg: MethodConfigOrHandler<
16891689+ A,
16901690+ AppBskyGraphGetListsWithMembership.QueryParams,
16911691+ AppBskyGraphGetListsWithMembership.HandlerInput,
16921692+ AppBskyGraphGetListsWithMembership.HandlerOutput
16931693+ >,
16941694+ ) {
16951695+ const nsid = "app.bsky.graph.getListsWithMembership"; // @ts-ignore - dynamically generated
16961696+ return this._server.xrpc.method(nsid, cfg);
16971697+ }
16981698+10811699 unmuteActorList<A extends Auth = void>(
10821700 cfg: MethodConfigOrHandler<
10831701 A,
···15392157 }
15402158}
1541215921602160+export class AppBskyAgeassuranceNS {
21612161+ _server: Server;
21622162+21632163+ constructor(server: Server) {
21642164+ this._server = server;
21652165+ }
21662166+21672167+ begin<A extends Auth = void>(
21682168+ cfg: MethodConfigOrHandler<
21692169+ A,
21702170+ AppBskyAgeassuranceBegin.QueryParams,
21712171+ AppBskyAgeassuranceBegin.HandlerInput,
21722172+ AppBskyAgeassuranceBegin.HandlerOutput
21732173+ >,
21742174+ ) {
21752175+ const nsid = "app.bsky.ageassurance.begin"; // @ts-ignore - dynamically generated
21762176+ return this._server.xrpc.method(nsid, cfg);
21772177+ }
21782178+21792179+ getState<A extends Auth = void>(
21802180+ cfg: MethodConfigOrHandler<
21812181+ A,
21822182+ AppBskyAgeassuranceGetState.QueryParams,
21832183+ AppBskyAgeassuranceGetState.HandlerInput,
21842184+ AppBskyAgeassuranceGetState.HandlerOutput
21852185+ >,
21862186+ ) {
21872187+ const nsid = "app.bsky.ageassurance.getState"; // @ts-ignore - dynamically generated
21882188+ return this._server.xrpc.method(nsid, cfg);
21892189+ }
21902190+21912191+ getConfig<A extends Auth = void>(
21922192+ cfg: MethodConfigOrHandler<
21932193+ A,
21942194+ AppBskyAgeassuranceGetConfig.QueryParams,
21952195+ AppBskyAgeassuranceGetConfig.HandlerInput,
21962196+ AppBskyAgeassuranceGetConfig.HandlerOutput
21972197+ >,
21982198+ ) {
21992199+ const nsid = "app.bsky.ageassurance.getConfig"; // @ts-ignore - dynamically generated
22002200+ return this._server.xrpc.method(nsid, cfg);
22012201+ }
22022202+}
22032203+15422204export class AppBskyActorNS {
15432205 _server: Server;
15442206···17542416 return this._server.xrpc.method(nsid, cfg);
17552417 }
1756241824192419+ addReaction<A extends Auth = void>(
24202420+ cfg: MethodConfigOrHandler<
24212421+ A,
24222422+ ChatBskyConvoAddReaction.QueryParams,
24232423+ ChatBskyConvoAddReaction.HandlerInput,
24242424+ ChatBskyConvoAddReaction.HandlerOutput
24252425+ >,
24262426+ ) {
24272427+ const nsid = "chat.bsky.convo.addReaction"; // @ts-ignore - dynamically generated
24282428+ return this._server.xrpc.method(nsid, cfg);
24292429+ }
24302430+17572431 acceptConvo<A extends Auth = void>(
17582432 cfg: MethodConfigOrHandler<
17592433 A,
···17872461 >,
17882462 ) {
17892463 const nsid = "chat.bsky.convo.deleteMessageForSelf"; // @ts-ignore - dynamically generated
24642464+ return this._server.xrpc.method(nsid, cfg);
24652465+ }
24662466+24672467+ removeReaction<A extends Auth = void>(
24682468+ cfg: MethodConfigOrHandler<
24692469+ A,
24702470+ ChatBskyConvoRemoveReaction.QueryParams,
24712471+ ChatBskyConvoRemoveReaction.HandlerInput,
24722472+ ChatBskyConvoRemoveReaction.HandlerOutput
24732473+ >,
24742474+ ) {
24752475+ const nsid = "chat.bsky.convo.removeReaction"; // @ts-ignore - dynamically generated
17902476 return this._server.xrpc.method(nsid, cfg);
17912477 }
17922478···26883374 this._server = server;
26893375 }
2690337633773377+ dereferenceScope<A extends Auth = void>(
33783378+ cfg: MethodConfigOrHandler<
33793379+ A,
33803380+ ComAtprotoTempDereferenceScope.QueryParams,
33813381+ ComAtprotoTempDereferenceScope.HandlerInput,
33823382+ ComAtprotoTempDereferenceScope.HandlerOutput
33833383+ >,
33843384+ ) {
33853385+ const nsid = "com.atproto.temp.dereferenceScope"; // @ts-ignore - dynamically generated
33863386+ return this._server.xrpc.method(nsid, cfg);
33873387+ }
33883388+26913389 addReservedHandle<A extends Auth = void>(
26923390 cfg: MethodConfigOrHandler<
26933391 A,
···27123410 return this._server.xrpc.method(nsid, cfg);
27133411 }
2714341234133413+ checkHandleAvailability<A extends Auth = void>(
34143414+ cfg: MethodConfigOrHandler<
34153415+ A,
34163416+ ComAtprotoTempCheckHandleAvailability.QueryParams,
34173417+ ComAtprotoTempCheckHandleAvailability.HandlerInput,
34183418+ ComAtprotoTempCheckHandleAvailability.HandlerOutput
34193419+ >,
34203420+ ) {
34213421+ const nsid = "com.atproto.temp.checkHandleAvailability"; // @ts-ignore - dynamically generated
34223422+ return this._server.xrpc.method(nsid, cfg);
34233423+ }
34243424+27153425 requestPhoneVerification<A extends Auth = void>(
27163426 cfg: MethodConfigOrHandler<
27173427 A,
···27213431 >,
27223432 ) {
27233433 const nsid = "com.atproto.temp.requestPhoneVerification"; // @ts-ignore - dynamically generated
34343434+ return this._server.xrpc.method(nsid, cfg);
34353435+ }
34363436+34373437+ revokeAccountCredentials<A extends Auth = void>(
34383438+ cfg: MethodConfigOrHandler<
34393439+ A,
34403440+ ComAtprotoTempRevokeAccountCredentials.QueryParams,
34413441+ ComAtprotoTempRevokeAccountCredentials.HandlerInput,
34423442+ ComAtprotoTempRevokeAccountCredentials.HandlerOutput
34433443+ >,
34443444+ ) {
34453445+ const nsid = "com.atproto.temp.revokeAccountCredentials"; // @ts-ignore - dynamically generated
27243446 return this._server.xrpc.method(nsid, cfg);
27253447 }
27263448···27803502 return this._server.xrpc.method(nsid, cfg);
27813503 }
2782350435053505+ resolveIdentity<A extends Auth = void>(
35063506+ cfg: MethodConfigOrHandler<
35073507+ A,
35083508+ ComAtprotoIdentityResolveIdentity.QueryParams,
35093509+ ComAtprotoIdentityResolveIdentity.HandlerInput,
35103510+ ComAtprotoIdentityResolveIdentity.HandlerOutput
35113511+ >,
35123512+ ) {
35133513+ const nsid = "com.atproto.identity.resolveIdentity"; // @ts-ignore - dynamically generated
35143514+ return this._server.xrpc.method(nsid, cfg);
35153515+ }
35163516+35173517+ refreshIdentity<A extends Auth = void>(
35183518+ cfg: MethodConfigOrHandler<
35193519+ A,
35203520+ ComAtprotoIdentityRefreshIdentity.QueryParams,
35213521+ ComAtprotoIdentityRefreshIdentity.HandlerInput,
35223522+ ComAtprotoIdentityRefreshIdentity.HandlerOutput
35233523+ >,
35243524+ ) {
35253525+ const nsid = "com.atproto.identity.refreshIdentity"; // @ts-ignore - dynamically generated
35263526+ return this._server.xrpc.method(nsid, cfg);
35273527+ }
35283528+27833529 resolveHandle<A extends Auth = void>(
27843530 cfg: MethodConfigOrHandler<
27853531 A,
···28133559 >,
28143560 ) {
28153561 const nsid = "com.atproto.identity.getRecommendedDidCredentials"; // @ts-ignore - dynamically generated
35623562+ return this._server.xrpc.method(nsid, cfg);
35633563+ }
35643564+35653565+ resolveDid<A extends Auth = void>(
35663566+ cfg: MethodConfigOrHandler<
35673567+ A,
35683568+ ComAtprotoIdentityResolveDid.QueryParams,
35693569+ ComAtprotoIdentityResolveDid.HandlerInput,
35703570+ ComAtprotoIdentityResolveDid.HandlerOutput
35713571+ >,
35723572+ ) {
35733573+ const nsid = "com.atproto.identity.resolveDid"; // @ts-ignore - dynamically generated
28163574 return this._server.xrpc.method(nsid, cfg);
28173575 }
28183576}
···29053663 >,
29063664 ) {
29073665 const nsid = "com.atproto.admin.getInviteCodes"; // @ts-ignore - dynamically generated
36663666+ return this._server.xrpc.method(nsid, cfg);
36673667+ }
36683668+36693669+ updateAccountSigningKey<A extends Auth = void>(
36703670+ cfg: MethodConfigOrHandler<
36713671+ A,
36723672+ ComAtprotoAdminUpdateAccountSigningKey.QueryParams,
36733673+ ComAtprotoAdminUpdateAccountSigningKey.HandlerInput,
36743674+ ComAtprotoAdminUpdateAccountSigningKey.HandlerOutput
36753675+ >,
36763676+ ) {
36773677+ const nsid = "com.atproto.admin.updateAccountSigningKey"; // @ts-ignore - dynamically generated
29083678 return this._server.xrpc.method(nsid, cfg);
29093679 }
29103680···33384108 constructor(server: Server) {
33394109 this._server = server;
33404110 }
41114111+41124112+ resolveLexicon<A extends Auth = void>(
41134113+ cfg: MethodConfigOrHandler<
41144114+ A,
41154115+ ComAtprotoLexiconResolveLexicon.QueryParams,
41164116+ ComAtprotoLexiconResolveLexicon.HandlerInput,
41174117+ ComAtprotoLexiconResolveLexicon.HandlerOutput
41184118+ >,
41194119+ ) {
41204120+ const nsid = "com.atproto.lexicon.resolveLexicon"; // @ts-ignore - dynamically generated
41214121+ return this._server.xrpc.method(nsid, cfg);
41224122+ }
33414123}
3342412433434125export class ComAtprotoSyncNS {
···34664248 return this._server.xrpc.method(nsid, cfg);
34674249 }
3468425042514251+ listHosts<A extends Auth = void>(
42524252+ cfg: MethodConfigOrHandler<
42534253+ A,
42544254+ ComAtprotoSyncListHosts.QueryParams,
42554255+ ComAtprotoSyncListHosts.HandlerInput,
42564256+ ComAtprotoSyncListHosts.HandlerOutput
42574257+ >,
42584258+ ) {
42594259+ const nsid = "com.atproto.sync.listHosts"; // @ts-ignore - dynamically generated
42604260+ return this._server.xrpc.method(nsid, cfg);
42614261+ }
42624262+34694263 listRepos<A extends Auth = void>(
34704264 cfg: MethodConfigOrHandler<
34714265 A,
···34754269 >,
34764270 ) {
34774271 const nsid = "com.atproto.sync.listRepos"; // @ts-ignore - dynamically generated
42724272+ return this._server.xrpc.method(nsid, cfg);
42734273+ }
42744274+42754275+ getHostStatus<A extends Auth = void>(
42764276+ cfg: MethodConfigOrHandler<
42774277+ A,
42784278+ ComAtprotoSyncGetHostStatus.QueryParams,
42794279+ ComAtprotoSyncGetHostStatus.HandlerInput,
42804280+ ComAtprotoSyncGetHostStatus.HandlerOutput
42814281+ >,
42824282+ ) {
42834283+ const nsid = "com.atproto.sync.getHostStatus"; // @ts-ignore - dynamically generated
34784284 return this._server.xrpc.method(nsid, cfg);
34794285 }
34804286
+5960-128
lex/lexicons.ts
···235235 "type": "ref",
236236 "ref": "lex:tools.ozone.server.getConfig#viewerConfig",
237237 },
238238+ "verifierDid": {
239239+ "type": "string",
240240+ "format": "did",
241241+ "description": "The did of the verifier used for verification.",
242242+ },
238243 },
239244 },
240245 },
···257262 "tools.ozone.team.defs#roleAdmin",
258263 "tools.ozone.team.defs#roleModerator",
259264 "tools.ozone.team.defs#roleTriage",
265265+ "tools.ozone.team.defs#roleVerifier",
260266 ],
261267 },
262268 },
263269 },
264270 },
265271 },
272272+ "ToolsOzoneVerificationRevokeVerifications": {
273273+ "lexicon": 1,
274274+ "id": "tools.ozone.verification.revokeVerifications",
275275+ "defs": {
276276+ "main": {
277277+ "type": "procedure",
278278+ "description":
279279+ "Revoke previously granted verifications in batches of up to 100.",
280280+ "input": {
281281+ "encoding": "application/json",
282282+ "schema": {
283283+ "type": "object",
284284+ "required": [
285285+ "uris",
286286+ ],
287287+ "properties": {
288288+ "uris": {
289289+ "type": "array",
290290+ "description": "Array of verification record uris to revoke",
291291+ "maxLength": 100,
292292+ "items": {
293293+ "type": "string",
294294+ "description":
295295+ "The AT-URI of the verification record to revoke.",
296296+ "format": "at-uri",
297297+ },
298298+ },
299299+ "revokeReason": {
300300+ "type": "string",
301301+ "description":
302302+ "Reason for revoking the verification. This is optional and can be omitted if not needed.",
303303+ "maxLength": 1000,
304304+ },
305305+ },
306306+ },
307307+ },
308308+ "output": {
309309+ "encoding": "application/json",
310310+ "schema": {
311311+ "type": "object",
312312+ "required": [
313313+ "revokedVerifications",
314314+ "failedRevocations",
315315+ ],
316316+ "properties": {
317317+ "revokedVerifications": {
318318+ "type": "array",
319319+ "description": "List of verification uris successfully revoked",
320320+ "items": {
321321+ "type": "string",
322322+ "format": "at-uri",
323323+ },
324324+ },
325325+ "failedRevocations": {
326326+ "type": "array",
327327+ "description":
328328+ "List of verification uris that couldn't be revoked, including failure reasons",
329329+ "items": {
330330+ "type": "ref",
331331+ "ref":
332332+ "lex:tools.ozone.verification.revokeVerifications#revokeError",
333333+ },
334334+ },
335335+ },
336336+ },
337337+ },
338338+ },
339339+ "revokeError": {
340340+ "type": "object",
341341+ "description": "Error object for failed revocations",
342342+ "required": [
343343+ "uri",
344344+ "error",
345345+ ],
346346+ "properties": {
347347+ "uri": {
348348+ "type": "string",
349349+ "description":
350350+ "The AT-URI of the verification record that failed to revoke.",
351351+ "format": "at-uri",
352352+ },
353353+ "error": {
354354+ "type": "string",
355355+ "description":
356356+ "Description of the error that occurred during revocation.",
357357+ },
358358+ },
359359+ },
360360+ },
361361+ },
362362+ "ToolsOzoneVerificationDefs": {
363363+ "lexicon": 1,
364364+ "id": "tools.ozone.verification.defs",
365365+ "defs": {
366366+ "verificationView": {
367367+ "type": "object",
368368+ "description": "Verification data for the associated subject.",
369369+ "required": [
370370+ "issuer",
371371+ "uri",
372372+ "subject",
373373+ "handle",
374374+ "displayName",
375375+ "createdAt",
376376+ ],
377377+ "properties": {
378378+ "issuer": {
379379+ "type": "string",
380380+ "description": "The user who issued this verification.",
381381+ "format": "did",
382382+ },
383383+ "uri": {
384384+ "type": "string",
385385+ "description": "The AT-URI of the verification record.",
386386+ "format": "at-uri",
387387+ },
388388+ "subject": {
389389+ "type": "string",
390390+ "format": "did",
391391+ "description": "The subject of the verification.",
392392+ },
393393+ "handle": {
394394+ "type": "string",
395395+ "description":
396396+ "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.",
397397+ "format": "handle",
398398+ },
399399+ "displayName": {
400400+ "type": "string",
401401+ "description":
402402+ "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying.",
403403+ },
404404+ "createdAt": {
405405+ "type": "string",
406406+ "description": "Timestamp when the verification was created.",
407407+ "format": "datetime",
408408+ },
409409+ "revokeReason": {
410410+ "type": "string",
411411+ "description":
412412+ "Describes the reason for revocation, also indicating that the verification is no longer valid.",
413413+ },
414414+ "revokedAt": {
415415+ "type": "string",
416416+ "description": "Timestamp when the verification was revoked.",
417417+ "format": "datetime",
418418+ },
419419+ "revokedBy": {
420420+ "type": "string",
421421+ "description": "The user who revoked this verification.",
422422+ "format": "did",
423423+ },
424424+ "subjectProfile": {
425425+ "type": "union",
426426+ "refs": [],
427427+ },
428428+ "issuerProfile": {
429429+ "type": "union",
430430+ "refs": [],
431431+ },
432432+ "subjectRepo": {
433433+ "type": "union",
434434+ "refs": [
435435+ "lex:tools.ozone.moderation.defs#repoViewDetail",
436436+ "lex:tools.ozone.moderation.defs#repoViewNotFound",
437437+ ],
438438+ },
439439+ "issuerRepo": {
440440+ "type": "union",
441441+ "refs": [
442442+ "lex:tools.ozone.moderation.defs#repoViewDetail",
443443+ "lex:tools.ozone.moderation.defs#repoViewNotFound",
444444+ ],
445445+ },
446446+ },
447447+ },
448448+ },
449449+ },
450450+ "ToolsOzoneVerificationGrantVerifications": {
451451+ "lexicon": 1,
452452+ "id": "tools.ozone.verification.grantVerifications",
453453+ "defs": {
454454+ "main": {
455455+ "type": "procedure",
456456+ "description":
457457+ "Grant verifications to multiple subjects. Allows batch processing of up to 100 verifications at once.",
458458+ "input": {
459459+ "encoding": "application/json",
460460+ "schema": {
461461+ "type": "object",
462462+ "required": [
463463+ "verifications",
464464+ ],
465465+ "properties": {
466466+ "verifications": {
467467+ "type": "array",
468468+ "description": "Array of verification requests to process",
469469+ "maxLength": 100,
470470+ "items": {
471471+ "type": "ref",
472472+ "ref":
473473+ "lex:tools.ozone.verification.grantVerifications#verificationInput",
474474+ },
475475+ },
476476+ },
477477+ },
478478+ },
479479+ "output": {
480480+ "encoding": "application/json",
481481+ "schema": {
482482+ "type": "object",
483483+ "required": [
484484+ "verifications",
485485+ "failedVerifications",
486486+ ],
487487+ "properties": {
488488+ "verifications": {
489489+ "type": "array",
490490+ "items": {
491491+ "type": "ref",
492492+ "ref": "lex:tools.ozone.verification.defs#verificationView",
493493+ },
494494+ },
495495+ "failedVerifications": {
496496+ "type": "array",
497497+ "items": {
498498+ "type": "ref",
499499+ "ref":
500500+ "lex:tools.ozone.verification.grantVerifications#grantError",
501501+ },
502502+ },
503503+ },
504504+ },
505505+ },
506506+ },
507507+ "verificationInput": {
508508+ "type": "object",
509509+ "required": [
510510+ "subject",
511511+ "handle",
512512+ "displayName",
513513+ ],
514514+ "properties": {
515515+ "subject": {
516516+ "type": "string",
517517+ "description": "The did of the subject being verified",
518518+ "format": "did",
519519+ },
520520+ "handle": {
521521+ "type": "string",
522522+ "description":
523523+ "Handle of the subject the verification applies to at the moment of verifying.",
524524+ "format": "handle",
525525+ },
526526+ "displayName": {
527527+ "type": "string",
528528+ "description":
529529+ "Display name of the subject the verification applies to at the moment of verifying.",
530530+ },
531531+ "createdAt": {
532532+ "type": "string",
533533+ "format": "datetime",
534534+ "description":
535535+ "Timestamp for verification record. Defaults to current time when not specified.",
536536+ },
537537+ },
538538+ },
539539+ "grantError": {
540540+ "type": "object",
541541+ "description": "Error object for failed verifications.",
542542+ "required": [
543543+ "error",
544544+ "subject",
545545+ ],
546546+ "properties": {
547547+ "error": {
548548+ "type": "string",
549549+ "description": "Error message describing the reason for failure.",
550550+ },
551551+ "subject": {
552552+ "type": "string",
553553+ "description": "The did of the subject being verified",
554554+ "format": "did",
555555+ },
556556+ },
557557+ },
558558+ },
559559+ },
560560+ "ToolsOzoneVerificationListVerifications": {
561561+ "lexicon": 1,
562562+ "id": "tools.ozone.verification.listVerifications",
563563+ "defs": {
564564+ "main": {
565565+ "type": "query",
566566+ "description": "List verifications",
567567+ "parameters": {
568568+ "type": "params",
569569+ "properties": {
570570+ "cursor": {
571571+ "type": "string",
572572+ "description": "Pagination cursor",
573573+ },
574574+ "limit": {
575575+ "type": "integer",
576576+ "description": "Maximum number of results to return",
577577+ "minimum": 1,
578578+ "maximum": 100,
579579+ "default": 50,
580580+ },
581581+ "createdAfter": {
582582+ "type": "string",
583583+ "format": "datetime",
584584+ "description":
585585+ "Filter to verifications created after this timestamp",
586586+ },
587587+ "createdBefore": {
588588+ "type": "string",
589589+ "format": "datetime",
590590+ "description":
591591+ "Filter to verifications created before this timestamp",
592592+ },
593593+ "issuers": {
594594+ "type": "array",
595595+ "maxLength": 100,
596596+ "description": "Filter to verifications from specific issuers",
597597+ "items": {
598598+ "type": "string",
599599+ "format": "did",
600600+ },
601601+ },
602602+ "subjects": {
603603+ "type": "array",
604604+ "description": "Filter to specific verified DIDs",
605605+ "maxLength": 100,
606606+ "items": {
607607+ "type": "string",
608608+ "format": "did",
609609+ },
610610+ },
611611+ "sortDirection": {
612612+ "type": "string",
613613+ "description": "Sort direction for creation date",
614614+ "enum": [
615615+ "asc",
616616+ "desc",
617617+ ],
618618+ "default": "desc",
619619+ },
620620+ "isRevoked": {
621621+ "type": "boolean",
622622+ "description":
623623+ "Filter to verifications that are revoked or not. By default, includes both.",
624624+ },
625625+ },
626626+ },
627627+ "output": {
628628+ "encoding": "application/json",
629629+ "schema": {
630630+ "type": "object",
631631+ "required": [
632632+ "verifications",
633633+ ],
634634+ "properties": {
635635+ "cursor": {
636636+ "type": "string",
637637+ },
638638+ "verifications": {
639639+ "type": "array",
640640+ "items": {
641641+ "type": "ref",
642642+ "ref": "lex:tools.ozone.verification.defs#verificationView",
643643+ },
644644+ },
645645+ },
646646+ },
647647+ },
648648+ },
649649+ },
650650+ },
651651+ "ToolsOzoneSafelinkDefs": {
652652+ "lexicon": 1,
653653+ "id": "tools.ozone.safelink.defs",
654654+ "defs": {
655655+ "event": {
656656+ "type": "object",
657657+ "description": "An event for URL safety decisions",
658658+ "required": [
659659+ "id",
660660+ "eventType",
661661+ "url",
662662+ "pattern",
663663+ "action",
664664+ "reason",
665665+ "createdBy",
666666+ "createdAt",
667667+ ],
668668+ "properties": {
669669+ "id": {
670670+ "type": "integer",
671671+ "description": "Auto-incrementing row ID",
672672+ },
673673+ "eventType": {
674674+ "type": "ref",
675675+ "ref": "lex:tools.ozone.safelink.defs#eventType",
676676+ },
677677+ "url": {
678678+ "type": "string",
679679+ "description": "The URL that this rule applies to",
680680+ },
681681+ "pattern": {
682682+ "type": "ref",
683683+ "ref": "lex:tools.ozone.safelink.defs#patternType",
684684+ },
685685+ "action": {
686686+ "type": "ref",
687687+ "ref": "lex:tools.ozone.safelink.defs#actionType",
688688+ },
689689+ "reason": {
690690+ "type": "ref",
691691+ "ref": "lex:tools.ozone.safelink.defs#reasonType",
692692+ },
693693+ "createdBy": {
694694+ "type": "string",
695695+ "format": "did",
696696+ "description": "DID of the user who created this rule",
697697+ },
698698+ "createdAt": {
699699+ "type": "string",
700700+ "format": "datetime",
701701+ },
702702+ "comment": {
703703+ "type": "string",
704704+ "description": "Optional comment about the decision",
705705+ },
706706+ },
707707+ },
708708+ "eventType": {
709709+ "type": "string",
710710+ "knownValues": [
711711+ "addRule",
712712+ "updateRule",
713713+ "removeRule",
714714+ ],
715715+ },
716716+ "patternType": {
717717+ "type": "string",
718718+ "knownValues": [
719719+ "domain",
720720+ "url",
721721+ ],
722722+ },
723723+ "actionType": {
724724+ "type": "string",
725725+ "knownValues": [
726726+ "block",
727727+ "warn",
728728+ "whitelist",
729729+ ],
730730+ },
731731+ "reasonType": {
732732+ "type": "string",
733733+ "knownValues": [
734734+ "csam",
735735+ "spam",
736736+ "phishing",
737737+ "none",
738738+ ],
739739+ },
740740+ "urlRule": {
741741+ "type": "object",
742742+ "description": "Input for creating a URL safety rule",
743743+ "required": [
744744+ "url",
745745+ "pattern",
746746+ "action",
747747+ "reason",
748748+ "createdBy",
749749+ "createdAt",
750750+ "updatedAt",
751751+ ],
752752+ "properties": {
753753+ "url": {
754754+ "type": "string",
755755+ "description": "The URL or domain to apply the rule to",
756756+ },
757757+ "pattern": {
758758+ "type": "ref",
759759+ "ref": "lex:tools.ozone.safelink.defs#patternType",
760760+ },
761761+ "action": {
762762+ "type": "ref",
763763+ "ref": "lex:tools.ozone.safelink.defs#actionType",
764764+ },
765765+ "reason": {
766766+ "type": "ref",
767767+ "ref": "lex:tools.ozone.safelink.defs#reasonType",
768768+ },
769769+ "comment": {
770770+ "type": "string",
771771+ "description": "Optional comment about the decision",
772772+ },
773773+ "createdBy": {
774774+ "type": "string",
775775+ "format": "did",
776776+ "description": "DID of the user added the rule.",
777777+ },
778778+ "createdAt": {
779779+ "type": "string",
780780+ "format": "datetime",
781781+ "description": "Timestamp when the rule was created",
782782+ },
783783+ "updatedAt": {
784784+ "type": "string",
785785+ "format": "datetime",
786786+ "description": "Timestamp when the rule was last updated",
787787+ },
788788+ },
789789+ },
790790+ },
791791+ },
792792+ "ToolsOzoneSafelinkAddRule": {
793793+ "lexicon": 1,
794794+ "id": "tools.ozone.safelink.addRule",
795795+ "defs": {
796796+ "main": {
797797+ "type": "procedure",
798798+ "description": "Add a new URL safety rule",
799799+ "input": {
800800+ "encoding": "application/json",
801801+ "schema": {
802802+ "type": "object",
803803+ "required": [
804804+ "url",
805805+ "pattern",
806806+ "action",
807807+ "reason",
808808+ ],
809809+ "properties": {
810810+ "url": {
811811+ "type": "string",
812812+ "description": "The URL or domain to apply the rule to",
813813+ },
814814+ "pattern": {
815815+ "type": "ref",
816816+ "ref": "lex:tools.ozone.safelink.defs#patternType",
817817+ },
818818+ "action": {
819819+ "type": "ref",
820820+ "ref": "lex:tools.ozone.safelink.defs#actionType",
821821+ },
822822+ "reason": {
823823+ "type": "ref",
824824+ "ref": "lex:tools.ozone.safelink.defs#reasonType",
825825+ },
826826+ "comment": {
827827+ "type": "string",
828828+ "description": "Optional comment about the decision",
829829+ },
830830+ "createdBy": {
831831+ "type": "string",
832832+ "format": "did",
833833+ "description":
834834+ "Author DID. Only respected when using admin auth",
835835+ },
836836+ },
837837+ },
838838+ },
839839+ "output": {
840840+ "encoding": "application/json",
841841+ "schema": {
842842+ "type": "ref",
843843+ "ref": "lex:tools.ozone.safelink.defs#event",
844844+ },
845845+ },
846846+ "errors": [
847847+ {
848848+ "name": "InvalidUrl",
849849+ "description": "The provided URL is invalid",
850850+ },
851851+ {
852852+ "name": "RuleAlreadyExists",
853853+ "description": "A rule for this URL/domain already exists",
854854+ },
855855+ ],
856856+ },
857857+ },
858858+ },
859859+ "ToolsOzoneSafelinkRemoveRule": {
860860+ "lexicon": 1,
861861+ "id": "tools.ozone.safelink.removeRule",
862862+ "defs": {
863863+ "main": {
864864+ "type": "procedure",
865865+ "description": "Remove an existing URL safety rule",
866866+ "input": {
867867+ "encoding": "application/json",
868868+ "schema": {
869869+ "type": "object",
870870+ "required": [
871871+ "url",
872872+ "pattern",
873873+ ],
874874+ "properties": {
875875+ "url": {
876876+ "type": "string",
877877+ "description": "The URL or domain to remove the rule for",
878878+ },
879879+ "pattern": {
880880+ "type": "ref",
881881+ "ref": "lex:tools.ozone.safelink.defs#patternType",
882882+ },
883883+ "comment": {
884884+ "type": "string",
885885+ "description":
886886+ "Optional comment about why the rule is being removed",
887887+ },
888888+ "createdBy": {
889889+ "type": "string",
890890+ "format": "did",
891891+ "description":
892892+ "Optional DID of the user. Only respected when using admin auth.",
893893+ },
894894+ },
895895+ },
896896+ },
897897+ "output": {
898898+ "encoding": "application/json",
899899+ "schema": {
900900+ "type": "ref",
901901+ "ref": "lex:tools.ozone.safelink.defs#event",
902902+ },
903903+ },
904904+ "errors": [
905905+ {
906906+ "name": "RuleNotFound",
907907+ "description": "No active rule found for this URL/domain",
908908+ },
909909+ ],
910910+ },
911911+ },
912912+ },
913913+ "ToolsOzoneSafelinkUpdateRule": {
914914+ "lexicon": 1,
915915+ "id": "tools.ozone.safelink.updateRule",
916916+ "defs": {
917917+ "main": {
918918+ "type": "procedure",
919919+ "description": "Update an existing URL safety rule",
920920+ "input": {
921921+ "encoding": "application/json",
922922+ "schema": {
923923+ "type": "object",
924924+ "required": [
925925+ "url",
926926+ "pattern",
927927+ "action",
928928+ "reason",
929929+ ],
930930+ "properties": {
931931+ "url": {
932932+ "type": "string",
933933+ "description": "The URL or domain to update the rule for",
934934+ },
935935+ "pattern": {
936936+ "type": "ref",
937937+ "ref": "lex:tools.ozone.safelink.defs#patternType",
938938+ },
939939+ "action": {
940940+ "type": "ref",
941941+ "ref": "lex:tools.ozone.safelink.defs#actionType",
942942+ },
943943+ "reason": {
944944+ "type": "ref",
945945+ "ref": "lex:tools.ozone.safelink.defs#reasonType",
946946+ },
947947+ "comment": {
948948+ "type": "string",
949949+ "description": "Optional comment about the update",
950950+ },
951951+ "createdBy": {
952952+ "type": "string",
953953+ "format": "did",
954954+ "description":
955955+ "Optional DID to credit as the creator. Only respected for admin_token authentication.",
956956+ },
957957+ },
958958+ },
959959+ },
960960+ "output": {
961961+ "encoding": "application/json",
962962+ "schema": {
963963+ "type": "ref",
964964+ "ref": "lex:tools.ozone.safelink.defs#event",
965965+ },
966966+ },
967967+ "errors": [
968968+ {
969969+ "name": "RuleNotFound",
970970+ "description": "No active rule found for this URL/domain",
971971+ },
972972+ ],
973973+ },
974974+ },
975975+ },
976976+ "ToolsOzoneSafelinkQueryEvents": {
977977+ "lexicon": 1,
978978+ "id": "tools.ozone.safelink.queryEvents",
979979+ "defs": {
980980+ "main": {
981981+ "type": "procedure",
982982+ "description": "Query URL safety audit events",
983983+ "input": {
984984+ "encoding": "application/json",
985985+ "schema": {
986986+ "type": "object",
987987+ "properties": {
988988+ "cursor": {
989989+ "type": "string",
990990+ "description": "Cursor for pagination",
991991+ },
992992+ "limit": {
993993+ "type": "integer",
994994+ "minimum": 1,
995995+ "maximum": 100,
996996+ "default": 50,
997997+ "description": "Maximum number of results to return",
998998+ },
999999+ "urls": {
10001000+ "type": "array",
10011001+ "items": {
10021002+ "type": "string",
10031003+ },
10041004+ "description": "Filter by specific URLs or domains",
10051005+ },
10061006+ "patternType": {
10071007+ "type": "string",
10081008+ "description": "Filter by pattern type",
10091009+ },
10101010+ "sortDirection": {
10111011+ "type": "string",
10121012+ "knownValues": [
10131013+ "asc",
10141014+ "desc",
10151015+ ],
10161016+ "default": "desc",
10171017+ "description": "Sort direction",
10181018+ },
10191019+ },
10201020+ },
10211021+ },
10221022+ "output": {
10231023+ "encoding": "application/json",
10241024+ "schema": {
10251025+ "type": "object",
10261026+ "required": [
10271027+ "events",
10281028+ ],
10291029+ "properties": {
10301030+ "cursor": {
10311031+ "type": "string",
10321032+ "description":
10331033+ "Next cursor for pagination. Only present if there are more results.",
10341034+ },
10351035+ "events": {
10361036+ "type": "array",
10371037+ "items": {
10381038+ "type": "ref",
10391039+ "ref": "lex:tools.ozone.safelink.defs#event",
10401040+ },
10411041+ },
10421042+ },
10431043+ },
10441044+ },
10451045+ },
10461046+ },
10471047+ },
10481048+ "ToolsOzoneSafelinkQueryRules": {
10491049+ "lexicon": 1,
10501050+ "id": "tools.ozone.safelink.queryRules",
10511051+ "defs": {
10521052+ "main": {
10531053+ "type": "procedure",
10541054+ "description": "Query URL safety rules",
10551055+ "input": {
10561056+ "encoding": "application/json",
10571057+ "schema": {
10581058+ "type": "object",
10591059+ "properties": {
10601060+ "cursor": {
10611061+ "type": "string",
10621062+ "description": "Cursor for pagination",
10631063+ },
10641064+ "limit": {
10651065+ "type": "integer",
10661066+ "minimum": 1,
10671067+ "maximum": 100,
10681068+ "default": 50,
10691069+ "description": "Maximum number of results to return",
10701070+ },
10711071+ "urls": {
10721072+ "type": "array",
10731073+ "items": {
10741074+ "type": "string",
10751075+ },
10761076+ "description": "Filter by specific URLs or domains",
10771077+ },
10781078+ "patternType": {
10791079+ "type": "string",
10801080+ "description": "Filter by pattern type",
10811081+ },
10821082+ "actions": {
10831083+ "type": "array",
10841084+ "items": {
10851085+ "type": "string",
10861086+ },
10871087+ "description": "Filter by action types",
10881088+ },
10891089+ "reason": {
10901090+ "type": "string",
10911091+ "description": "Filter by reason type",
10921092+ },
10931093+ "createdBy": {
10941094+ "type": "string",
10951095+ "format": "did",
10961096+ "description": "Filter by rule creator",
10971097+ },
10981098+ "sortDirection": {
10991099+ "type": "string",
11001100+ "knownValues": [
11011101+ "asc",
11021102+ "desc",
11031103+ ],
11041104+ "default": "desc",
11051105+ "description": "Sort direction",
11061106+ },
11071107+ },
11081108+ },
11091109+ },
11101110+ "output": {
11111111+ "encoding": "application/json",
11121112+ "schema": {
11131113+ "type": "object",
11141114+ "required": [
11151115+ "rules",
11161116+ ],
11171117+ "properties": {
11181118+ "cursor": {
11191119+ "type": "string",
11201120+ "description":
11211121+ "Next cursor for pagination. Only present if there are more results.",
11221122+ },
11231123+ "rules": {
11241124+ "type": "array",
11251125+ "items": {
11261126+ "type": "ref",
11271127+ "ref": "lex:tools.ozone.safelink.defs#urlRule",
11281128+ },
11291129+ },
11301130+ },
11311131+ },
11321132+ },
11331133+ },
11341134+ },
11351135+ },
2661136 "ToolsOzoneTeamListMembers": {
2671137 "lexicon": 1,
2681138 "id": "tools.ozone.team.listMembers",
···2731143 "parameters": {
2741144 "type": "params",
2751145 "properties": {
11461146+ "q": {
11471147+ "type": "string",
11481148+ },
2761149 "disabled": {
2771150 "type": "boolean",
2781151 },
···3531226 "role": {
3541227 "type": "string",
3551228 "knownValues": [
356356- "lex:tools.ozone.team.defs#roleAdmin",
357357- "lex:tools.ozone.team.defs#roleModerator",
358358- "lex:tools.ozone.team.defs#roleTriage",
12291229+ "tools.ozone.team.defs#roleAdmin",
12301230+ "tools.ozone.team.defs#roleModerator",
12311231+ "tools.ozone.team.defs#roleTriage",
12321232+ "tools.ozone.team.defs#roleVerifier",
3591233 ],
3601234 },
3611235 },
···3741248 "description":
3751249 "Triage role. Mostly intended for monitoring and escalating issues.",
3761250 },
12511251+ "roleVerifier": {
12521252+ "type": "token",
12531253+ "description": "Verifier role. Only allowed to issue verifications.",
12541254+ },
3771255 },
3781256 },
3791257 "ToolsOzoneTeamDeleteMember": {
···4391317 "knownValues": [
4401318 "tools.ozone.team.defs#roleAdmin",
4411319 "tools.ozone.team.defs#roleModerator",
13201320+ "tools.ozone.team.defs#roleVerifier",
4421321 "tools.ozone.team.defs#roleTriage",
4431322 ],
4441323 },
···4871366 "knownValues": [
4881367 "tools.ozone.team.defs#roleAdmin",
4891368 "tools.ozone.team.defs#roleModerator",
13691369+ "tools.ozone.team.defs#roleVerifier",
4901370 "tools.ozone.team.defs#roleTriage",
4911371 ],
4921372 },
···5091389 },
5101390 },
5111391 },
13921392+ "ToolsOzoneHostingGetAccountHistory": {
13931393+ "lexicon": 1,
13941394+ "id": "tools.ozone.hosting.getAccountHistory",
13951395+ "defs": {
13961396+ "main": {
13971397+ "type": "query",
13981398+ "description":
13991399+ "Get account history, e.g. log of updated email addresses or other identity information.",
14001400+ "parameters": {
14011401+ "type": "params",
14021402+ "required": [
14031403+ "did",
14041404+ ],
14051405+ "properties": {
14061406+ "did": {
14071407+ "type": "string",
14081408+ "format": "did",
14091409+ },
14101410+ "events": {
14111411+ "type": "array",
14121412+ "items": {
14131413+ "type": "string",
14141414+ "knownValues": [
14151415+ "accountCreated",
14161416+ "emailUpdated",
14171417+ "emailConfirmed",
14181418+ "passwordUpdated",
14191419+ "handleUpdated",
14201420+ ],
14211421+ },
14221422+ },
14231423+ "cursor": {
14241424+ "type": "string",
14251425+ },
14261426+ "limit": {
14271427+ "type": "integer",
14281428+ "minimum": 1,
14291429+ "maximum": 100,
14301430+ "default": 50,
14311431+ },
14321432+ },
14331433+ },
14341434+ "output": {
14351435+ "encoding": "application/json",
14361436+ "schema": {
14371437+ "type": "object",
14381438+ "required": [
14391439+ "events",
14401440+ ],
14411441+ "properties": {
14421442+ "cursor": {
14431443+ "type": "string",
14441444+ },
14451445+ "events": {
14461446+ "type": "array",
14471447+ "items": {
14481448+ "type": "ref",
14491449+ "ref": "lex:tools.ozone.hosting.getAccountHistory#event",
14501450+ },
14511451+ },
14521452+ },
14531453+ },
14541454+ },
14551455+ },
14561456+ "event": {
14571457+ "type": "object",
14581458+ "required": [
14591459+ "details",
14601460+ "createdBy",
14611461+ "createdAt",
14621462+ ],
14631463+ "properties": {
14641464+ "details": {
14651465+ "type": "union",
14661466+ "refs": [
14671467+ "lex:tools.ozone.hosting.getAccountHistory#accountCreated",
14681468+ "lex:tools.ozone.hosting.getAccountHistory#emailUpdated",
14691469+ "lex:tools.ozone.hosting.getAccountHistory#emailConfirmed",
14701470+ "lex:tools.ozone.hosting.getAccountHistory#passwordUpdated",
14711471+ "lex:tools.ozone.hosting.getAccountHistory#handleUpdated",
14721472+ ],
14731473+ },
14741474+ "createdBy": {
14751475+ "type": "string",
14761476+ },
14771477+ "createdAt": {
14781478+ "type": "string",
14791479+ "format": "datetime",
14801480+ },
14811481+ },
14821482+ },
14831483+ "accountCreated": {
14841484+ "type": "object",
14851485+ "required": [],
14861486+ "properties": {
14871487+ "email": {
14881488+ "type": "string",
14891489+ },
14901490+ "handle": {
14911491+ "type": "string",
14921492+ "format": "handle",
14931493+ },
14941494+ },
14951495+ },
14961496+ "emailUpdated": {
14971497+ "type": "object",
14981498+ "required": [
14991499+ "email",
15001500+ ],
15011501+ "properties": {
15021502+ "email": {
15031503+ "type": "string",
15041504+ },
15051505+ },
15061506+ },
15071507+ "emailConfirmed": {
15081508+ "type": "object",
15091509+ "required": [
15101510+ "email",
15111511+ ],
15121512+ "properties": {
15131513+ "email": {
15141514+ "type": "string",
15151515+ },
15161516+ },
15171517+ },
15181518+ "passwordUpdated": {
15191519+ "type": "object",
15201520+ "required": [],
15211521+ "properties": {},
15221522+ },
15231523+ "handleUpdated": {
15241524+ "type": "object",
15251525+ "required": [
15261526+ "handle",
15271527+ ],
15281528+ "properties": {
15291529+ "handle": {
15301530+ "type": "string",
15311531+ "format": "handle",
15321532+ },
15331533+ },
15341534+ },
15351535+ },
15361536+ },
15371537+ "ToolsOzoneReportDefs": {
15381538+ "lexicon": 1,
15391539+ "id": "tools.ozone.report.defs",
15401540+ "defs": {
15411541+ "reasonType": {
15421542+ "type": "string",
15431543+ "knownValues": [
15441544+ "tools.ozone.report.defs#reasonAppeal",
15451545+ "tools.ozone.report.defs#reasonOther",
15461546+ "tools.ozone.report.defs#reasonViolenceAnimal",
15471547+ "tools.ozone.report.defs#reasonViolenceThreats",
15481548+ "tools.ozone.report.defs#reasonViolenceGraphicContent",
15491549+ "tools.ozone.report.defs#reasonViolenceGlorification",
15501550+ "tools.ozone.report.defs#reasonViolenceExtremistContent",
15511551+ "tools.ozone.report.defs#reasonViolenceTrafficking",
15521552+ "tools.ozone.report.defs#reasonViolenceOther",
15531553+ "tools.ozone.report.defs#reasonSexualAbuseContent",
15541554+ "tools.ozone.report.defs#reasonSexualNCII",
15551555+ "tools.ozone.report.defs#reasonSexualDeepfake",
15561556+ "tools.ozone.report.defs#reasonSexualAnimal",
15571557+ "tools.ozone.report.defs#reasonSexualUnlabeled",
15581558+ "tools.ozone.report.defs#reasonSexualOther",
15591559+ "tools.ozone.report.defs#reasonChildSafetyCSAM",
15601560+ "tools.ozone.report.defs#reasonChildSafetyGroom",
15611561+ "tools.ozone.report.defs#reasonChildSafetyPrivacy",
15621562+ "tools.ozone.report.defs#reasonChildSafetyHarassment",
15631563+ "tools.ozone.report.defs#reasonChildSafetyOther",
15641564+ "tools.ozone.report.defs#reasonHarassmentTroll",
15651565+ "tools.ozone.report.defs#reasonHarassmentTargeted",
15661566+ "tools.ozone.report.defs#reasonHarassmentHateSpeech",
15671567+ "tools.ozone.report.defs#reasonHarassmentDoxxing",
15681568+ "tools.ozone.report.defs#reasonHarassmentOther",
15691569+ "tools.ozone.report.defs#reasonMisleadingBot",
15701570+ "tools.ozone.report.defs#reasonMisleadingImpersonation",
15711571+ "tools.ozone.report.defs#reasonMisleadingSpam",
15721572+ "tools.ozone.report.defs#reasonMisleadingScam",
15731573+ "tools.ozone.report.defs#reasonMisleadingElections",
15741574+ "tools.ozone.report.defs#reasonMisleadingOther",
15751575+ "tools.ozone.report.defs#reasonRuleSiteSecurity",
15761576+ "tools.ozone.report.defs#reasonRuleProhibitedSales",
15771577+ "tools.ozone.report.defs#reasonRuleBanEvasion",
15781578+ "tools.ozone.report.defs#reasonRuleOther",
15791579+ "tools.ozone.report.defs#reasonSelfHarmContent",
15801580+ "tools.ozone.report.defs#reasonSelfHarmED",
15811581+ "tools.ozone.report.defs#reasonSelfHarmStunts",
15821582+ "tools.ozone.report.defs#reasonSelfHarmSubstances",
15831583+ "tools.ozone.report.defs#reasonSelfHarmOther",
15841584+ ],
15851585+ },
15861586+ "reasonAppeal": {
15871587+ "type": "token",
15881588+ "description": "Appeal a previously taken moderation action",
15891589+ },
15901590+ "reasonOther": {
15911591+ "type": "token",
15921592+ "description": "An issue not included in these options",
15931593+ },
15941594+ "reasonViolenceAnimal": {
15951595+ "type": "token",
15961596+ "description": "Animal welfare violations",
15971597+ },
15981598+ "reasonViolenceThreats": {
15991599+ "type": "token",
16001600+ "description": "Threats or incitement",
16011601+ },
16021602+ "reasonViolenceGraphicContent": {
16031603+ "type": "token",
16041604+ "description": "Graphic violent content",
16051605+ },
16061606+ "reasonViolenceGlorification": {
16071607+ "type": "token",
16081608+ "description": "Glorification of violence",
16091609+ },
16101610+ "reasonViolenceExtremistContent": {
16111611+ "type": "token",
16121612+ "description":
16131613+ "Extremist content. These reports will be sent only be sent to the application's Moderation Authority.",
16141614+ },
16151615+ "reasonViolenceTrafficking": {
16161616+ "type": "token",
16171617+ "description": "Human trafficking",
16181618+ },
16191619+ "reasonViolenceOther": {
16201620+ "type": "token",
16211621+ "description": "Other violent content",
16221622+ },
16231623+ "reasonSexualAbuseContent": {
16241624+ "type": "token",
16251625+ "description": "Adult sexual abuse content",
16261626+ },
16271627+ "reasonSexualNCII": {
16281628+ "type": "token",
16291629+ "description": "Non-consensual intimate imagery",
16301630+ },
16311631+ "reasonSexualDeepfake": {
16321632+ "type": "token",
16331633+ "description": "Deepfake adult content",
16341634+ },
16351635+ "reasonSexualAnimal": {
16361636+ "type": "token",
16371637+ "description": "Animal sexual abuse",
16381638+ },
16391639+ "reasonSexualUnlabeled": {
16401640+ "type": "token",
16411641+ "description": "Unlabelled adult content",
16421642+ },
16431643+ "reasonSexualOther": {
16441644+ "type": "token",
16451645+ "description": "Other sexual violence content",
16461646+ },
16471647+ "reasonChildSafetyCSAM": {
16481648+ "type": "token",
16491649+ "description":
16501650+ "Child sexual abuse material (CSAM). These reports will be sent only be sent to the application's Moderation Authority.",
16511651+ },
16521652+ "reasonChildSafetyGroom": {
16531653+ "type": "token",
16541654+ "description":
16551655+ "Grooming or predatory behavior. These reports will be sent only be sent to the application's Moderation Authority.",
16561656+ },
16571657+ "reasonChildSafetyPrivacy": {
16581658+ "type": "token",
16591659+ "description": "Privacy violation involving a minor",
16601660+ },
16611661+ "reasonChildSafetyHarassment": {
16621662+ "type": "token",
16631663+ "description": "Harassment or bullying of minors",
16641664+ },
16651665+ "reasonChildSafetyOther": {
16661666+ "type": "token",
16671667+ "description":
16681668+ "Other child safety. These reports will be sent only be sent to the application's Moderation Authority.",
16691669+ },
16701670+ "reasonHarassmentTroll": {
16711671+ "type": "token",
16721672+ "description": "Trolling",
16731673+ },
16741674+ "reasonHarassmentTargeted": {
16751675+ "type": "token",
16761676+ "description": "Targeted harassment",
16771677+ },
16781678+ "reasonHarassmentHateSpeech": {
16791679+ "type": "token",
16801680+ "description": "Hate speech",
16811681+ },
16821682+ "reasonHarassmentDoxxing": {
16831683+ "type": "token",
16841684+ "description": "Doxxing",
16851685+ },
16861686+ "reasonHarassmentOther": {
16871687+ "type": "token",
16881688+ "description": "Other harassing or hateful content",
16891689+ },
16901690+ "reasonMisleadingBot": {
16911691+ "type": "token",
16921692+ "description": "Fake account or bot",
16931693+ },
16941694+ "reasonMisleadingImpersonation": {
16951695+ "type": "token",
16961696+ "description": "Impersonation",
16971697+ },
16981698+ "reasonMisleadingSpam": {
16991699+ "type": "token",
17001700+ "description": "Spam",
17011701+ },
17021702+ "reasonMisleadingScam": {
17031703+ "type": "token",
17041704+ "description": "Scam",
17051705+ },
17061706+ "reasonMisleadingElections": {
17071707+ "type": "token",
17081708+ "description": "False information about elections",
17091709+ },
17101710+ "reasonMisleadingOther": {
17111711+ "type": "token",
17121712+ "description": "Other misleading content",
17131713+ },
17141714+ "reasonRuleSiteSecurity": {
17151715+ "type": "token",
17161716+ "description": "Hacking or system attacks",
17171717+ },
17181718+ "reasonRuleProhibitedSales": {
17191719+ "type": "token",
17201720+ "description": "Promoting or selling prohibited items or services",
17211721+ },
17221722+ "reasonRuleBanEvasion": {
17231723+ "type": "token",
17241724+ "description": "Banned user returning",
17251725+ },
17261726+ "reasonRuleOther": {
17271727+ "type": "token",
17281728+ "description": "Other",
17291729+ },
17301730+ "reasonSelfHarmContent": {
17311731+ "type": "token",
17321732+ "description": "Content promoting or depicting self-harm",
17331733+ },
17341734+ "reasonSelfHarmED": {
17351735+ "type": "token",
17361736+ "description": "Eating disorders",
17371737+ },
17381738+ "reasonSelfHarmStunts": {
17391739+ "type": "token",
17401740+ "description": "Dangerous challenges or activities",
17411741+ },
17421742+ "reasonSelfHarmSubstances": {
17431743+ "type": "token",
17441744+ "description": "Dangerous substances or drug abuse",
17451745+ },
17461746+ "reasonSelfHarmOther": {
17471747+ "type": "token",
17481748+ "description": "Other dangerous content",
17491749+ },
17501750+ },
17511751+ },
5121752 "ToolsOzoneCommunicationDefs": {
5131753 "lexicon": 1,
5141754 "id": "tools.ozone.communication.defs",
···11092349 "tools.ozone.team.defs#roleModerator",
11102350 "tools.ozone.team.defs#roleTriage",
11112351 "tools.ozone.team.defs#roleAdmin",
23522352+ "tools.ozone.team.defs#roleVerifier",
11122353 ],
11132354 },
11142355 "scope": {
···12822523 "knownValues": [
12832524 "tools.ozone.team.defs#roleModerator",
12842525 "tools.ozone.team.defs#roleTriage",
25262526+ "tools.ozone.team.defs#roleVerifier",
12852527 "tools.ozone.team.defs#roleAdmin",
12862528 ],
12872529 },
···13502592 },
13512593 },
13522594 },
25952595+ "ToolsOzoneModerationCancelScheduledActions": {
25962596+ "lexicon": 1,
25972597+ "id": "tools.ozone.moderation.cancelScheduledActions",
25982598+ "defs": {
25992599+ "main": {
26002600+ "type": "procedure",
26012601+ "description":
26022602+ "Cancel all pending scheduled moderation actions for specified subjects",
26032603+ "input": {
26042604+ "encoding": "application/json",
26052605+ "schema": {
26062606+ "type": "object",
26072607+ "required": [
26082608+ "subjects",
26092609+ ],
26102610+ "properties": {
26112611+ "subjects": {
26122612+ "type": "array",
26132613+ "maxLength": 100,
26142614+ "items": {
26152615+ "type": "string",
26162616+ "format": "did",
26172617+ },
26182618+ "description":
26192619+ "Array of DID subjects to cancel scheduled actions for",
26202620+ },
26212621+ "comment": {
26222622+ "type": "string",
26232623+ "description":
26242624+ "Optional comment describing the reason for cancellation",
26252625+ },
26262626+ },
26272627+ },
26282628+ },
26292629+ "output": {
26302630+ "encoding": "application/json",
26312631+ "schema": {
26322632+ "type": "ref",
26332633+ "ref":
26342634+ "lex:tools.ozone.moderation.cancelScheduledActions#cancellationResults",
26352635+ },
26362636+ },
26372637+ },
26382638+ "cancellationResults": {
26392639+ "type": "object",
26402640+ "required": [
26412641+ "succeeded",
26422642+ "failed",
26432643+ ],
26442644+ "properties": {
26452645+ "succeeded": {
26462646+ "type": "array",
26472647+ "items": {
26482648+ "type": "string",
26492649+ "format": "did",
26502650+ },
26512651+ "description":
26522652+ "DIDs for which all pending scheduled actions were successfully cancelled",
26532653+ },
26542654+ "failed": {
26552655+ "type": "array",
26562656+ "items": {
26572657+ "type": "ref",
26582658+ "ref":
26592659+ "lex:tools.ozone.moderation.cancelScheduledActions#failedCancellation",
26602660+ },
26612661+ "description":
26622662+ "DIDs for which cancellation failed with error details",
26632663+ },
26642664+ },
26652665+ },
26662666+ "failedCancellation": {
26672667+ "type": "object",
26682668+ "required": [
26692669+ "did",
26702670+ "error",
26712671+ ],
26722672+ "properties": {
26732673+ "did": {
26742674+ "type": "string",
26752675+ "format": "did",
26762676+ },
26772677+ "error": {
26782678+ "type": "string",
26792679+ },
26802680+ "errorCode": {
26812681+ "type": "string",
26822682+ },
26832683+ },
26842684+ },
26852685+ },
26862686+ },
26872687+ "ToolsOzoneModerationListScheduledActions": {
26882688+ "lexicon": 1,
26892689+ "id": "tools.ozone.moderation.listScheduledActions",
26902690+ "defs": {
26912691+ "main": {
26922692+ "type": "procedure",
26932693+ "description":
26942694+ "List scheduled moderation actions with optional filtering",
26952695+ "input": {
26962696+ "encoding": "application/json",
26972697+ "schema": {
26982698+ "type": "object",
26992699+ "required": [
27002700+ "statuses",
27012701+ ],
27022702+ "properties": {
27032703+ "startsAfter": {
27042704+ "type": "string",
27052705+ "format": "datetime",
27062706+ "description":
27072707+ "Filter actions scheduled to execute after this time",
27082708+ },
27092709+ "endsBefore": {
27102710+ "type": "string",
27112711+ "format": "datetime",
27122712+ "description":
27132713+ "Filter actions scheduled to execute before this time",
27142714+ },
27152715+ "subjects": {
27162716+ "type": "array",
27172717+ "maxLength": 100,
27182718+ "items": {
27192719+ "type": "string",
27202720+ "format": "did",
27212721+ },
27222722+ "description": "Filter actions for specific DID subjects",
27232723+ },
27242724+ "statuses": {
27252725+ "type": "array",
27262726+ "minLength": 1,
27272727+ "items": {
27282728+ "type": "string",
27292729+ "knownValues": [
27302730+ "pending",
27312731+ "executed",
27322732+ "cancelled",
27332733+ "failed",
27342734+ ],
27352735+ },
27362736+ "description": "Filter actions by status",
27372737+ },
27382738+ "limit": {
27392739+ "type": "integer",
27402740+ "minimum": 1,
27412741+ "maximum": 100,
27422742+ "default": 50,
27432743+ "description": "Maximum number of results to return",
27442744+ },
27452745+ "cursor": {
27462746+ "type": "string",
27472747+ "description": "Cursor for pagination",
27482748+ },
27492749+ },
27502750+ },
27512751+ },
27522752+ "output": {
27532753+ "encoding": "application/json",
27542754+ "schema": {
27552755+ "type": "object",
27562756+ "required": [
27572757+ "actions",
27582758+ ],
27592759+ "properties": {
27602760+ "actions": {
27612761+ "type": "array",
27622762+ "items": {
27632763+ "type": "ref",
27642764+ "ref": "lex:tools.ozone.moderation.defs#scheduledActionView",
27652765+ },
27662766+ },
27672767+ "cursor": {
27682768+ "type": "string",
27692769+ "description": "Cursor for next page of results",
27702770+ },
27712771+ },
27722772+ },
27732773+ },
27742774+ },
27752775+ },
27762776+ },
13532777 "ToolsOzoneModerationQueryStatuses": {
13542778 "lexicon": 1,
13552779 "id": "tools.ozone.moderation.queryStatuses",
···14562880 "type": "string",
14572881 "description":
14582882 "Specify when fetching subjects in a certain state",
28832883+ "knownValues": [
28842884+ "tools.ozone.moderation.defs#reviewOpen",
28852885+ "tools.ozone.moderation.defs#reviewClosed",
28862886+ "tools.ozone.moderation.defs#reviewEscalated",
28872887+ "tools.ozone.moderation.defs#reviewNone",
28882888+ ],
14592889 },
14602890 "ignoreSubjects": {
14612891 "type": "array",
···15622992 "description":
15632993 "If specified, only subjects that have priority score value above the given value will be returned.",
15642994 },
29952995+ "minStrikeCount": {
29962996+ "type": "integer",
29972997+ "minimum": 1,
29982998+ "description":
29992999+ "If specified, only subjects that belong to an account that has at least this many active strikes will be returned.",
30003000+ },
30013001+ "ageAssuranceState": {
30023002+ "type": "string",
30033003+ "description":
30043004+ "If specified, only subjects with the given age assurance state will be returned.",
30053005+ "knownValues": [
30063006+ "pending",
30073007+ "assured",
30083008+ "unknown",
30093009+ "reset",
30103010+ "blocked",
30113011+ ],
30123012+ },
15653013 },
15663014 },
15673015 "output": {
···16623110 "lex:tools.ozone.moderation.defs#identityEvent",
16633111 "lex:tools.ozone.moderation.defs#recordEvent",
16643112 "lex:tools.ozone.moderation.defs#modEventPriorityScore",
31133113+ "lex:tools.ozone.moderation.defs#ageAssuranceEvent",
31143114+ "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent",
31153115+ "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent",
31163116+ "lex:tools.ozone.moderation.defs#scheduleTakedownEvent",
31173117+ "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent",
16653118 ],
16663119 },
16673120 "subject": {
···16913144 },
16923145 "subjectHandle": {
16933146 "type": "string",
31473147+ },
31483148+ "modTool": {
31493149+ "type": "ref",
31503150+ "ref": "lex:tools.ozone.moderation.defs#modTool",
16943151 },
16953152 },
16963153 },
···17303187 "lex:tools.ozone.moderation.defs#identityEvent",
17313188 "lex:tools.ozone.moderation.defs#recordEvent",
17323189 "lex:tools.ozone.moderation.defs#modEventPriorityScore",
31903190+ "lex:tools.ozone.moderation.defs#ageAssuranceEvent",
31913191+ "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent",
31923192+ "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent",
31933193+ "lex:tools.ozone.moderation.defs#scheduleTakedownEvent",
31943194+ "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent",
17333195 ],
17343196 },
17353197 "subject": {
···17563218 "type": "string",
17573219 "format": "datetime",
17583220 },
32213221+ "modTool": {
32223222+ "type": "ref",
32233223+ "ref": "lex:tools.ozone.moderation.defs#modTool",
32243224+ },
17593225 },
17603226 },
17613227 "subjectStatusView": {
···17763242 "refs": [
17773243 "lex:com.atproto.admin.defs#repoRef",
17783244 "lex:com.atproto.repo.strongRef",
32453245+ "lex:chat.bsky.convo.defs#messageRef",
17793246 ],
17803247 },
17813248 "hosting": {
···18773344 "type": "ref",
18783345 "ref": "lex:tools.ozone.moderation.defs#recordsStats",
18793346 },
33473347+ "accountStrike": {
33483348+ "description":
33493349+ "Strike information for the account (account-level only)",
33503350+ "type": "ref",
33513351+ "ref": "lex:tools.ozone.moderation.defs#accountStrike",
33523352+ },
33533353+ "ageAssuranceState": {
33543354+ "type": "string",
33553355+ "description": "Current age assurance state of the subject.",
33563356+ "knownValues": [
33573357+ "pending",
33583358+ "assured",
33593359+ "unknown",
33603360+ "reset",
33613361+ "blocked",
33623362+ ],
33633363+ },
33643364+ "ageAssuranceUpdatedBy": {
33653365+ "type": "string",
33663366+ "description":
33673367+ "Whether or not the last successful update to age assurance was made by the user or admin.",
33683368+ "knownValues": [
33693369+ "admin",
33703370+ "user",
33713371+ ],
33723372+ },
33733373+ },
33743374+ },
33753375+ "subjectView": {
33763376+ "description":
33773377+ "Detailed view of a subject. For record subjects, the author's repo and profile will be returned.",
33783378+ "type": "object",
33793379+ "required": [
33803380+ "type",
33813381+ "subject",
33823382+ ],
33833383+ "properties": {
33843384+ "type": {
33853385+ "type": "ref",
33863386+ "ref": "lex:com.atproto.moderation.defs#subjectType",
33873387+ },
33883388+ "subject": {
33893389+ "type": "string",
33903390+ },
33913391+ "status": {
33923392+ "type": "ref",
33933393+ "ref": "lex:tools.ozone.moderation.defs#subjectStatusView",
33943394+ },
33953395+ "repo": {
33963396+ "type": "ref",
33973397+ "ref": "lex:tools.ozone.moderation.defs#repoViewDetail",
33983398+ },
33993399+ "profile": {
34003400+ "type": "union",
34013401+ "refs": [],
34023402+ },
34033403+ "record": {
34043404+ "type": "ref",
34053405+ "ref": "lex:tools.ozone.moderation.defs#recordViewDetail",
34063406+ },
18803407 },
18813408 },
18823409 "accountStats": {
···19473474 },
19483475 },
19493476 },
34773477+ "accountStrike": {
34783478+ "description": "Strike information for an account",
34793479+ "type": "object",
34803480+ "properties": {
34813481+ "activeStrikeCount": {
34823482+ "description":
34833483+ "Current number of active strikes (excluding expired strikes)",
34843484+ "type": "integer",
34853485+ },
34863486+ "totalStrikeCount": {
34873487+ "description":
34883488+ "Total number of strikes ever received (including expired strikes)",
34893489+ "type": "integer",
34903490+ },
34913491+ "firstStrikeAt": {
34923492+ "description": "Timestamp of the first strike received",
34933493+ "type": "string",
34943494+ "format": "datetime",
34953495+ },
34963496+ "lastStrikeAt": {
34973497+ "description": "Timestamp of the most recent strike received",
34983498+ "type": "string",
34993499+ "format": "datetime",
35003500+ },
35013501+ },
35023502+ },
19503503 "subjectReviewState": {
19513504 "type": "string",
19523505 "knownValues": [
19531953- "lex:tools.ozone.moderation.defs#reviewOpen",
19541954- "lex:tools.ozone.moderation.defs#reviewEscalated",
19551955- "lex:tools.ozone.moderation.defs#reviewClosed",
19561956- "lex:tools.ozone.moderation.defs#reviewNone",
35063506+ "tools.ozone.moderation.defs#reviewOpen",
35073507+ "tools.ozone.moderation.defs#reviewEscalated",
35083508+ "tools.ozone.moderation.defs#reviewClosed",
35093509+ "tools.ozone.moderation.defs#reviewNone",
19573510 ],
19583511 },
19593512 "reviewOpen": {
···20023555 "description":
20033556 "Names/Keywords of the policies that drove the decision.",
20043557 },
35583558+ "severityLevel": {
35593559+ "type": "string",
35603560+ "description":
35613561+ "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).",
35623562+ },
35633563+ "targetServices": {
35643564+ "type": "array",
35653565+ "items": {
35663566+ "type": "string",
35673567+ "knownValues": [
35683568+ "appview",
35693569+ "pds",
35703570+ ],
35713571+ },
35723572+ "description":
35733573+ "List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services.",
35743574+ },
35753575+ "strikeCount": {
35763576+ "type": "integer",
35773577+ "description":
35783578+ "Number of strikes to assign to the user for this violation.",
35793579+ },
35803580+ "strikeExpiresAt": {
35813581+ "type": "string",
35823582+ "format": "datetime",
35833583+ "description":
35843584+ "When the strike should expire. If not provided, the strike never expires.",
35853585+ },
20053586 },
20063587 },
20073588 "modEventReverseTakedown": {
···20113592 "comment": {
20123593 "type": "string",
20133594 "description": "Describe reasoning behind the reversal.",
35953595+ },
35963596+ "policies": {
35973597+ "type": "array",
35983598+ "maxLength": 5,
35993599+ "items": {
36003600+ "type": "string",
36013601+ },
36023602+ "description":
36033603+ "Names/Keywords of the policy infraction for which takedown is being reversed.",
36043604+ },
36053605+ "severityLevel": {
36063606+ "type": "string",
36073607+ "description":
36083608+ "Severity level of the violation. Usually set from the last policy infraction's severity.",
36093609+ },
36103610+ "strikeCount": {
36113611+ "type": "integer",
36123612+ "description":
36133613+ "Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity.",
20143614 },
20153615 },
20163616 },
···21073707 },
21083708 },
21093709 },
37103710+ "ageAssuranceEvent": {
37113711+ "type": "object",
37123712+ "description":
37133713+ "Age assurance info coming directly from users. Only works on DID subjects.",
37143714+ "required": [
37153715+ "createdAt",
37163716+ "status",
37173717+ "attemptId",
37183718+ ],
37193719+ "properties": {
37203720+ "createdAt": {
37213721+ "type": "string",
37223722+ "format": "datetime",
37233723+ "description": "The date and time of this write operation.",
37243724+ },
37253725+ "attemptId": {
37263726+ "type": "string",
37273727+ "description":
37283728+ "The unique identifier for this instance of the age assurance flow, in UUID format.",
37293729+ },
37303730+ "status": {
37313731+ "type": "string",
37323732+ "description": "The status of the Age Assurance process.",
37333733+ "knownValues": [
37343734+ "unknown",
37353735+ "pending",
37363736+ "assured",
37373737+ ],
37383738+ },
37393739+ "access": {
37403740+ "type": "ref",
37413741+ "ref": "lex:app.bsky.ageassurance.defs#access",
37423742+ },
37433743+ "countryCode": {
37443744+ "type": "string",
37453745+ "description":
37463746+ "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow.",
37473747+ },
37483748+ "regionCode": {
37493749+ "type": "string",
37503750+ "description":
37513751+ "The ISO 3166-2 region code provided when beginning the Age Assurance flow.",
37523752+ },
37533753+ "initIp": {
37543754+ "type": "string",
37553755+ "description": "The IP address used when initiating the AA flow.",
37563756+ },
37573757+ "initUa": {
37583758+ "type": "string",
37593759+ "description": "The user agent used when initiating the AA flow.",
37603760+ },
37613761+ "completeIp": {
37623762+ "type": "string",
37633763+ "description": "The IP address used when completing the AA flow.",
37643764+ },
37653765+ "completeUa": {
37663766+ "type": "string",
37673767+ "description": "The user agent used when completing the AA flow.",
37683768+ },
37693769+ },
37703770+ },
37713771+ "ageAssuranceOverrideEvent": {
37723772+ "type": "object",
37733773+ "description":
37743774+ "Age assurance status override by moderators. Only works on DID subjects.",
37753775+ "required": [
37763776+ "comment",
37773777+ "status",
37783778+ ],
37793779+ "properties": {
37803780+ "status": {
37813781+ "type": "string",
37823782+ "description":
37833783+ "The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state.",
37843784+ "knownValues": [
37853785+ "assured",
37863786+ "reset",
37873787+ "blocked",
37883788+ ],
37893789+ },
37903790+ "access": {
37913791+ "type": "ref",
37923792+ "ref": "lex:app.bsky.ageassurance.defs#access",
37933793+ },
37943794+ "comment": {
37953795+ "type": "string",
37963796+ "description": "Comment describing the reason for the override.",
37973797+ },
37983798+ },
37993799+ },
38003800+ "revokeAccountCredentialsEvent": {
38013801+ "type": "object",
38023802+ "description":
38033803+ "Account credentials revocation by moderators. Only works on DID subjects.",
38043804+ "required": [
38053805+ "comment",
38063806+ ],
38073807+ "properties": {
38083808+ "comment": {
38093809+ "type": "string",
38103810+ "description": "Comment describing the reason for the revocation.",
38113811+ },
38123812+ },
38133813+ },
21103814 "modEventAcknowledge": {
21113815 "type": "object",
21123816 "properties": {
···21983902 "type": "string",
21993903 "description": "Additional comment about the outgoing comm.",
22003904 },
39053905+ "policies": {
39063906+ "type": "array",
39073907+ "maxLength": 5,
39083908+ "items": {
39093909+ "type": "string",
39103910+ },
39113911+ "description":
39123912+ "Names/Keywords of the policies that necessitated the email.",
39133913+ },
39143914+ "severityLevel": {
39153915+ "type": "string",
39163916+ "description":
39173917+ "Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense",
39183918+ },
39193919+ "strikeCount": {
39203920+ "type": "integer",
39213921+ "description":
39223922+ "Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense.",
39233923+ },
39243924+ "strikeExpiresAt": {
39253925+ "type": "string",
39263926+ "format": "datetime",
39273927+ "description":
39283928+ "When the strike should expire. If not provided, the strike never expires.",
39293929+ },
39303930+ "isDelivered": {
39313931+ "type": "boolean",
39323932+ "description":
39333933+ "Indicates whether the email was successfully delivered to the user's inbox.",
39343934+ },
22013935 },
22023936 },
22033937 "modEventDivert": {
···23294063 "timestamp": {
23304064 "type": "string",
23314065 "format": "datetime",
40664066+ },
40674067+ },
40684068+ },
40694069+ "scheduleTakedownEvent": {
40704070+ "type": "object",
40714071+ "description": "Logs a scheduled takedown action for an account.",
40724072+ "properties": {
40734073+ "comment": {
40744074+ "type": "string",
40754075+ },
40764076+ "executeAt": {
40774077+ "type": "string",
40784078+ "format": "datetime",
40794079+ },
40804080+ "executeAfter": {
40814081+ "type": "string",
40824082+ "format": "datetime",
40834083+ },
40844084+ "executeUntil": {
40854085+ "type": "string",
40864086+ "format": "datetime",
40874087+ },
40884088+ },
40894089+ },
40904090+ "cancelScheduledTakedownEvent": {
40914091+ "type": "object",
40924092+ "description":
40934093+ "Logs cancellation of a scheduled takedown action for an account.",
40944094+ "properties": {
40954095+ "comment": {
40964096+ "type": "string",
23324097 },
23334098 },
23344099 },
···27964561 },
27974562 },
27984563 },
45644564+ "modTool": {
45654565+ "type": "object",
45664566+ "description":
45674567+ "Moderation tool information for tracing the source of the action",
45684568+ "required": [
45694569+ "name",
45704570+ ],
45714571+ "properties": {
45724572+ "name": {
45734573+ "type": "string",
45744574+ "description":
45754575+ "Name/identifier of the source (e.g., 'automod', 'ozone/workspace')",
45764576+ },
45774577+ "meta": {
45784578+ "type": "unknown",
45794579+ "description": "Additional arbitrary metadata about the source",
45804580+ },
45814581+ },
45824582+ },
45834583+ "timelineEventPlcCreate": {
45844584+ "type": "token",
45854585+ "description":
45864586+ "Moderation event timeline event for a PLC create operation",
45874587+ },
45884588+ "timelineEventPlcOperation": {
45894589+ "type": "token",
45904590+ "description":
45914591+ "Moderation event timeline event for generic PLC operation",
45924592+ },
45934593+ "timelineEventPlcTombstone": {
45944594+ "type": "token",
45954595+ "description":
45964596+ "Moderation event timeline event for a PLC tombstone operation",
45974597+ },
45984598+ "scheduledActionView": {
45994599+ "type": "object",
46004600+ "description": "View of a scheduled moderation action",
46014601+ "required": [
46024602+ "id",
46034603+ "action",
46044604+ "did",
46054605+ "createdBy",
46064606+ "createdAt",
46074607+ "status",
46084608+ ],
46094609+ "properties": {
46104610+ "id": {
46114611+ "type": "integer",
46124612+ "description": "Auto-incrementing row ID",
46134613+ },
46144614+ "action": {
46154615+ "type": "string",
46164616+ "knownValues": [
46174617+ "takedown",
46184618+ ],
46194619+ "description": "Type of action to be executed",
46204620+ },
46214621+ "eventData": {
46224622+ "type": "unknown",
46234623+ "description":
46244624+ "Serialized event object that will be propagated to the event when performed",
46254625+ },
46264626+ "did": {
46274627+ "type": "string",
46284628+ "format": "did",
46294629+ "description": "Subject DID for the action",
46304630+ },
46314631+ "executeAt": {
46324632+ "type": "string",
46334633+ "format": "datetime",
46344634+ "description": "Exact time to execute the action",
46354635+ },
46364636+ "executeAfter": {
46374637+ "type": "string",
46384638+ "format": "datetime",
46394639+ "description":
46404640+ "Earliest time to execute the action (for randomized scheduling)",
46414641+ },
46424642+ "executeUntil": {
46434643+ "type": "string",
46444644+ "format": "datetime",
46454645+ "description":
46464646+ "Latest time to execute the action (for randomized scheduling)",
46474647+ },
46484648+ "randomizeExecution": {
46494649+ "type": "boolean",
46504650+ "description":
46514651+ "Whether execution time should be randomized within the specified range",
46524652+ },
46534653+ "createdBy": {
46544654+ "type": "string",
46554655+ "format": "did",
46564656+ "description": "DID of the user who created this scheduled action",
46574657+ },
46584658+ "createdAt": {
46594659+ "type": "string",
46604660+ "format": "datetime",
46614661+ "description": "When the scheduled action was created",
46624662+ },
46634663+ "updatedAt": {
46644664+ "type": "string",
46654665+ "format": "datetime",
46664666+ "description": "When the scheduled action was last updated",
46674667+ },
46684668+ "status": {
46694669+ "type": "string",
46704670+ "knownValues": [
46714671+ "pending",
46724672+ "executed",
46734673+ "cancelled",
46744674+ "failed",
46754675+ ],
46764676+ "description": "Current status of the scheduled action",
46774677+ },
46784678+ "lastExecutedAt": {
46794679+ "type": "string",
46804680+ "format": "datetime",
46814681+ "description": "When the action was last attempted to be executed",
46824682+ },
46834683+ "lastFailureReason": {
46844684+ "type": "string",
46854685+ "description": "Reason for the last execution failure",
46864686+ },
46874687+ "executionEventId": {
46884688+ "type": "integer",
46894689+ "description":
46904690+ "ID of the moderation event created when action was successfully executed",
46914691+ },
46924692+ },
46934693+ },
46944694+ },
46954695+ },
46964696+ "ToolsOzoneModerationGetSubjects": {
46974697+ "lexicon": 1,
46984698+ "id": "tools.ozone.moderation.getSubjects",
46994699+ "defs": {
47004700+ "main": {
47014701+ "type": "query",
47024702+ "description": "Get details about subjects.",
47034703+ "parameters": {
47044704+ "type": "params",
47054705+ "required": [
47064706+ "subjects",
47074707+ ],
47084708+ "properties": {
47094709+ "subjects": {
47104710+ "type": "array",
47114711+ "maxLength": 100,
47124712+ "minLength": 1,
47134713+ "items": {
47144714+ "type": "string",
47154715+ },
47164716+ },
47174717+ },
47184718+ },
47194719+ "output": {
47204720+ "encoding": "application/json",
47214721+ "schema": {
47224722+ "type": "object",
47234723+ "required": [
47244724+ "subjects",
47254725+ ],
47264726+ "properties": {
47274727+ "subjects": {
47284728+ "type": "array",
47294729+ "items": {
47304730+ "type": "ref",
47314731+ "ref": "lex:tools.ozone.moderation.defs#subjectView",
47324732+ },
47334733+ },
47344734+ },
47354735+ },
47364736+ },
47374737+ },
27994738 },
28004739 },
28014740 "ToolsOzoneModerationGetRecords": {
···28454784 },
28464785 },
28474786 },
47874787+ "ToolsOzoneModerationScheduleAction": {
47884788+ "lexicon": 1,
47894789+ "id": "tools.ozone.moderation.scheduleAction",
47904790+ "defs": {
47914791+ "main": {
47924792+ "type": "procedure",
47934793+ "description":
47944794+ "Schedule a moderation action to be executed at a future time",
47954795+ "input": {
47964796+ "encoding": "application/json",
47974797+ "schema": {
47984798+ "type": "object",
47994799+ "required": [
48004800+ "action",
48014801+ "subjects",
48024802+ "createdBy",
48034803+ "scheduling",
48044804+ ],
48054805+ "properties": {
48064806+ "action": {
48074807+ "type": "union",
48084808+ "refs": [
48094809+ "lex:tools.ozone.moderation.scheduleAction#takedown",
48104810+ ],
48114811+ },
48124812+ "subjects": {
48134813+ "type": "array",
48144814+ "maxLength": 100,
48154815+ "items": {
48164816+ "type": "string",
48174817+ "format": "did",
48184818+ },
48194819+ "description":
48204820+ "Array of DID subjects to schedule the action for",
48214821+ },
48224822+ "createdBy": {
48234823+ "type": "string",
48244824+ "format": "did",
48254825+ },
48264826+ "scheduling": {
48274827+ "type": "ref",
48284828+ "ref":
48294829+ "lex:tools.ozone.moderation.scheduleAction#schedulingConfig",
48304830+ },
48314831+ "modTool": {
48324832+ "type": "ref",
48334833+ "ref": "lex:tools.ozone.moderation.defs#modTool",
48344834+ "description":
48354835+ "This will be propagated to the moderation event when it is applied",
48364836+ },
48374837+ },
48384838+ },
48394839+ },
48404840+ "output": {
48414841+ "encoding": "application/json",
48424842+ "schema": {
48434843+ "type": "ref",
48444844+ "ref":
48454845+ "lex:tools.ozone.moderation.scheduleAction#scheduledActionResults",
48464846+ },
48474847+ },
48484848+ },
48494849+ "takedown": {
48504850+ "type": "object",
48514851+ "description": "Schedule a takedown action",
48524852+ "properties": {
48534853+ "comment": {
48544854+ "type": "string",
48554855+ },
48564856+ "durationInHours": {
48574857+ "type": "integer",
48584858+ "description":
48594859+ "Indicates how long the takedown should be in effect before automatically expiring.",
48604860+ },
48614861+ "acknowledgeAccountSubjects": {
48624862+ "type": "boolean",
48634863+ "description":
48644864+ "If true, all other reports on content authored by this account will be resolved (acknowledged).",
48654865+ },
48664866+ "policies": {
48674867+ "type": "array",
48684868+ "maxLength": 5,
48694869+ "items": {
48704870+ "type": "string",
48714871+ },
48724872+ "description":
48734873+ "Names/Keywords of the policies that drove the decision.",
48744874+ },
48754875+ "severityLevel": {
48764876+ "type": "string",
48774877+ "description":
48784878+ "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.).",
48794879+ },
48804880+ "strikeCount": {
48814881+ "type": "integer",
48824882+ "description":
48834883+ "Number of strikes to assign to the user when takedown is applied.",
48844884+ },
48854885+ "strikeExpiresAt": {
48864886+ "type": "string",
48874887+ "format": "datetime",
48884888+ "description":
48894889+ "When the strike should expire. If not provided, the strike never expires.",
48904890+ },
48914891+ "emailContent": {
48924892+ "type": "string",
48934893+ "description":
48944894+ "Email content to be sent to the user upon takedown.",
48954895+ },
48964896+ "emailSubject": {
48974897+ "type": "string",
48984898+ "description":
48994899+ "Subject of the email to be sent to the user upon takedown.",
49004900+ },
49014901+ },
49024902+ },
49034903+ "schedulingConfig": {
49044904+ "type": "object",
49054905+ "description": "Configuration for when the action should be executed",
49064906+ "properties": {
49074907+ "executeAt": {
49084908+ "type": "string",
49094909+ "format": "datetime",
49104910+ "description": "Exact time to execute the action",
49114911+ },
49124912+ "executeAfter": {
49134913+ "type": "string",
49144914+ "format": "datetime",
49154915+ "description":
49164916+ "Earliest time to execute the action (for randomized scheduling)",
49174917+ },
49184918+ "executeUntil": {
49194919+ "type": "string",
49204920+ "format": "datetime",
49214921+ "description":
49224922+ "Latest time to execute the action (for randomized scheduling)",
49234923+ },
49244924+ },
49254925+ },
49264926+ "scheduledActionResults": {
49274927+ "type": "object",
49284928+ "required": [
49294929+ "succeeded",
49304930+ "failed",
49314931+ ],
49324932+ "properties": {
49334933+ "succeeded": {
49344934+ "type": "array",
49354935+ "items": {
49364936+ "type": "string",
49374937+ "format": "did",
49384938+ },
49394939+ },
49404940+ "failed": {
49414941+ "type": "array",
49424942+ "items": {
49434943+ "type": "ref",
49444944+ "ref":
49454945+ "lex:tools.ozone.moderation.scheduleAction#failedScheduling",
49464946+ },
49474947+ },
49484948+ },
49494949+ },
49504950+ "failedScheduling": {
49514951+ "type": "object",
49524952+ "required": [
49534953+ "subject",
49544954+ "error",
49554955+ ],
49564956+ "properties": {
49574957+ "subject": {
49584958+ "type": "string",
49594959+ "format": "did",
49604960+ },
49614961+ "error": {
49624962+ "type": "string",
49634963+ },
49644964+ "errorCode": {
49654965+ "type": "string",
49664966+ },
49674967+ },
49684968+ },
49694969+ },
49704970+ },
28484971 "ToolsOzoneModerationGetEvent": {
28494972 "lexicon": 1,
28504973 "id": "tools.ozone.moderation.getEvent",
···30055128 "If specified, only events where the action policies match any of the given policies are returned",
30065129 },
30075130 },
51315131+ "modTool": {
51325132+ "type": "array",
51335133+ "items": {
51345134+ "type": "string",
51355135+ },
51365136+ "description":
51375137+ "If specified, only events where the modTool name matches any of the given values are returned",
51385138+ },
51395139+ "batchId": {
51405140+ "type": "string",
51415141+ "description":
51425142+ "If specified, only events where the batchId matches the given value are returned",
51435143+ },
51445144+ "ageAssuranceState": {
51455145+ "type": "string",
51465146+ "description":
51475147+ "If specified, only events where the age assurance state matches the given value are returned",
51485148+ "knownValues": [
51495149+ "pending",
51505150+ "assured",
51515151+ "unknown",
51525152+ "reset",
51535153+ "blocked",
51545154+ ],
51555155+ },
51565156+ "withStrike": {
51575157+ "type": "boolean",
51585158+ "description":
51595159+ "If specified, only events where strikeCount value is set are returned.",
51605160+ },
30085161 "cursor": {
30095162 "type": "string",
30105163 },
···31115264 "lex:tools.ozone.moderation.defs#identityEvent",
31125265 "lex:tools.ozone.moderation.defs#recordEvent",
31135266 "lex:tools.ozone.moderation.defs#modEventPriorityScore",
52675267+ "lex:tools.ozone.moderation.defs#ageAssuranceEvent",
52685268+ "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent",
52695269+ "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent",
52705270+ "lex:tools.ozone.moderation.defs#scheduleTakedownEvent",
52715271+ "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent",
31145272 ],
31155273 },
31165274 "subject": {
···31315289 "type": "string",
31325290 "format": "did",
31335291 },
52925292+ "modTool": {
52935293+ "type": "ref",
52945294+ "ref": "lex:tools.ozone.moderation.defs#modTool",
52955295+ },
52965296+ "externalId": {
52975297+ "type": "string",
52985298+ "description":
52995299+ "An optional external ID for the event, used to deduplicate events from external systems. Fails when an event of same type with the same external ID exists for the same subject.",
53005300+ },
31345301 },
31355302 },
31365303 },
···31445311 "errors": [
31455312 {
31465313 "name": "SubjectHasAction",
53145314+ },
53155315+ {
53165316+ "name": "DuplicateExternalId",
53175317+ "description":
53185318+ "An event with the same external ID already exists for the subject.",
31475319 },
31485320 ],
31495321 },
···32015373 },
32025374 },
32035375 },
53765376+ "ToolsOzoneModerationGetAccountTimeline": {
53775377+ "lexicon": 1,
53785378+ "id": "tools.ozone.moderation.getAccountTimeline",
53795379+ "defs": {
53805380+ "main": {
53815381+ "type": "query",
53825382+ "description":
53835383+ "Get timeline of all available events of an account. This includes moderation events, account history and did history.",
53845384+ "parameters": {
53855385+ "type": "params",
53865386+ "required": [
53875387+ "did",
53885388+ ],
53895389+ "properties": {
53905390+ "did": {
53915391+ "type": "string",
53925392+ "format": "did",
53935393+ },
53945394+ },
53955395+ },
53965396+ "output": {
53975397+ "encoding": "application/json",
53985398+ "schema": {
53995399+ "type": "object",
54005400+ "required": [
54015401+ "timeline",
54025402+ ],
54035403+ "properties": {
54045404+ "timeline": {
54055405+ "type": "array",
54065406+ "items": {
54075407+ "type": "ref",
54085408+ "ref":
54095409+ "lex:tools.ozone.moderation.getAccountTimeline#timelineItem",
54105410+ },
54115411+ },
54125412+ },
54135413+ },
54145414+ },
54155415+ "errors": [
54165416+ {
54175417+ "name": "RepoNotFound",
54185418+ },
54195419+ ],
54205420+ },
54215421+ "timelineItem": {
54225422+ "type": "object",
54235423+ "required": [
54245424+ "day",
54255425+ "summary",
54265426+ ],
54275427+ "properties": {
54285428+ "day": {
54295429+ "type": "string",
54305430+ },
54315431+ "summary": {
54325432+ "type": "array",
54335433+ "items": {
54345434+ "type": "ref",
54355435+ "ref":
54365436+ "lex:tools.ozone.moderation.getAccountTimeline#timelineItemSummary",
54375437+ },
54385438+ },
54395439+ },
54405440+ },
54415441+ "timelineItemSummary": {
54425442+ "type": "object",
54435443+ "required": [
54445444+ "eventSubjectType",
54455445+ "eventType",
54465446+ "count",
54475447+ ],
54485448+ "properties": {
54495449+ "eventSubjectType": {
54505450+ "type": "string",
54515451+ "knownValues": [
54525452+ "account",
54535453+ "record",
54545454+ "chat",
54555455+ ],
54565456+ },
54575457+ "eventType": {
54585458+ "type": "string",
54595459+ "knownValues": [
54605460+ "tools.ozone.moderation.defs#modEventTakedown",
54615461+ "tools.ozone.moderation.defs#modEventReverseTakedown",
54625462+ "tools.ozone.moderation.defs#modEventComment",
54635463+ "tools.ozone.moderation.defs#modEventReport",
54645464+ "tools.ozone.moderation.defs#modEventLabel",
54655465+ "tools.ozone.moderation.defs#modEventAcknowledge",
54665466+ "tools.ozone.moderation.defs#modEventEscalate",
54675467+ "tools.ozone.moderation.defs#modEventMute",
54685468+ "tools.ozone.moderation.defs#modEventUnmute",
54695469+ "tools.ozone.moderation.defs#modEventMuteReporter",
54705470+ "tools.ozone.moderation.defs#modEventUnmuteReporter",
54715471+ "tools.ozone.moderation.defs#modEventEmail",
54725472+ "tools.ozone.moderation.defs#modEventResolveAppeal",
54735473+ "tools.ozone.moderation.defs#modEventDivert",
54745474+ "tools.ozone.moderation.defs#modEventTag",
54755475+ "tools.ozone.moderation.defs#accountEvent",
54765476+ "tools.ozone.moderation.defs#identityEvent",
54775477+ "tools.ozone.moderation.defs#recordEvent",
54785478+ "tools.ozone.moderation.defs#modEventPriorityScore",
54795479+ "tools.ozone.moderation.defs#revokeAccountCredentialsEvent",
54805480+ "tools.ozone.moderation.defs#ageAssuranceEvent",
54815481+ "tools.ozone.moderation.defs#ageAssuranceOverrideEvent",
54825482+ "tools.ozone.moderation.defs#timelineEventPlcCreate",
54835483+ "tools.ozone.moderation.defs#timelineEventPlcOperation",
54845484+ "tools.ozone.moderation.defs#timelineEventPlcTombstone",
54855485+ "tools.ozone.hosting.getAccountHistory#accountCreated",
54865486+ "tools.ozone.hosting.getAccountHistory#emailConfirmed",
54875487+ "tools.ozone.hosting.getAccountHistory#passwordUpdated",
54885488+ "tools.ozone.hosting.getAccountHistory#handleUpdated",
54895489+ "tools.ozone.moderation.defs#scheduleTakedownEvent",
54905490+ "tools.ozone.moderation.defs#cancelScheduledTakedownEvent",
54915491+ ],
54925492+ },
54935493+ "count": {
54945494+ "type": "integer",
54955495+ },
54965496+ },
54975497+ },
54985498+ },
54995499+ },
32045500 "ToolsOzoneModerationGetRepos": {
32055501 "lexicon": 1,
32065502 "id": "tools.ozone.moderation.getRepos",
···33925688 },
33935689 },
33945690 },
56915691+ },
56925692+ },
56935693+ },
56945694+ "AppBskyBookmarkDefs": {
56955695+ "lexicon": 1,
56965696+ "id": "app.bsky.bookmark.defs",
56975697+ "defs": {
56985698+ "bookmark": {
56995699+ "description": "Object used to store bookmark data in stash.",
57005700+ "type": "object",
57015701+ "required": [
57025702+ "subject",
57035703+ ],
57045704+ "properties": {
57055705+ "subject": {
57065706+ "description":
57075707+ "A strong ref to the record to be bookmarked. Currently, only `app.bsky.feed.post` records are supported.",
57085708+ "type": "ref",
57095709+ "ref": "lex:com.atproto.repo.strongRef",
57105710+ },
57115711+ },
57125712+ },
57135713+ "bookmarkView": {
57145714+ "type": "object",
57155715+ "required": [
57165716+ "subject",
57175717+ "item",
57185718+ ],
57195719+ "properties": {
57205720+ "subject": {
57215721+ "description": "A strong ref to the bookmarked record.",
57225722+ "type": "ref",
57235723+ "ref": "lex:com.atproto.repo.strongRef",
57245724+ },
57255725+ "createdAt": {
57265726+ "type": "string",
57275727+ "format": "datetime",
57285728+ },
57295729+ "item": {
57305730+ "type": "union",
57315731+ "refs": [
57325732+ "lex:app.bsky.feed.defs#blockedPost",
57335733+ "lex:app.bsky.feed.defs#notFoundPost",
57345734+ "lex:app.bsky.feed.defs#postView",
57355735+ ],
57365736+ },
57375737+ },
57385738+ },
57395739+ },
57405740+ },
57415741+ "AppBskyBookmarkDeleteBookmark": {
57425742+ "lexicon": 1,
57435743+ "id": "app.bsky.bookmark.deleteBookmark",
57445744+ "defs": {
57455745+ "main": {
57465746+ "type": "procedure",
57475747+ "description":
57485748+ "Deletes a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.",
57495749+ "input": {
57505750+ "encoding": "application/json",
57515751+ "schema": {
57525752+ "type": "object",
57535753+ "required": [
57545754+ "uri",
57555755+ ],
57565756+ "properties": {
57575757+ "uri": {
57585758+ "type": "string",
57595759+ "format": "at-uri",
57605760+ },
57615761+ },
57625762+ },
57635763+ },
57645764+ "errors": [
57655765+ {
57665766+ "name": "UnsupportedCollection",
57675767+ "description":
57685768+ "The URI to be bookmarked is for an unsupported collection.",
57695769+ },
57705770+ ],
57715771+ },
57725772+ },
57735773+ },
57745774+ "AppBskyBookmarkGetBookmarks": {
57755775+ "lexicon": 1,
57765776+ "id": "app.bsky.bookmark.getBookmarks",
57775777+ "defs": {
57785778+ "main": {
57795779+ "type": "query",
57805780+ "description":
57815781+ "Gets views of records bookmarked by the authenticated user. Requires authentication.",
57825782+ "parameters": {
57835783+ "type": "params",
57845784+ "properties": {
57855785+ "limit": {
57865786+ "type": "integer",
57875787+ "minimum": 1,
57885788+ "maximum": 100,
57895789+ "default": 50,
57905790+ },
57915791+ "cursor": {
57925792+ "type": "string",
57935793+ },
57945794+ },
57955795+ },
57965796+ "output": {
57975797+ "encoding": "application/json",
57985798+ "schema": {
57995799+ "type": "object",
58005800+ "required": [
58015801+ "bookmarks",
58025802+ ],
58035803+ "properties": {
58045804+ "cursor": {
58055805+ "type": "string",
58065806+ },
58075807+ "bookmarks": {
58085808+ "type": "array",
58095809+ "items": {
58105810+ "type": "ref",
58115811+ "ref": "lex:app.bsky.bookmark.defs#bookmarkView",
58125812+ },
58135813+ },
58145814+ },
58155815+ },
58165816+ },
58175817+ },
58185818+ },
58195819+ },
58205820+ "AppBskyBookmarkCreateBookmark": {
58215821+ "lexicon": 1,
58225822+ "id": "app.bsky.bookmark.createBookmark",
58235823+ "defs": {
58245824+ "main": {
58255825+ "type": "procedure",
58265826+ "description":
58275827+ "Creates a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.",
58285828+ "input": {
58295829+ "encoding": "application/json",
58305830+ "schema": {
58315831+ "type": "object",
58325832+ "required": [
58335833+ "uri",
58345834+ "cid",
58355835+ ],
58365836+ "properties": {
58375837+ "uri": {
58385838+ "type": "string",
58395839+ "format": "at-uri",
58405840+ },
58415841+ "cid": {
58425842+ "type": "string",
58435843+ "format": "cid",
58445844+ },
58455845+ },
58465846+ },
58475847+ },
58485848+ "errors": [
58495849+ {
58505850+ "name": "UnsupportedCollection",
58515851+ "description":
58525852+ "The URI to be bookmarked is for an unsupported collection.",
58535853+ },
58545854+ ],
33955855 },
33965856 },
33975857 },
···37396199 "properties": {
37406200 "video": {
37416201 "type": "blob",
62026202+ "description":
62036203+ "The mp4 video file. May be up to 100mb, formerly limited to 50mb.",
37426204 "accept": [
37436205 "video/mp4",
37446206 ],
37453745- "maxSize": 50000000,
62076207+ "maxSize": 100000000,
37466208 },
37476209 "captions": {
37486210 "type": "array",
···39006362 },
39016363 },
39026364 },
63656365+ "AppBskyNotificationDefs": {
63666366+ "lexicon": 1,
63676367+ "id": "app.bsky.notification.defs",
63686368+ "defs": {
63696369+ "recordDeleted": {
63706370+ "type": "object",
63716371+ "properties": {},
63726372+ },
63736373+ "chatPreference": {
63746374+ "type": "object",
63756375+ "required": [
63766376+ "include",
63776377+ "push",
63786378+ ],
63796379+ "properties": {
63806380+ "include": {
63816381+ "type": "string",
63826382+ "knownValues": [
63836383+ "all",
63846384+ "accepted",
63856385+ ],
63866386+ },
63876387+ "push": {
63886388+ "type": "boolean",
63896389+ },
63906390+ },
63916391+ },
63926392+ "filterablePreference": {
63936393+ "type": "object",
63946394+ "required": [
63956395+ "include",
63966396+ "list",
63976397+ "push",
63986398+ ],
63996399+ "properties": {
64006400+ "include": {
64016401+ "type": "string",
64026402+ "knownValues": [
64036403+ "all",
64046404+ "follows",
64056405+ ],
64066406+ },
64076407+ "list": {
64086408+ "type": "boolean",
64096409+ },
64106410+ "push": {
64116411+ "type": "boolean",
64126412+ },
64136413+ },
64146414+ },
64156415+ "preference": {
64166416+ "type": "object",
64176417+ "required": [
64186418+ "list",
64196419+ "push",
64206420+ ],
64216421+ "properties": {
64226422+ "list": {
64236423+ "type": "boolean",
64246424+ },
64256425+ "push": {
64266426+ "type": "boolean",
64276427+ },
64286428+ },
64296429+ },
64306430+ "preferences": {
64316431+ "type": "object",
64326432+ "required": [
64336433+ "chat",
64346434+ "follow",
64356435+ "like",
64366436+ "likeViaRepost",
64376437+ "mention",
64386438+ "quote",
64396439+ "reply",
64406440+ "repost",
64416441+ "repostViaRepost",
64426442+ "starterpackJoined",
64436443+ "subscribedPost",
64446444+ "unverified",
64456445+ "verified",
64466446+ ],
64476447+ "properties": {
64486448+ "chat": {
64496449+ "type": "ref",
64506450+ "ref": "lex:app.bsky.notification.defs#chatPreference",
64516451+ },
64526452+ "follow": {
64536453+ "type": "ref",
64546454+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64556455+ },
64566456+ "like": {
64576457+ "type": "ref",
64586458+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64596459+ },
64606460+ "likeViaRepost": {
64616461+ "type": "ref",
64626462+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64636463+ },
64646464+ "mention": {
64656465+ "type": "ref",
64666466+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64676467+ },
64686468+ "quote": {
64696469+ "type": "ref",
64706470+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64716471+ },
64726472+ "reply": {
64736473+ "type": "ref",
64746474+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64756475+ },
64766476+ "repost": {
64776477+ "type": "ref",
64786478+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64796479+ },
64806480+ "repostViaRepost": {
64816481+ "type": "ref",
64826482+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
64836483+ },
64846484+ "starterpackJoined": {
64856485+ "type": "ref",
64866486+ "ref": "lex:app.bsky.notification.defs#preference",
64876487+ },
64886488+ "subscribedPost": {
64896489+ "type": "ref",
64906490+ "ref": "lex:app.bsky.notification.defs#preference",
64916491+ },
64926492+ "unverified": {
64936493+ "type": "ref",
64946494+ "ref": "lex:app.bsky.notification.defs#preference",
64956495+ },
64966496+ "verified": {
64976497+ "type": "ref",
64986498+ "ref": "lex:app.bsky.notification.defs#preference",
64996499+ },
65006500+ },
65016501+ },
65026502+ "activitySubscription": {
65036503+ "type": "object",
65046504+ "required": [
65056505+ "post",
65066506+ "reply",
65076507+ ],
65086508+ "properties": {
65096509+ "post": {
65106510+ "type": "boolean",
65116511+ },
65126512+ "reply": {
65136513+ "type": "boolean",
65146514+ },
65156515+ },
65166516+ },
65176517+ "subjectActivitySubscription": {
65186518+ "description":
65196519+ "Object used to store activity subscription data in stash.",
65206520+ "type": "object",
65216521+ "required": [
65226522+ "subject",
65236523+ "activitySubscription",
65246524+ ],
65256525+ "properties": {
65266526+ "subject": {
65276527+ "type": "string",
65286528+ "format": "did",
65296529+ },
65306530+ "activitySubscription": {
65316531+ "type": "ref",
65326532+ "ref": "lex:app.bsky.notification.defs#activitySubscription",
65336533+ },
65346534+ },
65356535+ },
65366536+ },
65376537+ },
39036538 "AppBskyNotificationRegisterPush": {
39046539 "lexicon": 1,
39056540 "id": "app.bsky.notification.registerPush",
···39376572 "appId": {
39386573 "type": "string",
39396574 },
65756575+ "ageRestricted": {
65766576+ "type": "boolean",
65776577+ "description": "Set to true when the actor is age restricted",
65786578+ },
39406579 },
39416580 },
39426581 },
···39686607 },
39696608 },
39706609 },
66106610+ "AppBskyNotificationPutActivitySubscription": {
66116611+ "lexicon": 1,
66126612+ "id": "app.bsky.notification.putActivitySubscription",
66136613+ "defs": {
66146614+ "main": {
66156615+ "type": "procedure",
66166616+ "description":
66176617+ "Puts an activity subscription entry. The key should be omitted for creation and provided for updates. Requires auth.",
66186618+ "input": {
66196619+ "encoding": "application/json",
66206620+ "schema": {
66216621+ "type": "object",
66226622+ "required": [
66236623+ "subject",
66246624+ "activitySubscription",
66256625+ ],
66266626+ "properties": {
66276627+ "subject": {
66286628+ "type": "string",
66296629+ "format": "did",
66306630+ },
66316631+ "activitySubscription": {
66326632+ "type": "ref",
66336633+ "ref": "lex:app.bsky.notification.defs#activitySubscription",
66346634+ },
66356635+ },
66366636+ },
66376637+ },
66386638+ "output": {
66396639+ "encoding": "application/json",
66406640+ "schema": {
66416641+ "type": "object",
66426642+ "required": [
66436643+ "subject",
66446644+ ],
66456645+ "properties": {
66466646+ "subject": {
66476647+ "type": "string",
66486648+ "format": "did",
66496649+ },
66506650+ "activitySubscription": {
66516651+ "type": "ref",
66526652+ "ref": "lex:app.bsky.notification.defs#activitySubscription",
66536653+ },
66546654+ },
66556655+ },
66566656+ },
66576657+ },
66586658+ },
66596659+ },
66606660+ "AppBskyNotificationDeclaration": {
66616661+ "lexicon": 1,
66626662+ "id": "app.bsky.notification.declaration",
66636663+ "defs": {
66646664+ "main": {
66656665+ "type": "record",
66666666+ "description":
66676667+ "A declaration of the user's choices related to notifications that can be produced by them.",
66686668+ "key": "literal:self",
66696669+ "record": {
66706670+ "type": "object",
66716671+ "required": [
66726672+ "allowSubscriptions",
66736673+ ],
66746674+ "properties": {
66756675+ "allowSubscriptions": {
66766676+ "type": "string",
66776677+ "description":
66786678+ "A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.",
66796679+ "knownValues": [
66806680+ "followers",
66816681+ "mutuals",
66826682+ "none",
66836683+ ],
66846684+ },
66856685+ },
66866686+ },
66876687+ },
66886688+ },
66896689+ },
66906690+ "AppBskyNotificationPutPreferencesV2": {
66916691+ "lexicon": 1,
66926692+ "id": "app.bsky.notification.putPreferencesV2",
66936693+ "defs": {
66946694+ "main": {
66956695+ "type": "procedure",
66966696+ "description":
66976697+ "Set notification-related preferences for an account. Requires auth.",
66986698+ "input": {
66996699+ "encoding": "application/json",
67006700+ "schema": {
67016701+ "type": "object",
67026702+ "properties": {
67036703+ "chat": {
67046704+ "type": "ref",
67056705+ "ref": "lex:app.bsky.notification.defs#chatPreference",
67066706+ },
67076707+ "follow": {
67086708+ "type": "ref",
67096709+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67106710+ },
67116711+ "like": {
67126712+ "type": "ref",
67136713+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67146714+ },
67156715+ "likeViaRepost": {
67166716+ "type": "ref",
67176717+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67186718+ },
67196719+ "mention": {
67206720+ "type": "ref",
67216721+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67226722+ },
67236723+ "quote": {
67246724+ "type": "ref",
67256725+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67266726+ },
67276727+ "reply": {
67286728+ "type": "ref",
67296729+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67306730+ },
67316731+ "repost": {
67326732+ "type": "ref",
67336733+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67346734+ },
67356735+ "repostViaRepost": {
67366736+ "type": "ref",
67376737+ "ref": "lex:app.bsky.notification.defs#filterablePreference",
67386738+ },
67396739+ "starterpackJoined": {
67406740+ "type": "ref",
67416741+ "ref": "lex:app.bsky.notification.defs#preference",
67426742+ },
67436743+ "subscribedPost": {
67446744+ "type": "ref",
67456745+ "ref": "lex:app.bsky.notification.defs#preference",
67466746+ },
67476747+ "unverified": {
67486748+ "type": "ref",
67496749+ "ref": "lex:app.bsky.notification.defs#preference",
67506750+ },
67516751+ "verified": {
67526752+ "type": "ref",
67536753+ "ref": "lex:app.bsky.notification.defs#preference",
67546754+ },
67556755+ },
67566756+ },
67576757+ },
67586758+ "output": {
67596759+ "encoding": "application/json",
67606760+ "schema": {
67616761+ "type": "object",
67626762+ "required": [
67636763+ "preferences",
67646764+ ],
67656765+ "properties": {
67666766+ "preferences": {
67676767+ "type": "ref",
67686768+ "ref": "lex:app.bsky.notification.defs#preferences",
67696769+ },
67706770+ },
67716771+ },
67726772+ },
67736773+ },
67746774+ },
67756775+ },
39716776 "AppBskyNotificationUpdateSeen": {
39726777 "lexicon": 1,
39736778 "id": "app.bsky.notification.updateSeen",
···39946799 },
39956800 },
39966801 },
68026802+ "AppBskyNotificationListActivitySubscriptions": {
68036803+ "lexicon": 1,
68046804+ "id": "app.bsky.notification.listActivitySubscriptions",
68056805+ "defs": {
68066806+ "main": {
68076807+ "type": "query",
68086808+ "description":
68096809+ "Enumerate all accounts to which the requesting account is subscribed to receive notifications for. Requires auth.",
68106810+ "parameters": {
68116811+ "type": "params",
68126812+ "properties": {
68136813+ "limit": {
68146814+ "type": "integer",
68156815+ "minimum": 1,
68166816+ "maximum": 100,
68176817+ "default": 50,
68186818+ },
68196819+ "cursor": {
68206820+ "type": "string",
68216821+ },
68226822+ },
68236823+ },
68246824+ "output": {
68256825+ "encoding": "application/json",
68266826+ "schema": {
68276827+ "type": "object",
68286828+ "required": [
68296829+ "subscriptions",
68306830+ ],
68316831+ "properties": {
68326832+ "cursor": {
68336833+ "type": "string",
68346834+ },
68356835+ "subscriptions": {
68366836+ "type": "array",
68376837+ "items": {
68386838+ "type": "ref",
68396839+ "ref": "lex:app.bsky.actor.defs#profileView",
68406840+ },
68416841+ },
68426842+ },
68436843+ },
68446844+ },
68456845+ },
68466846+ },
68476847+ },
68486848+ "AppBskyNotificationUnregisterPush": {
68496849+ "lexicon": 1,
68506850+ "id": "app.bsky.notification.unregisterPush",
68516851+ "defs": {
68526852+ "main": {
68536853+ "type": "procedure",
68546854+ "description":
68556855+ "The inverse of registerPush - inform a specified service that push notifications should no longer be sent to the given token for the requesting account. Requires auth.",
68566856+ "input": {
68576857+ "encoding": "application/json",
68586858+ "schema": {
68596859+ "type": "object",
68606860+ "required": [
68616861+ "serviceDid",
68626862+ "token",
68636863+ "platform",
68646864+ "appId",
68656865+ ],
68666866+ "properties": {
68676867+ "serviceDid": {
68686868+ "type": "string",
68696869+ "format": "did",
68706870+ },
68716871+ "token": {
68726872+ "type": "string",
68736873+ },
68746874+ "platform": {
68756875+ "type": "string",
68766876+ "knownValues": [
68776877+ "ios",
68786878+ "android",
68796879+ "web",
68806880+ ],
68816881+ },
68826882+ "appId": {
68836883+ "type": "string",
68846884+ },
68856885+ },
68866886+ },
68876887+ },
68886888+ },
68896889+ },
68906890+ },
68916891+ "AppBskyNotificationGetPreferences": {
68926892+ "lexicon": 1,
68936893+ "id": "app.bsky.notification.getPreferences",
68946894+ "defs": {
68956895+ "main": {
68966896+ "type": "query",
68976897+ "description":
68986898+ "Get notification-related preferences for an account. Requires auth.",
68996899+ "parameters": {
69006900+ "type": "params",
69016901+ "properties": {},
69026902+ },
69036903+ "output": {
69046904+ "encoding": "application/json",
69056905+ "schema": {
69066906+ "type": "object",
69076907+ "required": [
69086908+ "preferences",
69096909+ ],
69106910+ "properties": {
69116911+ "preferences": {
69126912+ "type": "ref",
69136913+ "ref": "lex:app.bsky.notification.defs#preferences",
69146914+ },
69156915+ },
69166916+ },
69176917+ },
69186918+ },
69196919+ },
69206920+ },
39976921 "AppBskyNotificationListNotifications": {
39986922 "lexicon": 1,
39996923 "id": "app.bsky.notification.listNotifications",
···40897013 "reason": {
40907014 "type": "string",
40917015 "description":
40924092- "Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', and 'starterpack-joined'.",
70167016+ "The reason why this notification was delivered - e.g. your post was liked, or you received a new follower.",
40937017 "knownValues": [
40947018 "like",
40957019 "repost",
···40987022 "reply",
40997023 "quote",
41007024 "starterpack-joined",
70257025+ "verified",
70267026+ "unverified",
70277027+ "like-via-repost",
70287028+ "repost-via-repost",
70297029+ "subscribed-post",
41017030 ],
41027031 },
41037032 "reasonSubject": {
···41627091 },
41637092 },
41647093 },
70947094+ "AppBskyUnspeccedGetSuggestedFeedsSkeleton": {
70957095+ "lexicon": 1,
70967096+ "id": "app.bsky.unspecced.getSuggestedFeedsSkeleton",
70977097+ "defs": {
70987098+ "main": {
70997099+ "type": "query",
71007100+ "description":
71017101+ "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds",
71027102+ "parameters": {
71037103+ "type": "params",
71047104+ "properties": {
71057105+ "viewer": {
71067106+ "type": "string",
71077107+ "format": "did",
71087108+ "description":
71097109+ "DID of the account making the request (not included for public/unauthenticated queries).",
71107110+ },
71117111+ "limit": {
71127112+ "type": "integer",
71137113+ "minimum": 1,
71147114+ "maximum": 25,
71157115+ "default": 10,
71167116+ },
71177117+ },
71187118+ },
71197119+ "output": {
71207120+ "encoding": "application/json",
71217121+ "schema": {
71227122+ "type": "object",
71237123+ "required": [
71247124+ "feeds",
71257125+ ],
71267126+ "properties": {
71277127+ "feeds": {
71287128+ "type": "array",
71297129+ "items": {
71307130+ "type": "string",
71317131+ "format": "at-uri",
71327132+ },
71337133+ },
71347134+ },
71357135+ },
71367136+ },
71377137+ },
71387138+ },
71397139+ },
41657140 "AppBskyUnspeccedSearchStarterPacksSkeleton": {
41667141 "lexicon": 1,
41677142 "id": "app.bsky.unspecced.searchStarterPacksSkeleton",
···42957270 },
42967271 },
42977272 },
72737273+ "skeletonTrend": {
72747274+ "type": "object",
72757275+ "required": [
72767276+ "topic",
72777277+ "displayName",
72787278+ "link",
72797279+ "startedAt",
72807280+ "postCount",
72817281+ "dids",
72827282+ ],
72837283+ "properties": {
72847284+ "topic": {
72857285+ "type": "string",
72867286+ },
72877287+ "displayName": {
72887288+ "type": "string",
72897289+ },
72907290+ "link": {
72917291+ "type": "string",
72927292+ },
72937293+ "startedAt": {
72947294+ "type": "string",
72957295+ "format": "datetime",
72967296+ },
72977297+ "postCount": {
72987298+ "type": "integer",
72997299+ },
73007300+ "status": {
73017301+ "type": "string",
73027302+ "knownValues": [
73037303+ "hot",
73047304+ ],
73057305+ },
73067306+ "category": {
73077307+ "type": "string",
73087308+ },
73097309+ "dids": {
73107310+ "type": "array",
73117311+ "items": {
73127312+ "type": "string",
73137313+ "format": "did",
73147314+ },
73157315+ },
73167316+ },
73177317+ },
73187318+ "trendView": {
73197319+ "type": "object",
73207320+ "required": [
73217321+ "topic",
73227322+ "displayName",
73237323+ "link",
73247324+ "startedAt",
73257325+ "postCount",
73267326+ "actors",
73277327+ ],
73287328+ "properties": {
73297329+ "topic": {
73307330+ "type": "string",
73317331+ },
73327332+ "displayName": {
73337333+ "type": "string",
73347334+ },
73357335+ "link": {
73367336+ "type": "string",
73377337+ },
73387338+ "startedAt": {
73397339+ "type": "string",
73407340+ "format": "datetime",
73417341+ },
73427342+ "postCount": {
73437343+ "type": "integer",
73447344+ },
73457345+ "status": {
73467346+ "type": "string",
73477347+ "knownValues": [
73487348+ "hot",
73497349+ ],
73507350+ },
73517351+ "category": {
73527352+ "type": "string",
73537353+ },
73547354+ "actors": {
73557355+ "type": "array",
73567356+ "items": {
73577357+ "type": "ref",
73587358+ "ref": "lex:app.bsky.actor.defs#profileViewBasic",
73597359+ },
73607360+ },
73617361+ },
73627362+ },
73637363+ "threadItemPost": {
73647364+ "type": "object",
73657365+ "required": [
73667366+ "post",
73677367+ "moreParents",
73687368+ "moreReplies",
73697369+ "opThread",
73707370+ "hiddenByThreadgate",
73717371+ "mutedByViewer",
73727372+ ],
73737373+ "properties": {
73747374+ "post": {
73757375+ "type": "ref",
73767376+ "ref": "lex:app.bsky.feed.defs#postView",
73777377+ },
73787378+ "moreParents": {
73797379+ "type": "boolean",
73807380+ "description":
73817381+ "This post has more parents that were not present in the response. This is just a boolean, without the number of parents.",
73827382+ },
73837383+ "moreReplies": {
73847384+ "type": "integer",
73857385+ "description":
73867386+ "This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate.",
73877387+ },
73887388+ "opThread": {
73897389+ "type": "boolean",
73907390+ "description":
73917391+ "This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread.",
73927392+ },
73937393+ "hiddenByThreadgate": {
73947394+ "type": "boolean",
73957395+ "description":
73967396+ "The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread.",
73977397+ },
73987398+ "mutedByViewer": {
73997399+ "type": "boolean",
74007400+ "description":
74017401+ "This is by an account muted by the viewer requesting it.",
74027402+ },
74037403+ },
74047404+ },
74057405+ "threadItemNoUnauthenticated": {
74067406+ "type": "object",
74077407+ "properties": {},
74087408+ },
74097409+ "threadItemNotFound": {
74107410+ "type": "object",
74117411+ "properties": {},
74127412+ },
74137413+ "threadItemBlocked": {
74147414+ "type": "object",
74157415+ "required": [
74167416+ "author",
74177417+ ],
74187418+ "properties": {
74197419+ "author": {
74207420+ "type": "ref",
74217421+ "ref": "lex:app.bsky.feed.defs#blockedAuthor",
74227422+ },
74237423+ },
74247424+ },
74257425+ "ageAssuranceState": {
74267426+ "type": "object",
74277427+ "description":
74287428+ "The computed state of the age assurance process, returned to the user in question on certain authenticated requests.",
74297429+ "required": [
74307430+ "status",
74317431+ ],
74327432+ "properties": {
74337433+ "lastInitiatedAt": {
74347434+ "type": "string",
74357435+ "format": "datetime",
74367436+ "description": "The timestamp when this state was last updated.",
74377437+ },
74387438+ "status": {
74397439+ "type": "string",
74407440+ "description": "The status of the age assurance process.",
74417441+ "knownValues": [
74427442+ "unknown",
74437443+ "pending",
74447444+ "assured",
74457445+ "blocked",
74467446+ ],
74477447+ },
74487448+ },
74497449+ },
74507450+ "ageAssuranceEvent": {
74517451+ "type": "object",
74527452+ "description": "Object used to store age assurance data in stash.",
74537453+ "required": [
74547454+ "createdAt",
74557455+ "status",
74567456+ "attemptId",
74577457+ ],
74587458+ "properties": {
74597459+ "createdAt": {
74607460+ "type": "string",
74617461+ "format": "datetime",
74627462+ "description": "The date and time of this write operation.",
74637463+ },
74647464+ "status": {
74657465+ "type": "string",
74667466+ "description": "The status of the age assurance process.",
74677467+ "knownValues": [
74687468+ "unknown",
74697469+ "pending",
74707470+ "assured",
74717471+ ],
74727472+ },
74737473+ "attemptId": {
74747474+ "type": "string",
74757475+ "description":
74767476+ "The unique identifier for this instance of the age assurance flow, in UUID format.",
74777477+ },
74787478+ "email": {
74797479+ "type": "string",
74807480+ "description": "The email used for AA.",
74817481+ },
74827482+ "initIp": {
74837483+ "type": "string",
74847484+ "description": "The IP address used when initiating the AA flow.",
74857485+ },
74867486+ "initUa": {
74877487+ "type": "string",
74887488+ "description": "The user agent used when initiating the AA flow.",
74897489+ },
74907490+ "completeIp": {
74917491+ "type": "string",
74927492+ "description": "The IP address used when completing the AA flow.",
74937493+ },
74947494+ "completeUa": {
74957495+ "type": "string",
74967496+ "description": "The user agent used when completing the AA flow.",
74977497+ },
74987498+ },
74997499+ },
75007500+ },
75017501+ },
75027502+ "AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton": {
75037503+ "lexicon": 1,
75047504+ "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton",
75057505+ "defs": {
75067506+ "main": {
75077507+ "type": "query",
75087508+ "description":
75097509+ "Get a skeleton of suggested starterpacks for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getOnboardingSuggestedStarterPacks",
75107510+ "parameters": {
75117511+ "type": "params",
75127512+ "properties": {
75137513+ "viewer": {
75147514+ "type": "string",
75157515+ "format": "did",
75167516+ "description":
75177517+ "DID of the account making the request (not included for public/unauthenticated queries).",
75187518+ },
75197519+ "limit": {
75207520+ "type": "integer",
75217521+ "minimum": 1,
75227522+ "maximum": 25,
75237523+ "default": 10,
75247524+ },
75257525+ },
75267526+ },
75277527+ "output": {
75287528+ "encoding": "application/json",
75297529+ "schema": {
75307530+ "type": "object",
75317531+ "required": [
75327532+ "starterPacks",
75337533+ ],
75347534+ "properties": {
75357535+ "starterPacks": {
75367536+ "type": "array",
75377537+ "items": {
75387538+ "type": "string",
75397539+ "format": "at-uri",
75407540+ },
75417541+ },
75427542+ },
75437543+ },
75447544+ },
75457545+ },
75467546+ },
75477547+ },
75487548+ "AppBskyUnspeccedGetSuggestedUsers": {
75497549+ "lexicon": 1,
75507550+ "id": "app.bsky.unspecced.getSuggestedUsers",
75517551+ "defs": {
75527552+ "main": {
75537553+ "type": "query",
75547554+ "description": "Get a list of suggested users",
75557555+ "parameters": {
75567556+ "type": "params",
75577557+ "properties": {
75587558+ "category": {
75597559+ "type": "string",
75607560+ "description": "Category of users to get suggestions for.",
75617561+ },
75627562+ "limit": {
75637563+ "type": "integer",
75647564+ "minimum": 1,
75657565+ "maximum": 50,
75667566+ "default": 25,
75677567+ },
75687568+ },
75697569+ },
75707570+ "output": {
75717571+ "encoding": "application/json",
75727572+ "schema": {
75737573+ "type": "object",
75747574+ "required": [
75757575+ "actors",
75767576+ ],
75777577+ "properties": {
75787578+ "actors": {
75797579+ "type": "array",
75807580+ "items": {
75817581+ "type": "ref",
75827582+ "ref": "lex:app.bsky.actor.defs#profileView",
75837583+ },
75847584+ },
75857585+ },
75867586+ },
75877587+ },
75887588+ },
75897589+ },
75907590+ },
75917591+ "AppBskyUnspeccedGetPostThreadOtherV2": {
75927592+ "lexicon": 1,
75937593+ "id": "app.bsky.unspecced.getPostThreadOtherV2",
75947594+ "defs": {
75957595+ "main": {
75967596+ "type": "query",
75977597+ "description":
75987598+ "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get additional posts under a thread e.g. replies hidden by threadgate. Based on an anchor post at any depth of the tree, returns top-level replies below that anchor. It does not include ancestors nor the anchor itself. This should be called after exhausting `app.bsky.unspecced.getPostThreadV2`. Does not require auth, but additional metadata and filtering will be applied for authed requests.",
75997599+ "parameters": {
76007600+ "type": "params",
76017601+ "required": [
76027602+ "anchor",
76037603+ ],
76047604+ "properties": {
76057605+ "anchor": {
76067606+ "type": "string",
76077607+ "format": "at-uri",
76087608+ "description":
76097609+ "Reference (AT-URI) to post record. This is the anchor post.",
76107610+ },
76117611+ },
76127612+ },
76137613+ "output": {
76147614+ "encoding": "application/json",
76157615+ "schema": {
76167616+ "type": "object",
76177617+ "required": [
76187618+ "thread",
76197619+ ],
76207620+ "properties": {
76217621+ "thread": {
76227622+ "type": "array",
76237623+ "description":
76247624+ "A flat list of other thread items. The depth of each item is indicated by the depth property inside the item.",
76257625+ "items": {
76267626+ "type": "ref",
76277627+ "ref":
76287628+ "lex:app.bsky.unspecced.getPostThreadOtherV2#threadItem",
76297629+ },
76307630+ },
76317631+ },
76327632+ },
76337633+ },
76347634+ },
76357635+ "threadItem": {
76367636+ "type": "object",
76377637+ "required": [
76387638+ "uri",
76397639+ "depth",
76407640+ "value",
76417641+ ],
76427642+ "properties": {
76437643+ "uri": {
76447644+ "type": "string",
76457645+ "format": "at-uri",
76467646+ },
76477647+ "depth": {
76487648+ "type": "integer",
76497649+ "description":
76507650+ "The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths.",
76517651+ },
76527652+ "value": {
76537653+ "type": "union",
76547654+ "refs": [
76557655+ "lex:app.bsky.unspecced.defs#threadItemPost",
76567656+ ],
76577657+ },
76587658+ },
76597659+ },
76607660+ },
76617661+ },
76627662+ "AppBskyUnspeccedGetSuggestedStarterPacks": {
76637663+ "lexicon": 1,
76647664+ "id": "app.bsky.unspecced.getSuggestedStarterPacks",
76657665+ "defs": {
76667666+ "main": {
76677667+ "type": "query",
76687668+ "description": "Get a list of suggested starterpacks",
76697669+ "parameters": {
76707670+ "type": "params",
76717671+ "properties": {
76727672+ "limit": {
76737673+ "type": "integer",
76747674+ "minimum": 1,
76757675+ "maximum": 25,
76767676+ "default": 10,
76777677+ },
76787678+ },
76797679+ },
76807680+ "output": {
76817681+ "encoding": "application/json",
76827682+ "schema": {
76837683+ "type": "object",
76847684+ "required": [
76857685+ "starterPacks",
76867686+ ],
76877687+ "properties": {
76887688+ "starterPacks": {
76897689+ "type": "array",
76907690+ "items": {
76917691+ "type": "ref",
76927692+ "ref": "lex:app.bsky.graph.defs#starterPackView",
76937693+ },
76947694+ },
76957695+ },
76967696+ },
76977697+ },
76987698+ },
76997699+ },
77007700+ },
77017701+ "AppBskyUnspeccedGetSuggestedStarterPacksSkeleton": {
77027702+ "lexicon": 1,
77037703+ "id": "app.bsky.unspecced.getSuggestedStarterPacksSkeleton",
77047704+ "defs": {
77057705+ "main": {
77067706+ "type": "query",
77077707+ "description":
77087708+ "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks",
77097709+ "parameters": {
77107710+ "type": "params",
77117711+ "properties": {
77127712+ "viewer": {
77137713+ "type": "string",
77147714+ "format": "did",
77157715+ "description":
77167716+ "DID of the account making the request (not included for public/unauthenticated queries).",
77177717+ },
77187718+ "limit": {
77197719+ "type": "integer",
77207720+ "minimum": 1,
77217721+ "maximum": 25,
77227722+ "default": 10,
77237723+ },
77247724+ },
77257725+ },
77267726+ "output": {
77277727+ "encoding": "application/json",
77287728+ "schema": {
77297729+ "type": "object",
77307730+ "required": [
77317731+ "starterPacks",
77327732+ ],
77337733+ "properties": {
77347734+ "starterPacks": {
77357735+ "type": "array",
77367736+ "items": {
77377737+ "type": "string",
77387738+ "format": "at-uri",
77397739+ },
77407740+ },
77417741+ },
77427742+ },
77437743+ },
77447744+ },
77457745+ },
77467746+ },
77477747+ "AppBskyUnspeccedGetOnboardingSuggestedStarterPacks": {
77487748+ "lexicon": 1,
77497749+ "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacks",
77507750+ "defs": {
77517751+ "main": {
77527752+ "type": "query",
77537753+ "description": "Get a list of suggested starterpacks for onboarding",
77547754+ "parameters": {
77557755+ "type": "params",
77567756+ "properties": {
77577757+ "limit": {
77587758+ "type": "integer",
77597759+ "minimum": 1,
77607760+ "maximum": 25,
77617761+ "default": 10,
77627762+ },
77637763+ },
77647764+ },
77657765+ "output": {
77667766+ "encoding": "application/json",
77677767+ "schema": {
77687768+ "type": "object",
77697769+ "required": [
77707770+ "starterPacks",
77717771+ ],
77727772+ "properties": {
77737773+ "starterPacks": {
77747774+ "type": "array",
77757775+ "items": {
77767776+ "type": "ref",
77777777+ "ref": "lex:app.bsky.graph.defs#starterPackView",
77787778+ },
77797779+ },
77807780+ },
77817781+ },
77827782+ },
77837783+ },
77847784+ },
77857785+ },
77867786+ "AppBskyUnspeccedGetSuggestedUsersSkeleton": {
77877787+ "lexicon": 1,
77887788+ "id": "app.bsky.unspecced.getSuggestedUsersSkeleton",
77897789+ "defs": {
77907790+ "main": {
77917791+ "type": "query",
77927792+ "description":
77937793+ "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers",
77947794+ "parameters": {
77957795+ "type": "params",
77967796+ "properties": {
77977797+ "viewer": {
77987798+ "type": "string",
77997799+ "format": "did",
78007800+ "description":
78017801+ "DID of the account making the request (not included for public/unauthenticated queries).",
78027802+ },
78037803+ "category": {
78047804+ "type": "string",
78057805+ "description": "Category of users to get suggestions for.",
78067806+ },
78077807+ "limit": {
78087808+ "type": "integer",
78097809+ "minimum": 1,
78107810+ "maximum": 50,
78117811+ "default": 25,
78127812+ },
78137813+ },
78147814+ },
78157815+ "output": {
78167816+ "encoding": "application/json",
78177817+ "schema": {
78187818+ "type": "object",
78197819+ "required": [
78207820+ "dids",
78217821+ ],
78227822+ "properties": {
78237823+ "dids": {
78247824+ "type": "array",
78257825+ "items": {
78267826+ "type": "string",
78277827+ "format": "did",
78287828+ },
78297829+ },
78307830+ },
78317831+ },
78327832+ },
78337833+ },
78347834+ },
78357835+ },
78367836+ "AppBskyUnspeccedGetPostThreadV2": {
78377837+ "lexicon": 1,
78387838+ "id": "app.bsky.unspecced.getPostThreadV2",
78397839+ "defs": {
78407840+ "main": {
78417841+ "type": "query",
78427842+ "description":
78437843+ "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get posts in a thread. It is based in an anchor post at any depth of the tree, and returns posts above it (recursively resolving the parent, without further branching to their replies) and below it (recursive replies, with branching to their replies). Does not require auth, but additional metadata and filtering will be applied for authed requests.",
78447844+ "parameters": {
78457845+ "type": "params",
78467846+ "required": [
78477847+ "anchor",
78487848+ ],
78497849+ "properties": {
78507850+ "anchor": {
78517851+ "type": "string",
78527852+ "format": "at-uri",
78537853+ "description":
78547854+ "Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post.",
78557855+ },
78567856+ "above": {
78577857+ "type": "boolean",
78587858+ "description": "Whether to include parents above the anchor.",
78597859+ "default": true,
78607860+ },
78617861+ "below": {
78627862+ "type": "integer",
78637863+ "description":
78647864+ "How many levels of replies to include below the anchor.",
78657865+ "default": 6,
78667866+ "minimum": 0,
78677867+ "maximum": 20,
78687868+ },
78697869+ "branchingFactor": {
78707870+ "type": "integer",
78717871+ "description":
78727872+ "Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated).",
78737873+ "default": 10,
78747874+ "minimum": 0,
78757875+ "maximum": 100,
78767876+ },
78777877+ "sort": {
78787878+ "type": "string",
78797879+ "description": "Sorting for the thread replies.",
78807880+ "knownValues": [
78817881+ "newest",
78827882+ "oldest",
78837883+ "top",
78847884+ ],
78857885+ "default": "oldest",
78867886+ },
78877887+ },
78887888+ },
78897889+ "output": {
78907890+ "encoding": "application/json",
78917891+ "schema": {
78927892+ "type": "object",
78937893+ "required": [
78947894+ "thread",
78957895+ "hasOtherReplies",
78967896+ ],
78977897+ "properties": {
78987898+ "thread": {
78997899+ "type": "array",
79007900+ "description":
79017901+ "A flat list of thread items. The depth of each item is indicated by the depth property inside the item.",
79027902+ "items": {
79037903+ "type": "ref",
79047904+ "ref": "lex:app.bsky.unspecced.getPostThreadV2#threadItem",
79057905+ },
79067906+ },
79077907+ "threadgate": {
79087908+ "type": "ref",
79097909+ "ref": "lex:app.bsky.feed.defs#threadgateView",
79107910+ },
79117911+ "hasOtherReplies": {
79127912+ "type": "boolean",
79137913+ "description":
79147914+ "Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them.",
79157915+ },
79167916+ },
79177917+ },
79187918+ },
79197919+ },
79207920+ "threadItem": {
79217921+ "type": "object",
79227922+ "required": [
79237923+ "uri",
79247924+ "depth",
79257925+ "value",
79267926+ ],
79277927+ "properties": {
79287928+ "uri": {
79297929+ "type": "string",
79307930+ "format": "at-uri",
79317931+ },
79327932+ "depth": {
79337933+ "type": "integer",
79347934+ "description":
79357935+ "The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths.",
79367936+ },
79377937+ "value": {
79387938+ "type": "union",
79397939+ "refs": [
79407940+ "lex:app.bsky.unspecced.defs#threadItemPost",
79417941+ "lex:app.bsky.unspecced.defs#threadItemNoUnauthenticated",
79427942+ "lex:app.bsky.unspecced.defs#threadItemNotFound",
79437943+ "lex:app.bsky.unspecced.defs#threadItemBlocked",
79447944+ ],
79457945+ },
79467946+ },
79477947+ },
79487948+ },
79497949+ },
79507950+ "AppBskyUnspeccedGetTrends": {
79517951+ "lexicon": 1,
79527952+ "id": "app.bsky.unspecced.getTrends",
79537953+ "defs": {
79547954+ "main": {
79557955+ "type": "query",
79567956+ "description": "Get the current trends on the network",
79577957+ "parameters": {
79587958+ "type": "params",
79597959+ "properties": {
79607960+ "limit": {
79617961+ "type": "integer",
79627962+ "minimum": 1,
79637963+ "maximum": 25,
79647964+ "default": 10,
79657965+ },
79667966+ },
79677967+ },
79687968+ "output": {
79697969+ "encoding": "application/json",
79707970+ "schema": {
79717971+ "type": "object",
79727972+ "required": [
79737973+ "trends",
79747974+ ],
79757975+ "properties": {
79767976+ "trends": {
79777977+ "type": "array",
79787978+ "items": {
79797979+ "type": "ref",
79807980+ "ref": "lex:app.bsky.unspecced.defs#trendView",
79817981+ },
79827982+ },
79837983+ },
79847984+ },
79857985+ },
79867986+ },
42987987 },
42997988 },
43007989 "AppBskyUnspeccedSearchActorsSkeleton": {
···45718260 },
45728261 },
45738262 },
82638263+ "AppBskyUnspeccedGetAgeAssuranceState": {
82648264+ "lexicon": 1,
82658265+ "id": "app.bsky.unspecced.getAgeAssuranceState",
82668266+ "defs": {
82678267+ "main": {
82688268+ "type": "query",
82698269+ "description":
82708270+ "Returns the current state of the age assurance process for an account. This is used to check if the user has completed age assurance or if further action is required.",
82718271+ "output": {
82728272+ "encoding": "application/json",
82738273+ "schema": {
82748274+ "type": "ref",
82758275+ "ref": "lex:app.bsky.unspecced.defs#ageAssuranceState",
82768276+ },
82778277+ },
82788278+ },
82798279+ },
82808280+ },
45748281 "AppBskyUnspeccedGetPopularFeedGenerators": {
45758282 "lexicon": 1,
45768283 "id": "app.bsky.unspecced.getPopularFeedGenerators",
···46198326 },
46208327 },
46218328 },
83298329+ "AppBskyUnspeccedInitAgeAssurance": {
83308330+ "lexicon": 1,
83318331+ "id": "app.bsky.unspecced.initAgeAssurance",
83328332+ "defs": {
83338333+ "main": {
83348334+ "type": "procedure",
83358335+ "description":
83368336+ "Initiate age assurance for an account. This is a one-time action that will start the process of verifying the user's age.",
83378337+ "input": {
83388338+ "encoding": "application/json",
83398339+ "schema": {
83408340+ "type": "object",
83418341+ "required": [
83428342+ "email",
83438343+ "language",
83448344+ "countryCode",
83458345+ ],
83468346+ "properties": {
83478347+ "email": {
83488348+ "type": "string",
83498349+ "description":
83508350+ "The user's email address to receive assurance instructions.",
83518351+ },
83528352+ "language": {
83538353+ "type": "string",
83548354+ "description":
83558355+ "The user's preferred language for communication during the assurance process.",
83568356+ },
83578357+ "countryCode": {
83588358+ "type": "string",
83598359+ "description":
83608360+ "An ISO 3166-1 alpha-2 code of the user's location.",
83618361+ },
83628362+ },
83638363+ },
83648364+ },
83658365+ "output": {
83668366+ "encoding": "application/json",
83678367+ "schema": {
83688368+ "type": "ref",
83698369+ "ref": "lex:app.bsky.unspecced.defs#ageAssuranceState",
83708370+ },
83718371+ },
83728372+ "errors": [
83738373+ {
83748374+ "name": "InvalidEmail",
83758375+ },
83768376+ {
83778377+ "name": "DidTooLong",
83788378+ },
83798379+ {
83808380+ "name": "InvalidInitiation",
83818381+ },
83828382+ ],
83838383+ },
83848384+ },
83858385+ },
46228386 "AppBskyUnspeccedGetTrendingTopics": {
46238387 "lexicon": 1,
46248388 "id": "app.bsky.unspecced.getTrendingTopics",
···47308494 },
47318495 },
47328496 },
84978497+ "AppBskyUnspeccedGetSuggestedFeeds": {
84988498+ "lexicon": 1,
84998499+ "id": "app.bsky.unspecced.getSuggestedFeeds",
85008500+ "defs": {
85018501+ "main": {
85028502+ "type": "query",
85038503+ "description": "Get a list of suggested feeds",
85048504+ "parameters": {
85058505+ "type": "params",
85068506+ "properties": {
85078507+ "limit": {
85088508+ "type": "integer",
85098509+ "minimum": 1,
85108510+ "maximum": 25,
85118511+ "default": 10,
85128512+ },
85138513+ },
85148514+ },
85158515+ "output": {
85168516+ "encoding": "application/json",
85178517+ "schema": {
85188518+ "type": "object",
85198519+ "required": [
85208520+ "feeds",
85218521+ ],
85228522+ "properties": {
85238523+ "feeds": {
85248524+ "type": "array",
85258525+ "items": {
85268526+ "type": "ref",
85278527+ "ref": "lex:app.bsky.feed.defs#generatorView",
85288528+ },
85298529+ },
85308530+ },
85318531+ },
85328532+ },
85338533+ },
85348534+ },
85358535+ },
85368536+ "AppBskyUnspeccedGetTrendsSkeleton": {
85378537+ "lexicon": 1,
85388538+ "id": "app.bsky.unspecced.getTrendsSkeleton",
85398539+ "defs": {
85408540+ "main": {
85418541+ "type": "query",
85428542+ "description":
85438543+ "Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends",
85448544+ "parameters": {
85458545+ "type": "params",
85468546+ "properties": {
85478547+ "viewer": {
85488548+ "type": "string",
85498549+ "format": "did",
85508550+ "description":
85518551+ "DID of the account making the request (not included for public/unauthenticated queries).",
85528552+ },
85538553+ "limit": {
85548554+ "type": "integer",
85558555+ "minimum": 1,
85568556+ "maximum": 25,
85578557+ "default": 10,
85588558+ },
85598559+ },
85608560+ },
85618561+ "output": {
85628562+ "encoding": "application/json",
85638563+ "schema": {
85648564+ "type": "object",
85658565+ "required": [
85668566+ "trends",
85678567+ ],
85688568+ "properties": {
85698569+ "trends": {
85708570+ "type": "array",
85718571+ "items": {
85728572+ "type": "ref",
85738573+ "ref": "lex:app.bsky.unspecced.defs#skeletonTrend",
85748574+ },
85758575+ },
85768576+ },
85778577+ },
85788578+ },
85798579+ },
85808580+ },
85818581+ },
47338582 "AppBskyUnspeccedGetConfig": {
47348583 "lexicon": 1,
47358584 "id": "app.bsky.unspecced.getConfig",
···47468595 "checkEmailConfirmed": {
47478596 "type": "boolean",
47488597 },
85988598+ "liveNow": {
85998599+ "type": "array",
86008600+ "items": {
86018601+ "type": "ref",
86028602+ "ref": "lex:app.bsky.unspecced.getConfig#liveNowConfig",
86038603+ },
86048604+ },
86058605+ },
86068606+ },
86078607+ },
86088608+ },
86098609+ "liveNowConfig": {
86108610+ "type": "object",
86118611+ "required": [
86128612+ "did",
86138613+ "domains",
86148614+ ],
86158615+ "properties": {
86168616+ "did": {
86178617+ "type": "string",
86188618+ "format": "did",
86198619+ },
86208620+ "domains": {
86218621+ "type": "array",
86228622+ "items": {
86238623+ "type": "string",
47498624 },
47508625 },
47518626 },
···48788753 },
48798754 },
48808755 },
87568756+ "AppBskyGraphGetStarterPacksWithMembership": {
87578757+ "lexicon": 1,
87588758+ "id": "app.bsky.graph.getStarterPacksWithMembership",
87598759+ "defs": {
87608760+ "main": {
87618761+ "type": "query",
87628762+ "description":
87638763+ "Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth.",
87648764+ "parameters": {
87658765+ "type": "params",
87668766+ "required": [
87678767+ "actor",
87688768+ ],
87698769+ "properties": {
87708770+ "actor": {
87718771+ "type": "string",
87728772+ "format": "at-identifier",
87738773+ "description": "The account (actor) to check for membership.",
87748774+ },
87758775+ "limit": {
87768776+ "type": "integer",
87778777+ "minimum": 1,
87788778+ "maximum": 100,
87798779+ "default": 50,
87808780+ },
87818781+ "cursor": {
87828782+ "type": "string",
87838783+ },
87848784+ },
87858785+ },
87868786+ "output": {
87878787+ "encoding": "application/json",
87888788+ "schema": {
87898789+ "type": "object",
87908790+ "required": [
87918791+ "starterPacksWithMembership",
87928792+ ],
87938793+ "properties": {
87948794+ "cursor": {
87958795+ "type": "string",
87968796+ },
87978797+ "starterPacksWithMembership": {
87988798+ "type": "array",
87998799+ "items": {
88008800+ "type": "ref",
88018801+ "ref":
88028802+ "lex:app.bsky.graph.getStarterPacksWithMembership#starterPackWithMembership",
88038803+ },
88048804+ },
88058805+ },
88068806+ },
88078807+ },
88088808+ },
88098809+ "starterPackWithMembership": {
88108810+ "description":
88118811+ "A starter pack and an optional list item indicating membership of a target user to that starter pack.",
88128812+ "type": "object",
88138813+ "required": [
88148814+ "starterPack",
88158815+ ],
88168816+ "properties": {
88178817+ "starterPack": {
88188818+ "type": "ref",
88198819+ "ref": "lex:app.bsky.graph.defs#starterPackView",
88208820+ },
88218821+ "listItem": {
88228822+ "type": "ref",
88238823+ "ref": "lex:app.bsky.graph.defs#listItemView",
88248824+ },
88258825+ },
88268826+ },
88278827+ },
88288828+ },
48818829 "AppBskyGraphFollow": {
48828830 "lexicon": 1,
48838831 "id": "app.bsky.graph.follow",
···49018849 "createdAt": {
49028850 "type": "string",
49038851 "format": "datetime",
88528852+ },
88538853+ "via": {
88548854+ "type": "ref",
88558855+ "ref": "lex:com.atproto.repo.strongRef",
49048856 },
49058857 },
49068858 },
···52459197 },
52469198 },
52479199 },
92009200+ "AppBskyGraphGetListsWithMembership": {
92019201+ "lexicon": 1,
92029202+ "id": "app.bsky.graph.getListsWithMembership",
92039203+ "defs": {
92049204+ "main": {
92059205+ "type": "query",
92069206+ "description":
92079207+ "Enumerates the lists created by the session user, and includes membership information about `actor` in those lists. Only supports curation and moderation lists (no reference lists, used in starter packs). Requires auth.",
92089208+ "parameters": {
92099209+ "type": "params",
92109210+ "required": [
92119211+ "actor",
92129212+ ],
92139213+ "properties": {
92149214+ "actor": {
92159215+ "type": "string",
92169216+ "format": "at-identifier",
92179217+ "description": "The account (actor) to check for membership.",
92189218+ },
92199219+ "limit": {
92209220+ "type": "integer",
92219221+ "minimum": 1,
92229222+ "maximum": 100,
92239223+ "default": 50,
92249224+ },
92259225+ "cursor": {
92269226+ "type": "string",
92279227+ },
92289228+ "purposes": {
92299229+ "type": "array",
92309230+ "description":
92319231+ "Optional filter by list purpose. If not specified, all supported types are returned.",
92329232+ "items": {
92339233+ "type": "string",
92349234+ "knownValues": [
92359235+ "modlist",
92369236+ "curatelist",
92379237+ ],
92389238+ },
92399239+ },
92409240+ },
92419241+ },
92429242+ "output": {
92439243+ "encoding": "application/json",
92449244+ "schema": {
92459245+ "type": "object",
92469246+ "required": [
92479247+ "listsWithMembership",
92489248+ ],
92499249+ "properties": {
92509250+ "cursor": {
92519251+ "type": "string",
92529252+ },
92539253+ "listsWithMembership": {
92549254+ "type": "array",
92559255+ "items": {
92569256+ "type": "ref",
92579257+ "ref":
92589258+ "lex:app.bsky.graph.getListsWithMembership#listWithMembership",
92599259+ },
92609260+ },
92619261+ },
92629262+ },
92639263+ },
92649264+ },
92659265+ "listWithMembership": {
92669266+ "description":
92679267+ "A list and an optional list item indicating membership of a target user to that list.",
92689268+ "type": "object",
92699269+ "required": [
92709270+ "list",
92719271+ ],
92729272+ "properties": {
92739273+ "list": {
92749274+ "type": "ref",
92759275+ "ref": "lex:app.bsky.graph.defs#listView",
92769276+ },
92779277+ "listItem": {
92789278+ "type": "ref",
92799279+ "ref": "lex:app.bsky.graph.defs#listItemView",
92809280+ },
92819281+ },
92829282+ },
92839283+ },
92849284+ },
52489285 "AppBskyGraphUnmuteActorList": {
52499286 "lexicon": 1,
52509287 "id": "app.bsky.graph.unmuteActorList",
···56409677 "cursor": {
56419678 "type": "string",
56429679 },
96809680+ "purposes": {
96819681+ "type": "array",
96829682+ "description":
96839683+ "Optional filter by list purpose. If not specified, all supported types are returned.",
96849684+ "items": {
96859685+ "type": "string",
96869686+ "knownValues": [
96879687+ "modlist",
96889688+ "curatelist",
96899689+ ],
96909690+ },
96919691+ },
56439692 },
56449693 },
56459694 "output": {
···598010029 },
598110030 },
598210031 },
1003210032+ "AppBskyGraphVerification": {
1003310033+ "lexicon": 1,
1003410034+ "id": "app.bsky.graph.verification",
1003510035+ "defs": {
1003610036+ "main": {
1003710037+ "type": "record",
1003810038+ "description":
1003910039+ "Record declaring a verification relationship between two accounts. Verifications are only considered valid by an app if issued by an account the app considers trusted.",
1004010040+ "key": "tid",
1004110041+ "record": {
1004210042+ "type": "object",
1004310043+ "required": [
1004410044+ "subject",
1004510045+ "handle",
1004610046+ "displayName",
1004710047+ "createdAt",
1004810048+ ],
1004910049+ "properties": {
1005010050+ "subject": {
1005110051+ "description": "DID of the subject the verification applies to.",
1005210052+ "type": "string",
1005310053+ "format": "did",
1005410054+ },
1005510055+ "handle": {
1005610056+ "description":
1005710057+ "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.",
1005810058+ "type": "string",
1005910059+ "format": "handle",
1006010060+ },
1006110061+ "displayName": {
1006210062+ "description":
1006310063+ "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying.",
1006410064+ "type": "string",
1006510065+ },
1006610066+ "createdAt": {
1006710067+ "description": "Date of when the verification was created.",
1006810068+ "type": "string",
1006910069+ "format": "datetime",
1007010070+ },
1007110071+ },
1007210072+ },
1007310073+ },
1007410074+ },
1007510075+ },
598310076 "AppBskyGraphGetListMutes": {
598410077 "lexicon": 1,
598510078 "id": "app.bsky.graph.getListMutes",
···643010523 "lex:app.bsky.embed.recordWithMedia#view",
643110524 ],
643210525 },
1052610526+ "bookmarkCount": {
1052710527+ "type": "integer",
1052810528+ },
643310529 "replyCount": {
643410530 "type": "integer",
643510531 },
···646110557 "type": "ref",
646210558 "ref": "lex:app.bsky.feed.defs#threadgateView",
646310559 },
1056010560+ "debug": {
1056110561+ "type": "unknown",
1056210562+ "description": "Debug information for internal development",
1056310563+ },
646410564 },
646510565 },
646610566 "viewerState": {
···647510575 "like": {
647610576 "type": "string",
647710577 "format": "at-uri",
1057810578+ },
1057910579+ "bookmarked": {
1058010580+ "type": "boolean",
647810581 },
647910582 "threadMuted": {
648010583 "type": "boolean",
···652810631 "Context provided by feed generator that may be passed back alongside interactions.",
652910632 "maxLength": 2000,
653010633 },
1063410634+ "reqId": {
1063510635+ "type": "string",
1063610636+ "description":
1063710637+ "Unique identifier per request that may be passed back alongside interactions.",
1063810638+ "maxLength": 100,
1063910639+ },
653110640 },
653210641 },
653310642 "replyRef": {
···657110680 "by": {
657210681 "type": "ref",
657310682 "ref": "lex:app.bsky.actor.defs#profileViewBasic",
1068310683+ },
1068410684+ "uri": {
1068510685+ "type": "string",
1068610686+ "format": "at-uri",
1068710687+ },
1068810688+ "cid": {
1068910689+ "type": "string",
1069010690+ "format": "cid",
657410691 },
657510692 "indexedAt": {
657610693 "type": "string",
···685210969 "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.",
685310970 "maxLength": 2000,
685410971 },
1097210972+ "reqId": {
1097310973+ "type": "string",
1097410974+ "description":
1097510975+ "Unique identifier per request that may be passed back alongside interactions.",
1097610976+ "maxLength": 100,
1097710977+ },
685510978 },
685610979 },
685710980 "requestLess": {
···733011453 },
733111454 "hiddenReplies": {
733211455 "type": "array",
73337333- "maxLength": 50,
1145611456+ "maxLength": 300,
733411457 "items": {
733511458 "type": "string",
733611459 "format": "at-uri",
···770111824 "main": {
770211825 "type": "query",
770311826 "description":
77047704- "Find posts matching search criteria, returning views of those posts.",
1182711827+ "Find posts matching search criteria, returning views of those posts. Note that this API endpoint may require authentication (eg, not public) for some service providers and implementations.",
770511828 "parameters": {
770611829 "type": "params",
770711830 "required": [
···803912162 "type": "ref",
804012163 "ref": "lex:app.bsky.feed.defs#skeletonFeedPost",
804112164 },
1216512165+ },
1216612166+ "reqId": {
1216712167+ "type": "string",
1216812168+ "description":
1216912169+ "Unique identifier per request that may be passed back alongside interactions.",
1217012170+ "maxLength": 100,
804212171 },
804312172 },
804412173 },
···845312582 },
845412583 },
845512584 },
1258512585+ "AppBskyAgeassuranceBegin": {
1258612586+ "lexicon": 1,
1258712587+ "id": "app.bsky.ageassurance.begin",
1258812588+ "defs": {
1258912589+ "main": {
1259012590+ "type": "procedure",
1259112591+ "description": "Initiate Age Assurance for an account.",
1259212592+ "input": {
1259312593+ "encoding": "application/json",
1259412594+ "schema": {
1259512595+ "type": "object",
1259612596+ "required": [
1259712597+ "email",
1259812598+ "language",
1259912599+ "countryCode",
1260012600+ ],
1260112601+ "properties": {
1260212602+ "email": {
1260312603+ "type": "string",
1260412604+ "description":
1260512605+ "The user's email address to receive Age Assurance instructions.",
1260612606+ },
1260712607+ "language": {
1260812608+ "type": "string",
1260912609+ "description":
1261012610+ "The user's preferred language for communication during the Age Assurance process.",
1261112611+ },
1261212612+ "countryCode": {
1261312613+ "type": "string",
1261412614+ "description":
1261512615+ "An ISO 3166-1 alpha-2 code of the user's location.",
1261612616+ },
1261712617+ "regionCode": {
1261812618+ "type": "string",
1261912619+ "description":
1262012620+ "An optional ISO 3166-2 code of the user's region or state within the country.",
1262112621+ },
1262212622+ },
1262312623+ },
1262412624+ },
1262512625+ "output": {
1262612626+ "encoding": "application/json",
1262712627+ "schema": {
1262812628+ "type": "ref",
1262912629+ "ref": "lex:app.bsky.ageassurance.defs#state",
1263012630+ },
1263112631+ },
1263212632+ "errors": [
1263312633+ {
1263412634+ "name": "InvalidEmail",
1263512635+ },
1263612636+ {
1263712637+ "name": "DidTooLong",
1263812638+ },
1263912639+ {
1264012640+ "name": "InvalidInitiation",
1264112641+ },
1264212642+ {
1264312643+ "name": "RegionNotSupported",
1264412644+ },
1264512645+ ],
1264612646+ },
1264712647+ },
1264812648+ },
1264912649+ "AppBskyAgeassuranceDefs": {
1265012650+ "lexicon": 1,
1265112651+ "id": "app.bsky.ageassurance.defs",
1265212652+ "defs": {
1265312653+ "access": {
1265412654+ "description":
1265512655+ "The access level granted based on Age Assurance data we've processed.",
1265612656+ "type": "string",
1265712657+ "knownValues": [
1265812658+ "unknown",
1265912659+ "none",
1266012660+ "safe",
1266112661+ "full",
1266212662+ ],
1266312663+ },
1266412664+ "status": {
1266512665+ "type": "string",
1266612666+ "description": "The status of the Age Assurance process.",
1266712667+ "knownValues": [
1266812668+ "unknown",
1266912669+ "pending",
1267012670+ "assured",
1267112671+ "blocked",
1267212672+ ],
1267312673+ },
1267412674+ "state": {
1267512675+ "type": "object",
1267612676+ "description": "The user's computed Age Assurance state.",
1267712677+ "required": [
1267812678+ "status",
1267912679+ "access",
1268012680+ ],
1268112681+ "properties": {
1268212682+ "lastInitiatedAt": {
1268312683+ "type": "string",
1268412684+ "format": "datetime",
1268512685+ "description": "The timestamp when this state was last updated.",
1268612686+ },
1268712687+ "status": {
1268812688+ "type": "ref",
1268912689+ "ref": "lex:app.bsky.ageassurance.defs#status",
1269012690+ },
1269112691+ "access": {
1269212692+ "type": "ref",
1269312693+ "ref": "lex:app.bsky.ageassurance.defs#access",
1269412694+ },
1269512695+ },
1269612696+ },
1269712697+ "stateMetadata": {
1269812698+ "type": "object",
1269912699+ "description":
1270012700+ "Additional metadata needed to compute Age Assurance state client-side.",
1270112701+ "required": [],
1270212702+ "properties": {
1270312703+ "accountCreatedAt": {
1270412704+ "type": "string",
1270512705+ "format": "datetime",
1270612706+ "description": "The account creation timestamp.",
1270712707+ },
1270812708+ },
1270912709+ },
1271012710+ "config": {
1271112711+ "type": "object",
1271212712+ "description": "",
1271312713+ "required": [
1271412714+ "regions",
1271512715+ ],
1271612716+ "properties": {
1271712717+ "regions": {
1271812718+ "type": "array",
1271912719+ "description": "The per-region Age Assurance configuration.",
1272012720+ "items": {
1272112721+ "type": "ref",
1272212722+ "ref": "lex:app.bsky.ageassurance.defs#configRegion",
1272312723+ },
1272412724+ },
1272512725+ },
1272612726+ },
1272712727+ "configRegion": {
1272812728+ "type": "object",
1272912729+ "description": "The Age Assurance configuration for a specific region.",
1273012730+ "required": [
1273112731+ "countryCode",
1273212732+ "rules",
1273312733+ ],
1273412734+ "properties": {
1273512735+ "countryCode": {
1273612736+ "type": "string",
1273712737+ "description":
1273812738+ "The ISO 3166-1 alpha-2 country code this configuration applies to.",
1273912739+ },
1274012740+ "regionCode": {
1274112741+ "type": "string",
1274212742+ "description":
1274312743+ "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country.",
1274412744+ },
1274512745+ "rules": {
1274612746+ "type": "array",
1274712747+ "description":
1274812748+ "The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item.",
1274912749+ "items": {
1275012750+ "type": "union",
1275112751+ "refs": [
1275212752+ "lex:app.bsky.ageassurance.defs#configRegionRuleDefault",
1275312753+ "lex:app.bsky.ageassurance.defs#configRegionRuleIfDeclaredOverAge",
1275412754+ "lex:app.bsky.ageassurance.defs#configRegionRuleIfDeclaredUnderAge",
1275512755+ "lex:app.bsky.ageassurance.defs#configRegionRuleIfAssuredOverAge",
1275612756+ "lex:app.bsky.ageassurance.defs#configRegionRuleIfAssuredUnderAge",
1275712757+ "lex:app.bsky.ageassurance.defs#configRegionRuleIfAccountNewerThan",
1275812758+ "lex:app.bsky.ageassurance.defs#configRegionRuleIfAccountOlderThan",
1275912759+ ],
1276012760+ },
1276112761+ },
1276212762+ },
1276312763+ },
1276412764+ "configRegionRuleDefault": {
1276512765+ "type": "object",
1276612766+ "description": "Age Assurance rule that applies by default.",
1276712767+ "required": [
1276812768+ "access",
1276912769+ ],
1277012770+ "properties": {
1277112771+ "access": {
1277212772+ "type": "ref",
1277312773+ "ref": "lex:app.bsky.ageassurance.defs#access",
1277412774+ },
1277512775+ },
1277612776+ },
1277712777+ "configRegionRuleIfDeclaredOverAge": {
1277812778+ "type": "object",
1277912779+ "description":
1278012780+ "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age.",
1278112781+ "required": [
1278212782+ "age",
1278312783+ "access",
1278412784+ ],
1278512785+ "properties": {
1278612786+ "age": {
1278712787+ "type": "integer",
1278812788+ "description": "The age threshold as a whole integer.",
1278912789+ },
1279012790+ "access": {
1279112791+ "type": "ref",
1279212792+ "ref": "lex:app.bsky.ageassurance.defs#access",
1279312793+ },
1279412794+ },
1279512795+ },
1279612796+ "configRegionRuleIfDeclaredUnderAge": {
1279712797+ "type": "object",
1279812798+ "description":
1279912799+ "Age Assurance rule that applies if the user has declared themselves under a certain age.",
1280012800+ "required": [
1280112801+ "age",
1280212802+ "access",
1280312803+ ],
1280412804+ "properties": {
1280512805+ "age": {
1280612806+ "type": "integer",
1280712807+ "description": "The age threshold as a whole integer.",
1280812808+ },
1280912809+ "access": {
1281012810+ "type": "ref",
1281112811+ "ref": "lex:app.bsky.ageassurance.defs#access",
1281212812+ },
1281312813+ },
1281412814+ },
1281512815+ "configRegionRuleIfAssuredOverAge": {
1281612816+ "type": "object",
1281712817+ "description":
1281812818+ "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age.",
1281912819+ "required": [
1282012820+ "age",
1282112821+ "access",
1282212822+ ],
1282312823+ "properties": {
1282412824+ "age": {
1282512825+ "type": "integer",
1282612826+ "description": "The age threshold as a whole integer.",
1282712827+ },
1282812828+ "access": {
1282912829+ "type": "ref",
1283012830+ "ref": "lex:app.bsky.ageassurance.defs#access",
1283112831+ },
1283212832+ },
1283312833+ },
1283412834+ "configRegionRuleIfAssuredUnderAge": {
1283512835+ "type": "object",
1283612836+ "description":
1283712837+ "Age Assurance rule that applies if the user has been assured to be under a certain age.",
1283812838+ "required": [
1283912839+ "age",
1284012840+ "access",
1284112841+ ],
1284212842+ "properties": {
1284312843+ "age": {
1284412844+ "type": "integer",
1284512845+ "description": "The age threshold as a whole integer.",
1284612846+ },
1284712847+ "access": {
1284812848+ "type": "ref",
1284912849+ "ref": "lex:app.bsky.ageassurance.defs#access",
1285012850+ },
1285112851+ },
1285212852+ },
1285312853+ "configRegionRuleIfAccountNewerThan": {
1285412854+ "type": "object",
1285512855+ "description":
1285612856+ "Age Assurance rule that applies if the account is equal-to or newer than a certain date.",
1285712857+ "required": [
1285812858+ "date",
1285912859+ "access",
1286012860+ ],
1286112861+ "properties": {
1286212862+ "date": {
1286312863+ "type": "string",
1286412864+ "format": "datetime",
1286512865+ "description": "The date threshold as a datetime string.",
1286612866+ },
1286712867+ "access": {
1286812868+ "type": "ref",
1286912869+ "ref": "lex:app.bsky.ageassurance.defs#access",
1287012870+ },
1287112871+ },
1287212872+ },
1287312873+ "configRegionRuleIfAccountOlderThan": {
1287412874+ "type": "object",
1287512875+ "description":
1287612876+ "Age Assurance rule that applies if the account is older than a certain date.",
1287712877+ "required": [
1287812878+ "date",
1287912879+ "access",
1288012880+ ],
1288112881+ "properties": {
1288212882+ "date": {
1288312883+ "type": "string",
1288412884+ "format": "datetime",
1288512885+ "description": "The date threshold as a datetime string.",
1288612886+ },
1288712887+ "access": {
1288812888+ "type": "ref",
1288912889+ "ref": "lex:app.bsky.ageassurance.defs#access",
1289012890+ },
1289112891+ },
1289212892+ },
1289312893+ "event": {
1289412894+ "type": "object",
1289512895+ "description": "Object used to store Age Assurance data in stash.",
1289612896+ "required": [
1289712897+ "createdAt",
1289812898+ "status",
1289912899+ "access",
1290012900+ "attemptId",
1290112901+ "countryCode",
1290212902+ ],
1290312903+ "properties": {
1290412904+ "createdAt": {
1290512905+ "type": "string",
1290612906+ "format": "datetime",
1290712907+ "description": "The date and time of this write operation.",
1290812908+ },
1290912909+ "attemptId": {
1291012910+ "type": "string",
1291112911+ "description":
1291212912+ "The unique identifier for this instance of the Age Assurance flow, in UUID format.",
1291312913+ },
1291412914+ "status": {
1291512915+ "type": "string",
1291612916+ "description": "The status of the Age Assurance process.",
1291712917+ "knownValues": [
1291812918+ "unknown",
1291912919+ "pending",
1292012920+ "assured",
1292112921+ "blocked",
1292212922+ ],
1292312923+ },
1292412924+ "access": {
1292512925+ "description":
1292612926+ "The access level granted based on Age Assurance data we've processed.",
1292712927+ "type": "string",
1292812928+ "knownValues": [
1292912929+ "unknown",
1293012930+ "none",
1293112931+ "safe",
1293212932+ "full",
1293312933+ ],
1293412934+ },
1293512935+ "countryCode": {
1293612936+ "type": "string",
1293712937+ "description":
1293812938+ "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow.",
1293912939+ },
1294012940+ "regionCode": {
1294112941+ "type": "string",
1294212942+ "description":
1294312943+ "The ISO 3166-2 region code provided when beginning the Age Assurance flow.",
1294412944+ },
1294512945+ "email": {
1294612946+ "type": "string",
1294712947+ "description": "The email used for Age Assurance.",
1294812948+ },
1294912949+ "initIp": {
1295012950+ "type": "string",
1295112951+ "description":
1295212952+ "The IP address used when initiating the Age Assurance flow.",
1295312953+ },
1295412954+ "initUa": {
1295512955+ "type": "string",
1295612956+ "description":
1295712957+ "The user agent used when initiating the Age Assurance flow.",
1295812958+ },
1295912959+ "completeIp": {
1296012960+ "type": "string",
1296112961+ "description":
1296212962+ "The IP address used when completing the Age Assurance flow.",
1296312963+ },
1296412964+ "completeUa": {
1296512965+ "type": "string",
1296612966+ "description":
1296712967+ "The user agent used when completing the Age Assurance flow.",
1296812968+ },
1296912969+ },
1297012970+ },
1297112971+ },
1297212972+ },
1297312973+ "AppBskyAgeassuranceGetState": {
1297412974+ "lexicon": 1,
1297512975+ "id": "app.bsky.ageassurance.getState",
1297612976+ "defs": {
1297712977+ "main": {
1297812978+ "type": "query",
1297912979+ "description":
1298012980+ "Returns server-computed Age Assurance state, if available, and any additional metadata needed to compute Age Assurance state client-side.",
1298112981+ "parameters": {
1298212982+ "type": "params",
1298312983+ "required": [
1298412984+ "countryCode",
1298512985+ ],
1298612986+ "properties": {
1298712987+ "countryCode": {
1298812988+ "type": "string",
1298912989+ },
1299012990+ "regionCode": {
1299112991+ "type": "string",
1299212992+ },
1299312993+ },
1299412994+ },
1299512995+ "output": {
1299612996+ "encoding": "application/json",
1299712997+ "schema": {
1299812998+ "type": "object",
1299912999+ "required": [
1300013000+ "state",
1300113001+ "metadata",
1300213002+ ],
1300313003+ "properties": {
1300413004+ "state": {
1300513005+ "type": "ref",
1300613006+ "ref": "lex:app.bsky.ageassurance.defs#state",
1300713007+ },
1300813008+ "metadata": {
1300913009+ "type": "ref",
1301013010+ "ref": "lex:app.bsky.ageassurance.defs#stateMetadata",
1301113011+ },
1301213012+ },
1301313013+ },
1301413014+ },
1301513015+ },
1301613016+ },
1301713017+ },
1301813018+ "AppBskyAgeassuranceGetConfig": {
1301913019+ "lexicon": 1,
1302013020+ "id": "app.bsky.ageassurance.getConfig",
1302113021+ "defs": {
1302213022+ "main": {
1302313023+ "type": "query",
1302413024+ "description":
1302513025+ "Returns Age Assurance configuration for use on the client.",
1302613026+ "output": {
1302713027+ "encoding": "application/json",
1302813028+ "schema": {
1302913029+ "type": "ref",
1303013030+ "ref": "lex:app.bsky.ageassurance.defs#config",
1303113031+ },
1303213032+ },
1303313033+ },
1303413034+ },
1303513035+ },
845613036 "AppBskyActorSearchActorsTypeahead": {
845713037 "lexicon": 1,
845813038 "id": "app.bsky.actor.searchActorsTypeahead",
···852513105 "maxGraphemes": 64,
852613106 "maxLength": 640,
852713107 },
1310813108+ "pronouns": {
1310913109+ "type": "string",
1311013110+ },
852813111 "avatar": {
852913112 "type": "string",
853013113 "format": "uri",
···854813131 "type": "string",
854913132 "format": "datetime",
855013133 },
1313413134+ "verification": {
1313513135+ "type": "ref",
1313613136+ "ref": "lex:app.bsky.actor.defs#verificationState",
1313713137+ },
1313813138+ "status": {
1313913139+ "type": "ref",
1314013140+ "ref": "lex:app.bsky.actor.defs#statusView",
1314113141+ },
1314213142+ "debug": {
1314313143+ "type": "unknown",
1314413144+ "description": "Debug information for internal development",
1314513145+ },
855113146 },
855213147 },
855313148 "profileView": {
···856913164 "type": "string",
857013165 "maxGraphemes": 64,
857113166 "maxLength": 640,
1316713167+ },
1316813168+ "pronouns": {
1316913169+ "type": "string",
857213170 },
857313171 "description": {
857413172 "type": "string",
···860213200 "ref": "lex:com.atproto.label.defs#label",
860313201 },
860413202 },
1320313203+ "verification": {
1320413204+ "type": "ref",
1320513205+ "ref": "lex:app.bsky.actor.defs#verificationState",
1320613206+ },
1320713207+ "status": {
1320813208+ "type": "ref",
1320913209+ "ref": "lex:app.bsky.actor.defs#statusView",
1321013210+ },
1321113211+ "debug": {
1321213212+ "type": "unknown",
1321313213+ "description": "Debug information for internal development",
1321413214+ },
860513215 },
860613216 },
860713217 "profileViewDetailed": {
···862913239 "maxGraphemes": 256,
863013240 "maxLength": 2560,
863113241 },
1324213242+ "pronouns": {
1324313243+ "type": "string",
1324413244+ },
1324513245+ "website": {
1324613246+ "type": "string",
1324713247+ "format": "uri",
1324813248+ },
863213249 "avatar": {
863313250 "type": "string",
863413251 "format": "uri",
···867713294 "type": "ref",
867813295 "ref": "lex:com.atproto.repo.strongRef",
867913296 },
1329713297+ "verification": {
1329813298+ "type": "ref",
1329913299+ "ref": "lex:app.bsky.actor.defs#verificationState",
1330013300+ },
1330113301+ "status": {
1330213302+ "type": "ref",
1330313303+ "ref": "lex:app.bsky.actor.defs#statusView",
1330413304+ },
1330513305+ "debug": {
1330613306+ "type": "unknown",
1330713307+ "description": "Debug information for internal development",
1330813308+ },
868013309 },
868113310 },
868213311 "profileAssociated": {
···869813327 "type": "ref",
869913328 "ref": "lex:app.bsky.actor.defs#profileAssociatedChat",
870013329 },
1333013330+ "activitySubscription": {
1333113331+ "type": "ref",
1333213332+ "ref":
1333313333+ "lex:app.bsky.actor.defs#profileAssociatedActivitySubscription",
1333413334+ },
870113335 },
870213336 },
870313337 "profileAssociatedChat": {
···871213346 "all",
871313347 "none",
871413348 "following",
1334913349+ ],
1335013350+ },
1335113351+ },
1335213352+ },
1335313353+ "profileAssociatedActivitySubscription": {
1335413354+ "type": "object",
1335513355+ "required": [
1335613356+ "allowSubscriptions",
1335713357+ ],
1335813358+ "properties": {
1335913359+ "allowSubscriptions": {
1336013360+ "type": "string",
1336113361+ "knownValues": [
1336213362+ "followers",
1336313363+ "mutuals",
1336413364+ "none",
871513365 ],
871613366 },
871713367 },
···874813398 "format": "at-uri",
874913399 },
875013400 "knownFollowers": {
1340113401+ "description":
1340213402+ "This property is present only in selected cases, as an optimization.",
875113403 "type": "ref",
875213404 "ref": "lex:app.bsky.actor.defs#knownFollowers",
1340513405+ },
1340613406+ "activitySubscription": {
1340713407+ "description":
1340813408+ "This property is present only in selected cases, as an optimization.",
1340913409+ "type": "ref",
1341013410+ "ref": "lex:app.bsky.notification.defs#activitySubscription",
875313411 },
875413412 },
875513413 },
···877513433 },
877613434 },
877713435 },
1343613436+ "verificationState": {
1343713437+ "type": "object",
1343813438+ "description":
1343913439+ "Represents the verification information about the user this object is attached to.",
1344013440+ "required": [
1344113441+ "verifications",
1344213442+ "verifiedStatus",
1344313443+ "trustedVerifierStatus",
1344413444+ ],
1344513445+ "properties": {
1344613446+ "verifications": {
1344713447+ "type": "array",
1344813448+ "description":
1344913449+ "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.",
1345013450+ "items": {
1345113451+ "type": "ref",
1345213452+ "ref": "lex:app.bsky.actor.defs#verificationView",
1345313453+ },
1345413454+ },
1345513455+ "verifiedStatus": {
1345613456+ "type": "string",
1345713457+ "description": "The user's status as a verified account.",
1345813458+ "knownValues": [
1345913459+ "valid",
1346013460+ "invalid",
1346113461+ "none",
1346213462+ ],
1346313463+ },
1346413464+ "trustedVerifierStatus": {
1346513465+ "type": "string",
1346613466+ "description": "The user's status as a trusted verifier.",
1346713467+ "knownValues": [
1346813468+ "valid",
1346913469+ "invalid",
1347013470+ "none",
1347113471+ ],
1347213472+ },
1347313473+ },
1347413474+ },
1347513475+ "verificationView": {
1347613476+ "type": "object",
1347713477+ "description": "An individual verification for an associated subject.",
1347813478+ "required": [
1347913479+ "issuer",
1348013480+ "uri",
1348113481+ "isValid",
1348213482+ "createdAt",
1348313483+ ],
1348413484+ "properties": {
1348513485+ "issuer": {
1348613486+ "type": "string",
1348713487+ "description": "The user who issued this verification.",
1348813488+ "format": "did",
1348913489+ },
1349013490+ "uri": {
1349113491+ "type": "string",
1349213492+ "description": "The AT-URI of the verification record.",
1349313493+ "format": "at-uri",
1349413494+ },
1349513495+ "isValid": {
1349613496+ "type": "boolean",
1349713497+ "description":
1349813498+ "True if the verification passes validation, otherwise false.",
1349913499+ },
1350013500+ "createdAt": {
1350113501+ "type": "string",
1350213502+ "description": "Timestamp when the verification was created.",
1350313503+ "format": "datetime",
1350413504+ },
1350513505+ },
1350613506+ },
877813507 "preferences": {
877913508 "type": "array",
878013509 "items": {
···879313522 "lex:app.bsky.actor.defs#bskyAppStatePref",
879413523 "lex:app.bsky.actor.defs#labelersPref",
879513524 "lex:app.bsky.actor.defs#postInteractionSettingsPref",
1352513525+ "lex:app.bsky.actor.defs#verificationPrefs",
879613526 ],
879713527 },
879813528 },
···917213902 },
917313903 },
917413904 },
1390513905+ "verificationPrefs": {
1390613906+ "type": "object",
1390713907+ "description":
1390813908+ "Preferences for how verified accounts appear in the app.",
1390913909+ "required": [],
1391013910+ "properties": {
1391113911+ "hideBadges": {
1391213912+ "description":
1391313913+ "Hide the blue check badges for verified accounts and trusted verifiers.",
1391413914+ "type": "boolean",
1391513915+ "default": false,
1391613916+ },
1391713917+ },
1391813918+ },
917513919 "postInteractionSettingsPref": {
917613920 "type": "object",
917713921 "description":
···920713951 },
920813952 },
920913953 },
1395413954+ "statusView": {
1395513955+ "type": "object",
1395613956+ "required": [
1395713957+ "status",
1395813958+ "record",
1395913959+ ],
1396013960+ "properties": {
1396113961+ "status": {
1396213962+ "type": "string",
1396313963+ "description": "The status for the account.",
1396413964+ "knownValues": [
1396513965+ "app.bsky.actor.status#live",
1396613966+ ],
1396713967+ },
1396813968+ "record": {
1396913969+ "type": "unknown",
1397013970+ },
1397113971+ "embed": {
1397213972+ "type": "union",
1397313973+ "description": "An optional embed associated with the status.",
1397413974+ "refs": [
1397513975+ "lex:app.bsky.embed.external#view",
1397613976+ ],
1397713977+ },
1397813978+ "expiresAt": {
1397913979+ "type": "string",
1398013980+ "description":
1398113981+ "The date when this status will expire. The application might choose to no longer return the status after expiration.",
1398213982+ "format": "datetime",
1398313983+ },
1398413984+ "isActive": {
1398513985+ "type": "boolean",
1398613986+ "description":
1398713987+ "True if the status is not expired, false if it is expired. Only present if expiration was set.",
1398813988+ },
1398913989+ },
1399013990+ },
921013991 },
921113992 },
921213993 "AppBskyActorPutPreferences": {
···941514196 },
941614197 },
941714198 },
1419914199+ "AppBskyActorStatus": {
1420014200+ "lexicon": 1,
1420114201+ "id": "app.bsky.actor.status",
1420214202+ "defs": {
1420314203+ "main": {
1420414204+ "type": "record",
1420514205+ "description": "A declaration of a Bluesky account status.",
1420614206+ "key": "literal:self",
1420714207+ "record": {
1420814208+ "type": "object",
1420914209+ "required": [
1421014210+ "status",
1421114211+ "createdAt",
1421214212+ ],
1421314213+ "properties": {
1421414214+ "status": {
1421514215+ "type": "string",
1421614216+ "description": "The status for the account.",
1421714217+ "knownValues": [
1421814218+ "app.bsky.actor.status#live",
1421914219+ ],
1422014220+ },
1422114221+ "embed": {
1422214222+ "type": "union",
1422314223+ "description": "An optional embed associated with the status.",
1422414224+ "refs": [
1422514225+ "lex:app.bsky.embed.external",
1422614226+ ],
1422714227+ },
1422814228+ "durationMinutes": {
1422914229+ "type": "integer",
1423014230+ "description":
1423114231+ "The duration of the status in minutes. Applications can choose to impose minimum and maximum limits.",
1423214232+ "minimum": 1,
1423314233+ },
1423414234+ "createdAt": {
1423514235+ "type": "string",
1423614236+ "format": "datetime",
1423714237+ },
1423814238+ },
1423914239+ },
1424014240+ },
1424114241+ "live": {
1424214242+ "type": "token",
1424314243+ "description":
1424414244+ "Advertises an account as currently offering live content.",
1424514245+ },
1424614246+ },
1424714247+ },
941814248 "AppBskyActorGetPreferences": {
941914249 "lexicon": 1,
942014250 "id": "app.bsky.actor.getPreferences",
···946614296 "description": "Free-form profile description text.",
946714297 "maxGraphemes": 256,
946814298 "maxLength": 2560,
1429914299+ },
1430014300+ "pronouns": {
1430114301+ "type": "string",
1430214302+ "description": "Free-form pronouns text.",
1430314303+ "maxGraphemes": 20,
1430414304+ "maxLength": 200,
1430514305+ },
1430614306+ "website": {
1430714307+ "type": "string",
1430814308+ "format": "uri",
946914309 },
947014310 "avatar": {
947114311 "type": "blob",
···996314803 "lex:app.bsky.embed.record#view",
996414804 ],
996514805 },
1480614806+ "reactions": {
1480714807+ "type": "array",
1480814808+ "description":
1480914809+ "Reactions to this message, in ascending order of creation time.",
1481014810+ "items": {
1481114811+ "type": "ref",
1481214812+ "ref": "lex:chat.bsky.convo.defs#reactionView",
1481314813+ },
1481414814+ },
996614815 "sender": {
996714816 "type": "ref",
996814817 "ref": "lex:chat.bsky.convo.defs#messageViewSender",
···1001014859 },
1001114860 },
1001214861 },
1486214862+ "reactionView": {
1486314863+ "type": "object",
1486414864+ "required": [
1486514865+ "value",
1486614866+ "sender",
1486714867+ "createdAt",
1486814868+ ],
1486914869+ "properties": {
1487014870+ "value": {
1487114871+ "type": "string",
1487214872+ },
1487314873+ "sender": {
1487414874+ "type": "ref",
1487514875+ "ref": "lex:chat.bsky.convo.defs#reactionViewSender",
1487614876+ },
1487714877+ "createdAt": {
1487814878+ "type": "string",
1487914879+ "format": "datetime",
1488014880+ },
1488114881+ },
1488214882+ },
1488314883+ "reactionViewSender": {
1488414884+ "type": "object",
1488514885+ "required": [
1488614886+ "did",
1488714887+ ],
1488814888+ "properties": {
1488914889+ "did": {
1489014890+ "type": "string",
1489114891+ "format": "did",
1489214892+ },
1489314893+ },
1489414894+ },
1489514895+ "messageAndReactionView": {
1489614896+ "type": "object",
1489714897+ "required": [
1489814898+ "message",
1489914899+ "reaction",
1490014900+ ],
1490114901+ "properties": {
1490214902+ "message": {
1490314903+ "type": "ref",
1490414904+ "ref": "lex:chat.bsky.convo.defs#messageView",
1490514905+ },
1490614906+ "reaction": {
1490714907+ "type": "ref",
1490814908+ "ref": "lex:chat.bsky.convo.defs#reactionView",
1490914909+ },
1491014910+ },
1491114911+ },
1001314912 "convoView": {
1001414913 "type": "object",
1001514914 "required": [
···1003814937 "refs": [
1003914938 "lex:chat.bsky.convo.defs#messageView",
1004014939 "lex:chat.bsky.convo.defs#deletedMessageView",
1494014940+ ],
1494114941+ },
1494214942+ "lastReaction": {
1494314943+ "type": "union",
1494414944+ "refs": [
1494514945+ "lex:chat.bsky.convo.defs#messageAndReactionView",
1004114946 ],
1004214947 },
1004314948 "muted": {
···1019915104 },
1020015105 },
1020115106 },
1510715107+ "logAddReaction": {
1510815108+ "type": "object",
1510915109+ "required": [
1511015110+ "rev",
1511115111+ "convoId",
1511215112+ "message",
1511315113+ "reaction",
1511415114+ ],
1511515115+ "properties": {
1511615116+ "rev": {
1511715117+ "type": "string",
1511815118+ },
1511915119+ "convoId": {
1512015120+ "type": "string",
1512115121+ },
1512215122+ "message": {
1512315123+ "type": "union",
1512415124+ "refs": [
1512515125+ "lex:chat.bsky.convo.defs#messageView",
1512615126+ "lex:chat.bsky.convo.defs#deletedMessageView",
1512715127+ ],
1512815128+ },
1512915129+ "reaction": {
1513015130+ "type": "ref",
1513115131+ "ref": "lex:chat.bsky.convo.defs#reactionView",
1513215132+ },
1513315133+ },
1513415134+ },
1513515135+ "logRemoveReaction": {
1513615136+ "type": "object",
1513715137+ "required": [
1513815138+ "rev",
1513915139+ "convoId",
1514015140+ "message",
1514115141+ "reaction",
1514215142+ ],
1514315143+ "properties": {
1514415144+ "rev": {
1514515145+ "type": "string",
1514615146+ },
1514715147+ "convoId": {
1514815148+ "type": "string",
1514915149+ },
1515015150+ "message": {
1515115151+ "type": "union",
1515215152+ "refs": [
1515315153+ "lex:chat.bsky.convo.defs#messageView",
1515415154+ "lex:chat.bsky.convo.defs#deletedMessageView",
1515515155+ ],
1515615156+ },
1515715157+ "reaction": {
1515815158+ "type": "ref",
1515915159+ "ref": "lex:chat.bsky.convo.defs#reactionView",
1516015160+ },
1516115161+ },
1516215162+ },
1020215163 },
1020315164 },
1020415165 "ChatBskyConvoGetConvoAvailability": {
···1028115242 "lex:chat.bsky.convo.defs#logBeginConvo",
1028215243 "lex:chat.bsky.convo.defs#logAcceptConvo",
1028315244 "lex:chat.bsky.convo.defs#logLeaveConvo",
1524515245+ "lex:chat.bsky.convo.defs#logMuteConvo",
1524615246+ "lex:chat.bsky.convo.defs#logUnmuteConvo",
1028415247 "lex:chat.bsky.convo.defs#logCreateMessage",
1028515248 "lex:chat.bsky.convo.defs#logDeleteMessage",
1524915249+ "lex:chat.bsky.convo.defs#logReadMessage",
1525015250+ "lex:chat.bsky.convo.defs#logAddReaction",
1525115251+ "lex:chat.bsky.convo.defs#logRemoveReaction",
1028615252 ],
1028715253 },
1028815254 },
···1036515331 },
1036615332 },
1036715333 },
1533415334+ },
1533515335+ },
1533615336+ },
1533715337+ "ChatBskyConvoAddReaction": {
1533815338+ "lexicon": 1,
1533915339+ "id": "chat.bsky.convo.addReaction",
1534015340+ "defs": {
1534115341+ "main": {
1534215342+ "type": "procedure",
1534315343+ "description":
1534415344+ "Adds an emoji reaction to a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in a single reaction.",
1534515345+ "input": {
1534615346+ "encoding": "application/json",
1534715347+ "schema": {
1534815348+ "type": "object",
1534915349+ "required": [
1535015350+ "convoId",
1535115351+ "messageId",
1535215352+ "value",
1535315353+ ],
1535415354+ "properties": {
1535515355+ "convoId": {
1535615356+ "type": "string",
1535715357+ },
1535815358+ "messageId": {
1535915359+ "type": "string",
1536015360+ },
1536115361+ "value": {
1536215362+ "type": "string",
1536315363+ "minLength": 1,
1536415364+ "maxLength": 64,
1536515365+ "minGraphemes": 1,
1536615366+ "maxGraphemes": 1,
1536715367+ },
1536815368+ },
1536915369+ },
1537015370+ },
1537115371+ "output": {
1537215372+ "encoding": "application/json",
1537315373+ "schema": {
1537415374+ "type": "object",
1537515375+ "required": [
1537615376+ "message",
1537715377+ ],
1537815378+ "properties": {
1537915379+ "message": {
1538015380+ "type": "ref",
1538115381+ "ref": "lex:chat.bsky.convo.defs#messageView",
1538215382+ },
1538315383+ },
1538415384+ },
1538515385+ },
1538615386+ "errors": [
1538715387+ {
1538815388+ "name": "ReactionMessageDeleted",
1538915389+ "description":
1539015390+ "Indicates that the message has been deleted and reactions can no longer be added/removed.",
1539115391+ },
1539215392+ {
1539315393+ "name": "ReactionLimitReached",
1539415394+ "description":
1539515395+ "Indicates that the message has the maximum number of reactions allowed for a single user, and the requested reaction wasn't yet present. If it was already present, the request will not fail since it is idempotent.",
1539615396+ },
1539715397+ {
1539815398+ "name": "ReactionInvalidValue",
1539915399+ "description":
1540015400+ "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji.",
1540115401+ },
1540215402+ ],
1036815403 },
1036915404 },
1037015405 },
···1047615511 },
1047715512 },
1047815513 },
1551415514+ "ChatBskyConvoRemoveReaction": {
1551515515+ "lexicon": 1,
1551615516+ "id": "chat.bsky.convo.removeReaction",
1551715517+ "defs": {
1551815518+ "main": {
1551915519+ "type": "procedure",
1552015520+ "description":
1552115521+ "Removes an emoji reaction from a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in that reaction not being present, even if it already wasn't.",
1552215522+ "input": {
1552315523+ "encoding": "application/json",
1552415524+ "schema": {
1552515525+ "type": "object",
1552615526+ "required": [
1552715527+ "convoId",
1552815528+ "messageId",
1552915529+ "value",
1553015530+ ],
1553115531+ "properties": {
1553215532+ "convoId": {
1553315533+ "type": "string",
1553415534+ },
1553515535+ "messageId": {
1553615536+ "type": "string",
1553715537+ },
1553815538+ "value": {
1553915539+ "type": "string",
1554015540+ "minLength": 1,
1554115541+ "maxLength": 64,
1554215542+ "minGraphemes": 1,
1554315543+ "maxGraphemes": 1,
1554415544+ },
1554515545+ },
1554615546+ },
1554715547+ },
1554815548+ "output": {
1554915549+ "encoding": "application/json",
1555015550+ "schema": {
1555115551+ "type": "object",
1555215552+ "required": [
1555315553+ "message",
1555415554+ ],
1555515555+ "properties": {
1555615556+ "message": {
1555715557+ "type": "ref",
1555815558+ "ref": "lex:chat.bsky.convo.defs#messageView",
1555915559+ },
1556015560+ },
1556115561+ },
1556215562+ },
1556315563+ "errors": [
1556415564+ {
1556515565+ "name": "ReactionMessageDeleted",
1556615566+ "description":
1556715567+ "Indicates that the message has been deleted and reactions can no longer be added/removed.",
1556815568+ },
1556915569+ {
1557015570+ "name": "ReactionInvalidValue",
1557115571+ "description":
1557215572+ "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji.",
1557315573+ },
1557415574+ ],
1557515575+ },
1557615576+ },
1557715577+ },
1047915578 "ChatBskyConvoUpdateRead": {
1048015579 "lexicon": 1,
1048115580 "id": "chat.bsky.convo.updateRead",
···1079315892 "chatDisabled": {
1079415893 "type": "boolean",
1079515894 "description":
1079610796- "Set to true when the actor cannot actively participate in converations",
1589515895+ "Set to true when the actor cannot actively participate in conversations",
1589615896+ },
1589715897+ "verification": {
1589815898+ "type": "ref",
1589915899+ "ref": "lex:app.bsky.actor.defs#verificationState",
1079715900 },
1079815901 },
1079915902 },
···1602621129 },
1602721130 },
1602821131 },
2113221132+ "ComAtprotoTempDereferenceScope": {
2113321133+ "lexicon": 1,
2113421134+ "id": "com.atproto.temp.dereferenceScope",
2113521135+ "defs": {
2113621136+ "main": {
2113721137+ "type": "query",
2113821138+ "description":
2113921139+ "Allows finding the oauth permission scope from a reference",
2114021140+ "parameters": {
2114121141+ "type": "params",
2114221142+ "required": [
2114321143+ "scope",
2114421144+ ],
2114521145+ "properties": {
2114621146+ "scope": {
2114721147+ "type": "string",
2114821148+ "description": "The scope reference (starts with 'ref:')",
2114921149+ },
2115021150+ },
2115121151+ },
2115221152+ "output": {
2115321153+ "encoding": "application/json",
2115421154+ "schema": {
2115521155+ "type": "object",
2115621156+ "required": [
2115721157+ "scope",
2115821158+ ],
2115921159+ "properties": {
2116021160+ "scope": {
2116121161+ "type": "string",
2116221162+ "description": "The full oauth permission scope",
2116321163+ },
2116421164+ },
2116521165+ },
2116621166+ },
2116721167+ "errors": [
2116821168+ {
2116921169+ "name": "InvalidScopeReference",
2117021170+ "description": "An invalid scope reference was provided.",
2117121171+ },
2117221172+ ],
2117321173+ },
2117421174+ },
2117521175+ },
1602921176 "ComAtprotoTempAddReservedHandle": {
1603021177 "lexicon": 1,
1603121178 "id": "com.atproto.temp.addReservedHandle",
···1608721234 },
1608821235 },
1608921236 },
2123721237+ "ComAtprotoTempCheckHandleAvailability": {
2123821238+ "lexicon": 1,
2123921239+ "id": "com.atproto.temp.checkHandleAvailability",
2124021240+ "defs": {
2124121241+ "main": {
2124221242+ "type": "query",
2124321243+ "description":
2124421244+ "Checks whether the provided handle is available. If the handle is not available, available suggestions will be returned. Optional inputs will be used to generate suggestions.",
2124521245+ "parameters": {
2124621246+ "type": "params",
2124721247+ "required": [
2124821248+ "handle",
2124921249+ ],
2125021250+ "properties": {
2125121251+ "handle": {
2125221252+ "type": "string",
2125321253+ "format": "handle",
2125421254+ "description":
2125521255+ "Tentative handle. Will be checked for availability or used to build handle suggestions.",
2125621256+ },
2125721257+ "email": {
2125821258+ "type": "string",
2125921259+ "description":
2126021260+ "User-provided email. Might be used to build handle suggestions.",
2126121261+ },
2126221262+ "birthDate": {
2126321263+ "type": "string",
2126421264+ "format": "datetime",
2126521265+ "description":
2126621266+ "User-provided birth date. Might be used to build handle suggestions.",
2126721267+ },
2126821268+ },
2126921269+ },
2127021270+ "output": {
2127121271+ "encoding": "application/json",
2127221272+ "schema": {
2127321273+ "type": "object",
2127421274+ "required": [
2127521275+ "handle",
2127621276+ "result",
2127721277+ ],
2127821278+ "properties": {
2127921279+ "handle": {
2128021280+ "type": "string",
2128121281+ "format": "handle",
2128221282+ "description": "Echo of the input handle.",
2128321283+ },
2128421284+ "result": {
2128521285+ "type": "union",
2128621286+ "refs": [
2128721287+ "lex:com.atproto.temp.checkHandleAvailability#resultAvailable",
2128821288+ "lex:com.atproto.temp.checkHandleAvailability#resultUnavailable",
2128921289+ ],
2129021290+ },
2129121291+ },
2129221292+ },
2129321293+ },
2129421294+ "errors": [
2129521295+ {
2129621296+ "name": "InvalidEmail",
2129721297+ "description": "An invalid email was provided.",
2129821298+ },
2129921299+ ],
2130021300+ },
2130121301+ "resultAvailable": {
2130221302+ "type": "object",
2130321303+ "description": "Indicates the provided handle is available.",
2130421304+ "properties": {},
2130521305+ },
2130621306+ "resultUnavailable": {
2130721307+ "type": "object",
2130821308+ "description":
2130921309+ "Indicates the provided handle is unavailable and gives suggestions of available handles.",
2131021310+ "required": [
2131121311+ "suggestions",
2131221312+ ],
2131321313+ "properties": {
2131421314+ "suggestions": {
2131521315+ "type": "array",
2131621316+ "description":
2131721317+ "List of suggested handles based on the provided inputs.",
2131821318+ "items": {
2131921319+ "type": "ref",
2132021320+ "ref": "lex:com.atproto.temp.checkHandleAvailability#suggestion",
2132121321+ },
2132221322+ },
2132321323+ },
2132421324+ },
2132521325+ "suggestion": {
2132621326+ "type": "object",
2132721327+ "required": [
2132821328+ "handle",
2132921329+ "method",
2133021330+ ],
2133121331+ "properties": {
2133221332+ "handle": {
2133321333+ "type": "string",
2133421334+ "format": "handle",
2133521335+ },
2133621336+ "method": {
2133721337+ "type": "string",
2133821338+ "description":
2133921339+ "Method used to build this suggestion. Should be considered opaque to clients. Can be used for metrics.",
2134021340+ },
2134121341+ },
2134221342+ },
2134321343+ },
2134421344+ },
1609021345 "ComAtprotoTempRequestPhoneVerification": {
1609121346 "lexicon": 1,
1609221347 "id": "com.atproto.temp.requestPhoneVerification",
···1610521360 "properties": {
1610621361 "phoneNumber": {
1610721362 "type": "string",
2136321363+ },
2136421364+ },
2136521365+ },
2136621366+ },
2136721367+ },
2136821368+ },
2136921369+ },
2137021370+ "ComAtprotoTempRevokeAccountCredentials": {
2137121371+ "lexicon": 1,
2137221372+ "id": "com.atproto.temp.revokeAccountCredentials",
2137321373+ "defs": {
2137421374+ "main": {
2137521375+ "type": "procedure",
2137621376+ "description":
2137721377+ "Revoke sessions, password, and app passwords associated with account. May be resolved by a password reset.",
2137821378+ "input": {
2137921379+ "encoding": "application/json",
2138021380+ "schema": {
2138121381+ "type": "object",
2138221382+ "required": [
2138321383+ "account",
2138421384+ ],
2138521385+ "properties": {
2138621386+ "account": {
2138721387+ "type": "string",
2138821388+ "format": "at-identifier",
1610821389 },
1610921390 },
1611021391 },
···1618221463 },
1618321464 },
1618421465 },
2146621466+ "ComAtprotoIdentityDefs": {
2146721467+ "lexicon": 1,
2146821468+ "id": "com.atproto.identity.defs",
2146921469+ "defs": {
2147021470+ "identityInfo": {
2147121471+ "type": "object",
2147221472+ "required": [
2147321473+ "did",
2147421474+ "handle",
2147521475+ "didDoc",
2147621476+ ],
2147721477+ "properties": {
2147821478+ "did": {
2147921479+ "type": "string",
2148021480+ "format": "did",
2148121481+ },
2148221482+ "handle": {
2148321483+ "type": "string",
2148421484+ "format": "handle",
2148521485+ "description":
2148621486+ "The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.",
2148721487+ },
2148821488+ "didDoc": {
2148921489+ "type": "unknown",
2149021490+ "description": "The complete DID document for the identity.",
2149121491+ },
2149221492+ },
2149321493+ },
2149421494+ },
2149521495+ },
1618521496 "ComAtprotoIdentitySignPlcOperation": {
1618621497 "lexicon": 1,
1618721498 "id": "com.atproto.identity.signPlcOperation",
···1626421575 },
1626521576 },
1626621577 },
2157821578+ "ComAtprotoIdentityResolveIdentity": {
2157921579+ "lexicon": 1,
2158021580+ "id": "com.atproto.identity.resolveIdentity",
2158121581+ "defs": {
2158221582+ "main": {
2158321583+ "type": "query",
2158421584+ "description":
2158521585+ "Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).",
2158621586+ "parameters": {
2158721587+ "type": "params",
2158821588+ "required": [
2158921589+ "identifier",
2159021590+ ],
2159121591+ "properties": {
2159221592+ "identifier": {
2159321593+ "type": "string",
2159421594+ "format": "at-identifier",
2159521595+ "description": "Handle or DID to resolve.",
2159621596+ },
2159721597+ },
2159821598+ },
2159921599+ "output": {
2160021600+ "encoding": "application/json",
2160121601+ "schema": {
2160221602+ "type": "ref",
2160321603+ "ref": "lex:com.atproto.identity.defs#identityInfo",
2160421604+ },
2160521605+ },
2160621606+ "errors": [
2160721607+ {
2160821608+ "name": "HandleNotFound",
2160921609+ "description":
2161021610+ "The resolution process confirmed that the handle does not resolve to any DID.",
2161121611+ },
2161221612+ {
2161321613+ "name": "DidNotFound",
2161421614+ "description":
2161521615+ "The DID resolution process confirmed that there is no current DID.",
2161621616+ },
2161721617+ {
2161821618+ "name": "DidDeactivated",
2161921619+ "description":
2162021620+ "The DID previously existed, but has been deactivated.",
2162121621+ },
2162221622+ ],
2162321623+ },
2162421624+ },
2162521625+ },
2162621626+ "ComAtprotoIdentityRefreshIdentity": {
2162721627+ "lexicon": 1,
2162821628+ "id": "com.atproto.identity.refreshIdentity",
2162921629+ "defs": {
2163021630+ "main": {
2163121631+ "type": "procedure",
2163221632+ "description":
2163321633+ "Request that the server re-resolve an identity (DID and handle). The server may ignore this request, or require authentication, depending on the role, implementation, and policy of the server.",
2163421634+ "input": {
2163521635+ "encoding": "application/json",
2163621636+ "schema": {
2163721637+ "type": "object",
2163821638+ "required": [
2163921639+ "identifier",
2164021640+ ],
2164121641+ "properties": {
2164221642+ "identifier": {
2164321643+ "type": "string",
2164421644+ "format": "at-identifier",
2164521645+ },
2164621646+ },
2164721647+ },
2164821648+ },
2164921649+ "output": {
2165021650+ "encoding": "application/json",
2165121651+ "schema": {
2165221652+ "type": "ref",
2165321653+ "ref": "lex:com.atproto.identity.defs#identityInfo",
2165421654+ },
2165521655+ },
2165621656+ "errors": [
2165721657+ {
2165821658+ "name": "HandleNotFound",
2165921659+ "description":
2166021660+ "The resolution process confirmed that the handle does not resolve to any DID.",
2166121661+ },
2166221662+ {
2166321663+ "name": "DidNotFound",
2166421664+ "description":
2166521665+ "The DID resolution process confirmed that there is no current DID.",
2166621666+ },
2166721667+ {
2166821668+ "name": "DidDeactivated",
2166921669+ "description":
2167021670+ "The DID previously existed, but has been deactivated.",
2167121671+ },
2167221672+ ],
2167321673+ },
2167421674+ },
2167521675+ },
1626721676 "ComAtprotoIdentityResolveHandle": {
1626821677 "lexicon": 1,
1626921678 "id": "com.atproto.identity.resolveHandle",
1627021679 "defs": {
1627121680 "main": {
1627221681 "type": "query",
1627316273- "description": "Resolves a handle (domain name) to a DID.",
2168221682+ "description":
2168321683+ "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.",
1627421684 "parameters": {
1627521685 "type": "params",
1627621686 "required": [
···1629921709 },
1630021710 },
1630121711 },
2171221712+ "errors": [
2171321713+ {
2171421714+ "name": "HandleNotFound",
2171521715+ "description":
2171621716+ "The resolution process confirmed that the handle does not resolve to any DID.",
2171721717+ },
2171821718+ ],
1630221719 },
1630321720 },
1630421721 },
···1634921766 },
1635021767 },
1635121768 },
2176921769+ },
2177021770+ },
2177121771+ },
2177221772+ "ComAtprotoIdentityResolveDid": {
2177321773+ "lexicon": 1,
2177421774+ "id": "com.atproto.identity.resolveDid",
2177521775+ "defs": {
2177621776+ "main": {
2177721777+ "type": "query",
2177821778+ "description":
2177921779+ "Resolves DID to DID document. Does not bi-directionally verify handle.",
2178021780+ "parameters": {
2178121781+ "type": "params",
2178221782+ "required": [
2178321783+ "did",
2178421784+ ],
2178521785+ "properties": {
2178621786+ "did": {
2178721787+ "type": "string",
2178821788+ "format": "did",
2178921789+ "description": "DID to resolve.",
2179021790+ },
2179121791+ },
2179221792+ },
2179321793+ "output": {
2179421794+ "encoding": "application/json",
2179521795+ "schema": {
2179621796+ "type": "object",
2179721797+ "required": [
2179821798+ "didDoc",
2179921799+ ],
2180021800+ "properties": {
2180121801+ "didDoc": {
2180221802+ "type": "unknown",
2180321803+ "description": "The complete DID document for the identity.",
2180421804+ },
2180521805+ },
2180621806+ },
2180721807+ },
2180821808+ "errors": [
2180921809+ {
2181021810+ "name": "DidNotFound",
2181121811+ "description":
2181221812+ "The DID resolution process confirmed that there is no current DID.",
2181321813+ },
2181421814+ {
2181521815+ "name": "DidDeactivated",
2181621816+ "description":
2181721817+ "The DID previously existed, but has been deactivated.",
2181821818+ },
2181921819+ ],
1635221820 },
1635321821 },
1635421822 },
···1675122219 "type": "ref",
1675222220 "ref": "lex:com.atproto.server.defs#inviteCode",
1675322221 },
2222222222+ },
2222322223+ },
2222422224+ },
2222522225+ },
2222622226+ },
2222722227+ },
2222822228+ },
2222922229+ "ComAtprotoAdminUpdateAccountSigningKey": {
2223022230+ "lexicon": 1,
2223122231+ "id": "com.atproto.admin.updateAccountSigningKey",
2223222232+ "defs": {
2223322233+ "main": {
2223422234+ "type": "procedure",
2223522235+ "description":
2223622236+ "Administrative action to update an account's signing key in their Did document.",
2223722237+ "input": {
2223822238+ "encoding": "application/json",
2223922239+ "schema": {
2224022240+ "type": "object",
2224122241+ "required": [
2224222242+ "did",
2224322243+ "signingKey",
2224422244+ ],
2224522245+ "properties": {
2224622246+ "did": {
2224722247+ "type": "string",
2224822248+ "format": "did",
2224922249+ },
2225022250+ "signingKey": {
2225122251+ "type": "string",
2225222252+ "format": "did",
2225322253+ "description": "Did-key formatted public key",
1675422254 },
1675522255 },
1675622256 },
···1859124091 },
1859224092 },
1859324093 },
2409424094+ "ComAtprotoLexiconResolveLexicon": {
2409524095+ "lexicon": 1,
2409624096+ "id": "com.atproto.lexicon.resolveLexicon",
2409724097+ "defs": {
2409824098+ "main": {
2409924099+ "type": "query",
2410024100+ "description": "Resolves an atproto lexicon (NSID) to a schema.",
2410124101+ "parameters": {
2410224102+ "type": "params",
2410324103+ "properties": {
2410424104+ "nsid": {
2410524105+ "format": "nsid",
2410624106+ "type": "string",
2410724107+ "description": "The lexicon NSID to resolve.",
2410824108+ },
2410924109+ },
2411024110+ "required": [
2411124111+ "nsid",
2411224112+ ],
2411324113+ },
2411424114+ "output": {
2411524115+ "encoding": "application/json",
2411624116+ "schema": {
2411724117+ "type": "object",
2411824118+ "properties": {
2411924119+ "cid": {
2412024120+ "type": "string",
2412124121+ "format": "cid",
2412224122+ "description": "The CID of the lexicon schema record.",
2412324123+ },
2412424124+ "schema": {
2412524125+ "type": "ref",
2412624126+ "ref": "lex:com.atproto.lexicon.schema#main",
2412724127+ "description": "The resolved lexicon schema record.",
2412824128+ },
2412924129+ "uri": {
2413024130+ "type": "string",
2413124131+ "format": "at-uri",
2413224132+ "description": "The AT-URI of the lexicon schema record.",
2413324133+ },
2413424134+ },
2413524135+ "required": [
2413624136+ "uri",
2413724137+ "cid",
2413824138+ "schema",
2413924139+ ],
2414024140+ },
2414124141+ },
2414224142+ "errors": [
2414324143+ {
2414424144+ "description": "No lexicon was resolved for the NSID.",
2414524145+ "name": "LexiconNotFound",
2414624146+ },
2414724147+ ],
2414824148+ },
2414924149+ },
2415024150+ },
1859424151 "ComAtprotoLexiconSchema": {
1859524152 "lexicon": 1,
1859624153 "id": "com.atproto.lexicon.schema",
···1873124288 },
1873224289 "since": {
1873324290 "type": "string",
2429124291+ "format": "tid",
1873424292 "description":
1873524293 "The revision ('rev') of the repo to create a diff from.",
1873624294 },
···1876324321 "main": {
1876424322 "type": "procedure",
1876524323 "description":
1876618766- "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay.",
2432424324+ "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay. DEPRECATED: just use com.atproto.sync.requestCrawl",
1876724325 "input": {
1876824326 "encoding": "application/json",
1876924327 "schema": {
···1878324341 },
1878424342 },
1878524343 },
2434424344+ "ComAtprotoSyncDefs": {
2434524345+ "lexicon": 1,
2434624346+ "id": "com.atproto.sync.defs",
2434724347+ "defs": {
2434824348+ "hostStatus": {
2434924349+ "type": "string",
2435024350+ "knownValues": [
2435124351+ "active",
2435224352+ "idle",
2435324353+ "offline",
2435424354+ "throttled",
2435524355+ "banned",
2435624356+ ],
2435724357+ },
2435824358+ },
2435924359+ },
1878624360 "ComAtprotoSyncRequestCrawl": {
1878724361 "lexicon": 1,
1878824362 "id": "com.atproto.sync.requestCrawl",
···1880724381 },
1880824382 },
1880924383 },
2438424384+ "errors": [
2438524385+ {
2438624386+ "name": "HostBanned",
2438724387+ },
2438824388+ ],
1881024389 },
1881124390 },
1881224391 },
···1883124410 },
1883224411 "since": {
1883324412 "type": "string",
2441324413+ "format": "tid",
1883424414 "description":
1883524415 "Optional revision of the repo to list blobs since.",
1883624416 },
···1891924499 },
1892024500 "rev": {
1892124501 "type": "string",
2450224502+ "format": "tid",
1892224503 },
1892324504 },
1892424505 },
···1896324544 "type": "union",
1896424545 "refs": [
1896524546 "lex:com.atproto.sync.subscribeRepos#commit",
2454724547+ "lex:com.atproto.sync.subscribeRepos#sync",
1896624548 "lex:com.atproto.sync.subscribeRepos#identity",
1896724549 "lex:com.atproto.sync.subscribeRepos#account",
1896818968- "lex:com.atproto.sync.subscribeRepos#handle",
1896918969- "lex:com.atproto.sync.subscribeRepos#migrate",
1897018970- "lex:com.atproto.sync.subscribeRepos#tombstone",
1897124550 "lex:com.atproto.sync.subscribeRepos#info",
1897224551 ],
1897324552 },
···1900124580 "time",
1900224581 ],
1900324582 "nullable": [
1900419004- "prev",
1900524583 "since",
1900624584 ],
1900724585 "properties": {
···1901624594 "tooBig": {
1901724595 "type": "boolean",
1901824596 "description":
1901919019- "Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data.",
2459724597+ "DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data.",
1902024598 },
1902124599 "repo": {
1902224600 "type": "string",
1902324601 "format": "did",
1902419024- "description": "The repo this event comes from.",
2460224602+ "description":
2460324603+ "The repo this event comes from. Note that all other message types name this field 'did'.",
1902524604 },
1902624605 "commit": {
1902724606 "type": "cid-link",
1902824607 "description": "Repo commit object CID.",
1902924608 },
1903019030- "prev": {
1903119031- "type": "cid-link",
1903219032- "description":
1903319033- "DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability.",
1903419034- },
1903524609 "rev": {
1903624610 "type": "string",
2461124611+ "format": "tid",
1903724612 "description":
1903824613 "The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event.",
1903924614 },
1904024615 "since": {
1904124616 "type": "string",
2461724617+ "format": "tid",
1904224618 "description":
1904324619 "The rev of the last emitted commit from this repo (if any).",
1904424620 },
1904524621 "blocks": {
1904624622 "type": "bytes",
1904724623 "description":
1904819048- "CAR file containing relevant blocks, as a diff since the previous repo state.",
1904919049- "maxLength": 1000000,
2462424624+ "CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.",
2462524625+ "maxLength": 2000000,
1905024626 },
1905124627 "ops": {
1905224628 "type": "array",
···1906324639 "items": {
1906424640 "type": "cid-link",
1906524641 "description":
1906619066- "List of new blobs (by CID) referenced by records in this commit.",
2464224642+ "DEPRECATED -- will soon always be empty. List of new blobs (by CID) referenced by records in this commit.",
1906724643 },
1906824644 },
2464524645+ "prevData": {
2464624646+ "type": "cid-link",
2464724647+ "description":
2464824648+ "The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose.",
2464924649+ },
1906924650 "time": {
1907024651 "type": "string",
1907124652 "format": "datetime",
···1907424655 },
1907524656 },
1907624657 },
1907719077- "identity": {
2465824658+ "sync": {
1907824659 "type": "object",
1907924660 "description":
1908019080- "Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache.",
2466124661+ "Updates the repo to a new state, without necessarily including that state on the firehose. Used to recover from broken commit streams, data loss incidents, or in situations where upstream host does not know recent state of the repository.",
1908124662 "required": [
1908224663 "seq",
1908324664 "did",
2466524665+ "blocks",
2466624666+ "rev",
1908424667 "time",
1908524668 ],
1908624669 "properties": {
1908724670 "seq": {
1908824671 "type": "integer",
2467224672+ "description": "The stream sequence number of this message.",
1908924673 },
1909024674 "did": {
1909124675 "type": "string",
1909224676 "format": "did",
2467724677+ "description":
2467824678+ "The account this repo event corresponds to. Must match that in the commit object.",
2467924679+ },
2468024680+ "blocks": {
2468124681+ "type": "bytes",
2468224682+ "description":
2468324683+ "CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.",
2468424684+ "maxLength": 10000,
2468524685+ },
2468624686+ "rev": {
2468724687+ "type": "string",
2468824688+ "description":
2468924689+ "The rev of the commit. This value must match that in the commit object.",
1909324690 },
1909424691 "time": {
1909524692 "type": "string",
1909624693 "format": "datetime",
1909719097- },
1909819098- "handle": {
1909919099- "type": "string",
1910019100- "format": "handle",
1910124694 "description":
1910219102- "The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.",
2469524695+ "Timestamp of when this message was originally broadcast.",
1910324696 },
1910424697 },
1910524698 },
1910619106- "account": {
2469924699+ "identity": {
1910724700 "type": "object",
1910824701 "description":
1910919109- "Represents a change to an account's status on a host (eg, PDS or Relay). The semantics of this event are that the status is at the host which emitted the event, not necessarily that at the currently active PDS. Eg, a Relay takedown would emit a takedown with active=false, even if the PDS is still active.",
2470224702+ "Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache.",
1911024703 "required": [
1911124704 "seq",
1911224705 "did",
1911324706 "time",
1911419114- "active",
1911524707 ],
1911624708 "properties": {
1911724709 "seq": {
···1912524717 "type": "string",
1912624718 "format": "datetime",
1912724719 },
1912819128- "active": {
1912919129- "type": "boolean",
1913019130- "description":
1913119131- "Indicates that the account has a repository which can be fetched from the host that emitted this event.",
1913219132- },
1913319133- "status": {
1913419134- "type": "string",
1913519135- "description":
1913619136- "If active=false, this optional field indicates a reason for why the account is not active.",
1913719137- "knownValues": [
1913819138- "takendown",
1913919139- "suspended",
1914019140- "deleted",
1914119141- "deactivated",
1914219142- ],
1914319143- },
1914419144- },
1914519145- },
1914619146- "handle": {
1914719147- "type": "object",
1914819148- "description": "DEPRECATED -- Use #identity event instead",
1914919149- "required": [
1915019150- "seq",
1915119151- "did",
1915219152- "handle",
1915319153- "time",
1915419154- ],
1915519155- "properties": {
1915619156- "seq": {
1915719157- "type": "integer",
1915819158- },
1915919159- "did": {
1916019160- "type": "string",
1916119161- "format": "did",
1916219162- },
1916324720 "handle": {
1916424721 "type": "string",
1916524722 "format": "handle",
1916619166- },
1916719167- "time": {
1916819168- "type": "string",
1916919169- "format": "datetime",
2472324723+ "description":
2472424724+ "The current handle for the account, or 'handle.invalid' if validation fails. This field is optional, might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs Relay may evolve in the future; see atproto specs for more details.",
1917024725 },
1917124726 },
1917224727 },
1917319173- "migrate": {
2472824728+ "account": {
1917424729 "type": "object",
1917519175- "description": "DEPRECATED -- Use #account event instead",
2473024730+ "description":
2473124731+ "Represents a change to an account's status on a host (eg, PDS or Relay). The semantics of this event are that the status is at the host which emitted the event, not necessarily that at the currently active PDS. Eg, a Relay takedown would emit a takedown with active=false, even if the PDS is still active.",
1917624732 "required": [
1917724733 "seq",
1917824734 "did",
1917919179- "migrateTo",
1918024735 "time",
1918119181- ],
1918219182- "nullable": [
1918319183- "migrateTo",
2473624736+ "active",
1918424737 ],
1918524738 "properties": {
1918624739 "seq": {
···1919024743 "type": "string",
1919124744 "format": "did",
1919224745 },
1919319193- "migrateTo": {
1919419194- "type": "string",
1919519195- },
1919624746 "time": {
1919724747 "type": "string",
1919824748 "format": "datetime",
1919924749 },
1920019200- },
1920119201- },
1920219202- "tombstone": {
1920319203- "type": "object",
1920419204- "description": "DEPRECATED -- Use #account event instead",
1920519205- "required": [
1920619206- "seq",
1920719207- "did",
1920819208- "time",
1920919209- ],
1921019210- "properties": {
1921119211- "seq": {
1921219212- "type": "integer",
1921319213- },
1921419214- "did": {
1921519215- "type": "string",
1921619216- "format": "did",
2475024750+ "active": {
2475124751+ "type": "boolean",
2475224752+ "description":
2475324753+ "Indicates that the account has a repository which can be fetched from the host that emitted this event.",
1921724754 },
1921819218- "time": {
2475524755+ "status": {
1921924756 "type": "string",
1922019220- "format": "datetime",
2475724757+ "description":
2475824758+ "If active=false, this optional field indicates a reason for why the account is not active.",
2475924759+ "knownValues": [
2476024760+ "takendown",
2476124761+ "suspended",
2476224762+ "deleted",
2476324763+ "deactivated",
2476424764+ "desynchronized",
2476524765+ "throttled",
2476624766+ ],
1922124767 },
1922224768 },
1922324769 },
···1926624812 "description":
1926724813 "For creates and updates, the new record CID. For deletions, null.",
1926824814 },
2481524815+ "prev": {
2481624816+ "type": "cid-link",
2481724817+ "description":
2481824818+ "For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined.",
2481924819+ },
1926924820 },
1927024821 },
1927124822 },
···1931424865 "knownValues": [
1931524866 "takendown",
1931624867 "suspended",
2486824868+ "deleted",
1931724869 "deactivated",
2487024870+ "desynchronized",
2487124871+ "throttled",
1931824872 ],
1931924873 },
1932024874 "rev": {
1932124875 "type": "string",
2487624876+ "format": "tid",
1932224877 "description":
1932324878 "Optional field, the current rev of the repo, if active=true",
1932424879 },
···1936124916 "rkey": {
1936224917 "type": "string",
1936324918 "description": "Record Key",
1936419364- },
1936519365- "commit": {
1936619366- "type": "string",
1936719367- "format": "cid",
1936819368- "description":
1936919369- "DEPRECATED: referenced a repo commit by CID, and retrieved record as of that commit",
2491924919+ "format": "record-key",
1937024920 },
1937124921 },
1937224922 },
···1939324943 },
1939424944 },
1939524945 },
2494624946+ "ComAtprotoSyncListHosts": {
2494724947+ "lexicon": 1,
2494824948+ "id": "com.atproto.sync.listHosts",
2494924949+ "defs": {
2495024950+ "main": {
2495124951+ "type": "query",
2495224952+ "description":
2495324953+ "Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays.",
2495424954+ "parameters": {
2495524955+ "type": "params",
2495624956+ "properties": {
2495724957+ "limit": {
2495824958+ "type": "integer",
2495924959+ "minimum": 1,
2496024960+ "maximum": 1000,
2496124961+ "default": 200,
2496224962+ },
2496324963+ "cursor": {
2496424964+ "type": "string",
2496524965+ },
2496624966+ },
2496724967+ },
2496824968+ "output": {
2496924969+ "encoding": "application/json",
2497024970+ "schema": {
2497124971+ "type": "object",
2497224972+ "required": [
2497324973+ "hosts",
2497424974+ ],
2497524975+ "properties": {
2497624976+ "cursor": {
2497724977+ "type": "string",
2497824978+ },
2497924979+ "hosts": {
2498024980+ "type": "array",
2498124981+ "items": {
2498224982+ "type": "ref",
2498324983+ "ref": "lex:com.atproto.sync.listHosts#host",
2498424984+ },
2498524985+ "description":
2498624986+ "Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first.",
2498724987+ },
2498824988+ },
2498924989+ },
2499024990+ },
2499124991+ },
2499224992+ "host": {
2499324993+ "type": "object",
2499424994+ "required": [
2499524995+ "hostname",
2499624996+ ],
2499724997+ "properties": {
2499824998+ "hostname": {
2499924999+ "type": "string",
2500025000+ "description": "hostname of server; not a URL (no scheme)",
2500125001+ },
2500225002+ "seq": {
2500325003+ "type": "integer",
2500425004+ "description":
2500525005+ "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).",
2500625006+ },
2500725007+ "accountCount": {
2500825008+ "type": "integer",
2500925009+ },
2501025010+ "status": {
2501125011+ "type": "ref",
2501225012+ "ref": "lex:com.atproto.sync.defs#hostStatus",
2501325013+ },
2501425014+ },
2501525015+ },
2501625016+ },
2501725017+ },
1939625018 "ComAtprotoSyncListRepos": {
1939725019 "lexicon": 1,
1939825020 "id": "com.atproto.sync.listRepos",
···1945625078 },
1945725079 "rev": {
1945825080 "type": "string",
2508125081+ "format": "tid",
1945925082 },
1946025083 "active": {
1946125084 "type": "boolean",
···1946725090 "knownValues": [
1946825091 "takendown",
1946925092 "suspended",
2509325093+ "deleted",
1947025094 "deactivated",
2509525095+ "desynchronized",
2509625096+ "throttled",
1947125097 ],
1947225098 },
1947325099 },
1947425100 },
1947525101 },
1947625102 },
2510325103+ "ComAtprotoSyncGetHostStatus": {
2510425104+ "lexicon": 1,
2510525105+ "id": "com.atproto.sync.getHostStatus",
2510625106+ "defs": {
2510725107+ "main": {
2510825108+ "type": "query",
2510925109+ "description":
2511025110+ "Returns information about a specified upstream host, as consumed by the server. Implemented by relays.",
2511125111+ "parameters": {
2511225112+ "type": "params",
2511325113+ "required": [
2511425114+ "hostname",
2511525115+ ],
2511625116+ "properties": {
2511725117+ "hostname": {
2511825118+ "type": "string",
2511925119+ "description":
2512025120+ "Hostname of the host (eg, PDS or relay) being queried.",
2512125121+ },
2512225122+ },
2512325123+ },
2512425124+ "output": {
2512525125+ "encoding": "application/json",
2512625126+ "schema": {
2512725127+ "type": "object",
2512825128+ "required": [
2512925129+ "hostname",
2513025130+ ],
2513125131+ "properties": {
2513225132+ "hostname": {
2513325133+ "type": "string",
2513425134+ },
2513525135+ "seq": {
2513625136+ "type": "integer",
2513725137+ "description":
2513825138+ "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor).",
2513925139+ },
2514025140+ "accountCount": {
2514125141+ "type": "integer",
2514225142+ "description":
2514325143+ "Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts.",
2514425144+ },
2514525145+ "status": {
2514625146+ "type": "ref",
2514725147+ "ref": "lex:com.atproto.sync.defs#hostStatus",
2514825148+ },
2514925149+ },
2515025150+ },
2515125151+ },
2515225152+ "errors": [
2515325153+ {
2515425154+ "name": "HostNotFound",
2515525155+ },
2515625156+ ],
2515725157+ },
2515825158+ },
2515925159+ },
1947725160 "ComAtprotoSyncGetBlocks": {
1947825161 "lexicon": 1,
1947925162 "id": "com.atproto.sync.getBlocks",
···1966125344 },
1966225345 "rev": {
1966325346 "type": "string",
2534725347+ "format": "tid",
1966425348 },
1966525349 },
1966625350 },
···1976025444 },
1976125445 "rkey": {
1976225446 "type": "string",
2544725447+ "format": "record-key",
1976325448 "description": "The Record Key.",
1976425449 "maxLength": 512,
1976525450 },
···1985325538 },
1985425539 "rkey": {
1985525540 "type": "string",
2554125541+ "format": "record-key",
1985625542 "description": "The Record Key.",
1985725543 },
1985825544 "swapRecord": {
···1992525611 },
1992625612 "rkey": {
1992725613 "type": "string",
2561425614+ "format": "record-key",
1992825615 "description": "The Record Key.",
1992925616 "maxLength": 512,
1993025617 },
···2026525952 "rkey": {
2026625953 "type": "string",
2026725954 "maxLength": 512,
2595525955+ "format": "record-key",
2595625956+ "description":
2595725957+ "NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility.",
2026825958 },
2026925959 "value": {
2027025960 "type": "unknown",
···2028625976 },
2028725977 "rkey": {
2028825978 "type": "string",
2597925979+ "format": "record-key",
2028925980 },
2029025981 "value": {
2029125982 "type": "unknown",
···2030625997 },
2030725998 "rkey": {
2030825999 "type": "string",
2600026000+ "format": "record-key",
2030926001 },
2031026002 },
2031126003 },
···2039926091 "cursor": {
2040026092 "type": "string",
2040126093 },
2040220402- "rkeyStart": {
2040320403- "type": "string",
2040420404- "description":
2040520405- "DEPRECATED: The lowest sort-ordered rkey to start from (exclusive)",
2040620406- },
2040720407- "rkeyEnd": {
2040820408- "type": "string",
2040920409- "description":
2041020410- "DEPRECATED: The highest sort-ordered rkey to stop at (exclusive)",
2041120411- },
2041226094 "reverse": {
2041326095 "type": "boolean",
2041426096 "description":
···2047526157 "com.atproto.moderation.defs#reasonRude",
2047626158 "com.atproto.moderation.defs#reasonOther",
2047726159 "com.atproto.moderation.defs#reasonAppeal",
2616026160+ "tools.ozone.report.defs#reasonAppeal",
2616126161+ "tools.ozone.report.defs#reasonOther",
2616226162+ "tools.ozone.report.defs#reasonViolenceAnimal",
2616326163+ "tools.ozone.report.defs#reasonViolenceThreats",
2616426164+ "tools.ozone.report.defs#reasonViolenceGraphicContent",
2616526165+ "tools.ozone.report.defs#reasonViolenceGlorification",
2616626166+ "tools.ozone.report.defs#reasonViolenceExtremistContent",
2616726167+ "tools.ozone.report.defs#reasonViolenceTrafficking",
2616826168+ "tools.ozone.report.defs#reasonViolenceOther",
2616926169+ "tools.ozone.report.defs#reasonSexualAbuseContent",
2617026170+ "tools.ozone.report.defs#reasonSexualNCII",
2617126171+ "tools.ozone.report.defs#reasonSexualDeepfake",
2617226172+ "tools.ozone.report.defs#reasonSexualAnimal",
2617326173+ "tools.ozone.report.defs#reasonSexualUnlabeled",
2617426174+ "tools.ozone.report.defs#reasonSexualOther",
2617526175+ "tools.ozone.report.defs#reasonChildSafetyCSAM",
2617626176+ "tools.ozone.report.defs#reasonChildSafetyGroom",
2617726177+ "tools.ozone.report.defs#reasonChildSafetyPrivacy",
2617826178+ "tools.ozone.report.defs#reasonChildSafetyHarassment",
2617926179+ "tools.ozone.report.defs#reasonChildSafetyOther",
2618026180+ "tools.ozone.report.defs#reasonHarassmentTroll",
2618126181+ "tools.ozone.report.defs#reasonHarassmentTargeted",
2618226182+ "tools.ozone.report.defs#reasonHarassmentHateSpeech",
2618326183+ "tools.ozone.report.defs#reasonHarassmentDoxxing",
2618426184+ "tools.ozone.report.defs#reasonHarassmentOther",
2618526185+ "tools.ozone.report.defs#reasonMisleadingBot",
2618626186+ "tools.ozone.report.defs#reasonMisleadingImpersonation",
2618726187+ "tools.ozone.report.defs#reasonMisleadingSpam",
2618826188+ "tools.ozone.report.defs#reasonMisleadingScam",
2618926189+ "tools.ozone.report.defs#reasonMisleadingElections",
2619026190+ "tools.ozone.report.defs#reasonMisleadingOther",
2619126191+ "tools.ozone.report.defs#reasonRuleSiteSecurity",
2619226192+ "tools.ozone.report.defs#reasonRuleProhibitedSales",
2619326193+ "tools.ozone.report.defs#reasonRuleBanEvasion",
2619426194+ "tools.ozone.report.defs#reasonRuleOther",
2619526195+ "tools.ozone.report.defs#reasonSelfHarmContent",
2619626196+ "tools.ozone.report.defs#reasonSelfHarmED",
2619726197+ "tools.ozone.report.defs#reasonSelfHarmStunts",
2619826198+ "tools.ozone.report.defs#reasonSelfHarmSubstances",
2619926199+ "tools.ozone.report.defs#reasonSelfHarmOther",
2047826200 ],
2047926201 },
2048026202 "reasonSpam": {
2048126203 "type": "token",
2048220482- "description": "Spam: frequent unwanted promotion, replies, mentions",
2620426204+ "description":
2620526205+ "Spam: frequent unwanted promotion, replies, mentions. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingSpam`.",
2048326206 },
2048426207 "reasonViolation": {
2048526208 "type": "token",
2048626209 "description":
2048720487- "Direct violation of server rules, laws, terms of service",
2621026210+ "Direct violation of server rules, laws, terms of service. Prefer new lexicon definition `tools.ozone.report.defs#reasonRuleOther`.",
2048826211 },
2048926212 "reasonMisleading": {
2049026213 "type": "token",
2049120491- "description": "Misleading identity, affiliation, or content",
2621426214+ "description":
2621526215+ "Misleading identity, affiliation, or content. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingOther`.",
2049226216 },
2049326217 "reasonSexual": {
2049426218 "type": "token",
2049520495- "description": "Unwanted or mislabeled sexual content",
2621926219+ "description":
2622026220+ "Unwanted or mislabeled sexual content. Prefer new lexicon definition `tools.ozone.report.defs#reasonSexualUnlabeled`.",
2049626221 },
2049726222 "reasonRude": {
2049826223 "type": "token",
2049926224 "description":
2050020500- "Rude, harassing, explicit, or otherwise unwelcoming behavior",
2622526225+ "Rude, harassing, explicit, or otherwise unwelcoming behavior. Prefer new lexicon definition `tools.ozone.report.defs#reasonHarassmentOther`.",
2050126226 },
2050226227 "reasonOther": {
2050326228 "type": "token",
2050426229 "description":
2050520505- "Other: reports not falling under another report category",
2623026230+ "Reports not falling under another report category. Prefer new lexicon definition `tools.ozone.report.defs#reasonOther`.",
2050626231 },
2050726232 "reasonAppeal": {
2050826233 "type": "token",
2050920509- "description": "Appeal: appeal a previously taken moderation action",
2623426234+ "description": "Appeal a previously taken moderation action",
2051026235 },
2051126236 "subjectType": {
2051226237 "type": "string",
···2055726282 "lex:com.atproto.repo.strongRef",
2055826283 ],
2055926284 },
2628526285+ "modTool": {
2628626286+ "type": "ref",
2628726287+ "ref": "lex:com.atproto.moderation.createReport#modTool",
2628826288+ },
2056026289 },
2056126290 },
2056226291 },
···2060326332 },
2060426333 },
2060526334 },
2633526335+ "modTool": {
2633626336+ "type": "object",
2633726337+ "description":
2633826338+ "Moderation tool information for tracing the source of the action",
2633926339+ "required": [
2634026340+ "name",
2634126341+ ],
2634226342+ "properties": {
2634326343+ "name": {
2634426344+ "type": "string",
2634526345+ "description":
2634626346+ "Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome')",
2634726347+ },
2634826348+ "meta": {
2634926349+ "type": "unknown",
2635026350+ "description": "Additional arbitrary metadata about the source",
2635126351+ },
2635226352+ },
2635326353+ },
2060626354 },
2060726355 },
2060826356} as Record<string, LexiconDoc>;
···2064626394 ToolsOzoneSignatureFindRelatedAccounts:
2064726395 "tools.ozone.signature.findRelatedAccounts",
2064826396 ToolsOzoneServerGetConfig: "tools.ozone.server.getConfig",
2639726397+ ToolsOzoneVerificationRevokeVerifications:
2639826398+ "tools.ozone.verification.revokeVerifications",
2639926399+ ToolsOzoneVerificationDefs: "tools.ozone.verification.defs",
2640026400+ ToolsOzoneVerificationGrantVerifications:
2640126401+ "tools.ozone.verification.grantVerifications",
2640226402+ ToolsOzoneVerificationListVerifications:
2640326403+ "tools.ozone.verification.listVerifications",
2640426404+ ToolsOzoneSafelinkDefs: "tools.ozone.safelink.defs",
2640526405+ ToolsOzoneSafelinkAddRule: "tools.ozone.safelink.addRule",
2640626406+ ToolsOzoneSafelinkRemoveRule: "tools.ozone.safelink.removeRule",
2640726407+ ToolsOzoneSafelinkUpdateRule: "tools.ozone.safelink.updateRule",
2640826408+ ToolsOzoneSafelinkQueryEvents: "tools.ozone.safelink.queryEvents",
2640926409+ ToolsOzoneSafelinkQueryRules: "tools.ozone.safelink.queryRules",
2064926410 ToolsOzoneTeamListMembers: "tools.ozone.team.listMembers",
2065026411 ToolsOzoneTeamDefs: "tools.ozone.team.defs",
2065126412 ToolsOzoneTeamDeleteMember: "tools.ozone.team.deleteMember",
2065226413 ToolsOzoneTeamUpdateMember: "tools.ozone.team.updateMember",
2065326414 ToolsOzoneTeamAddMember: "tools.ozone.team.addMember",
2641526415+ ToolsOzoneHostingGetAccountHistory: "tools.ozone.hosting.getAccountHistory",
2641626416+ ToolsOzoneReportDefs: "tools.ozone.report.defs",
2065426417 ToolsOzoneCommunicationDefs: "tools.ozone.communication.defs",
2065526418 ToolsOzoneCommunicationUpdateTemplate:
2065626419 "tools.ozone.communication.updateTemplate",
···2067326436 ToolsOzoneSettingUpsertOption: "tools.ozone.setting.upsertOption",
2067426437 ToolsOzoneModerationGetReporterStats:
2067526438 "tools.ozone.moderation.getReporterStats",
2643926439+ ToolsOzoneModerationCancelScheduledActions:
2644026440+ "tools.ozone.moderation.cancelScheduledActions",
2644126441+ ToolsOzoneModerationListScheduledActions:
2644226442+ "tools.ozone.moderation.listScheduledActions",
2067626443 ToolsOzoneModerationQueryStatuses: "tools.ozone.moderation.queryStatuses",
2067726444 ToolsOzoneModerationGetRepo: "tools.ozone.moderation.getRepo",
2067826445 ToolsOzoneModerationDefs: "tools.ozone.moderation.defs",
2644626446+ ToolsOzoneModerationGetSubjects: "tools.ozone.moderation.getSubjects",
2067926447 ToolsOzoneModerationGetRecords: "tools.ozone.moderation.getRecords",
2644826448+ ToolsOzoneModerationScheduleAction: "tools.ozone.moderation.scheduleAction",
2068026449 ToolsOzoneModerationGetEvent: "tools.ozone.moderation.getEvent",
2068126450 ToolsOzoneModerationQueryEvents: "tools.ozone.moderation.queryEvents",
2068226451 ToolsOzoneModerationGetRecord: "tools.ozone.moderation.getRecord",
2068326452 ToolsOzoneModerationEmitEvent: "tools.ozone.moderation.emitEvent",
2068426453 ToolsOzoneModerationSearchRepos: "tools.ozone.moderation.searchRepos",
2645426454+ ToolsOzoneModerationGetAccountTimeline:
2645526455+ "tools.ozone.moderation.getAccountTimeline",
2068526456 ToolsOzoneModerationGetRepos: "tools.ozone.moderation.getRepos",
2068626457 AppBskyVideoUploadVideo: "app.bsky.video.uploadVideo",
2068726458 AppBskyVideoDefs: "app.bsky.video.defs",
2068826459 AppBskyVideoGetJobStatus: "app.bsky.video.getJobStatus",
2068926460 AppBskyVideoGetUploadLimits: "app.bsky.video.getUploadLimits",
2646126461+ AppBskyBookmarkDefs: "app.bsky.bookmark.defs",
2646226462+ AppBskyBookmarkDeleteBookmark: "app.bsky.bookmark.deleteBookmark",
2646326463+ AppBskyBookmarkGetBookmarks: "app.bsky.bookmark.getBookmarks",
2646426464+ AppBskyBookmarkCreateBookmark: "app.bsky.bookmark.createBookmark",
2069026465 AppBskyEmbedDefs: "app.bsky.embed.defs",
2069126466 AppBskyEmbedRecord: "app.bsky.embed.record",
2069226467 AppBskyEmbedImages: "app.bsky.embed.images",
2069326468 AppBskyEmbedRecordWithMedia: "app.bsky.embed.recordWithMedia",
2069426469 AppBskyEmbedVideo: "app.bsky.embed.video",
2069526470 AppBskyEmbedExternal: "app.bsky.embed.external",
2647126471+ AppBskyNotificationDefs: "app.bsky.notification.defs",
2069626472 AppBskyNotificationRegisterPush: "app.bsky.notification.registerPush",
2069726473 AppBskyNotificationPutPreferences: "app.bsky.notification.putPreferences",
2647426474+ AppBskyNotificationPutActivitySubscription:
2647526475+ "app.bsky.notification.putActivitySubscription",
2647626476+ AppBskyNotificationDeclaration: "app.bsky.notification.declaration",
2647726477+ AppBskyNotificationPutPreferencesV2: "app.bsky.notification.putPreferencesV2",
2069826478 AppBskyNotificationUpdateSeen: "app.bsky.notification.updateSeen",
2647926479+ AppBskyNotificationListActivitySubscriptions:
2648026480+ "app.bsky.notification.listActivitySubscriptions",
2648126481+ AppBskyNotificationUnregisterPush: "app.bsky.notification.unregisterPush",
2648226482+ AppBskyNotificationGetPreferences: "app.bsky.notification.getPreferences",
2069926483 AppBskyNotificationListNotifications:
2070026484 "app.bsky.notification.listNotifications",
2070126485 AppBskyNotificationGetUnreadCount: "app.bsky.notification.getUnreadCount",
2648626486+ AppBskyUnspeccedGetSuggestedFeedsSkeleton:
2648726487+ "app.bsky.unspecced.getSuggestedFeedsSkeleton",
2070226488 AppBskyUnspeccedSearchStarterPacksSkeleton:
2070326489 "app.bsky.unspecced.searchStarterPacksSkeleton",
2070426490 AppBskyUnspeccedDefs: "app.bsky.unspecced.defs",
2649126491+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton:
2649226492+ "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton",
2649326493+ AppBskyUnspeccedGetSuggestedUsers: "app.bsky.unspecced.getSuggestedUsers",
2649426494+ AppBskyUnspeccedGetPostThreadOtherV2:
2649526495+ "app.bsky.unspecced.getPostThreadOtherV2",
2649626496+ AppBskyUnspeccedGetSuggestedStarterPacks:
2649726497+ "app.bsky.unspecced.getSuggestedStarterPacks",
2649826498+ AppBskyUnspeccedGetSuggestedStarterPacksSkeleton:
2649926499+ "app.bsky.unspecced.getSuggestedStarterPacksSkeleton",
2650026500+ AppBskyUnspeccedGetOnboardingSuggestedStarterPacks:
2650126501+ "app.bsky.unspecced.getOnboardingSuggestedStarterPacks",
2650226502+ AppBskyUnspeccedGetSuggestedUsersSkeleton:
2650326503+ "app.bsky.unspecced.getSuggestedUsersSkeleton",
2650426504+ AppBskyUnspeccedGetPostThreadV2: "app.bsky.unspecced.getPostThreadV2",
2650526505+ AppBskyUnspeccedGetTrends: "app.bsky.unspecced.getTrends",
2070526506 AppBskyUnspeccedSearchActorsSkeleton:
2070626507 "app.bsky.unspecced.searchActorsSkeleton",
2070726508 AppBskyUnspeccedGetSuggestionsSkeleton:
2070826509 "app.bsky.unspecced.getSuggestionsSkeleton",
2070926510 AppBskyUnspeccedSearchPostsSkeleton: "app.bsky.unspecced.searchPostsSkeleton",
2651126511+ AppBskyUnspeccedGetAgeAssuranceState:
2651226512+ "app.bsky.unspecced.getAgeAssuranceState",
2071026513 AppBskyUnspeccedGetPopularFeedGenerators:
2071126514 "app.bsky.unspecced.getPopularFeedGenerators",
2651526515+ AppBskyUnspeccedInitAgeAssurance: "app.bsky.unspecced.initAgeAssurance",
2071226516 AppBskyUnspeccedGetTrendingTopics: "app.bsky.unspecced.getTrendingTopics",
2071326517 AppBskyUnspeccedGetTaggedSuggestions:
2071426518 "app.bsky.unspecced.getTaggedSuggestions",
2651926519+ AppBskyUnspeccedGetSuggestedFeeds: "app.bsky.unspecced.getSuggestedFeeds",
2652026520+ AppBskyUnspeccedGetTrendsSkeleton: "app.bsky.unspecced.getTrendsSkeleton",
2071526521 AppBskyUnspeccedGetConfig: "app.bsky.unspecced.getConfig",
2071626522 AppBskyGraphGetStarterPacks: "app.bsky.graph.getStarterPacks",
2071726523 AppBskyGraphGetSuggestedFollowsByActor:
2071826524 "app.bsky.graph.getSuggestedFollowsByActor",
2071926525 AppBskyGraphBlock: "app.bsky.graph.block",
2652626526+ AppBskyGraphGetStarterPacksWithMembership:
2652726527+ "app.bsky.graph.getStarterPacksWithMembership",
2072026528 AppBskyGraphFollow: "app.bsky.graph.follow",
2072126529 AppBskyGraphDefs: "app.bsky.graph.defs",
2653026530+ AppBskyGraphGetListsWithMembership: "app.bsky.graph.getListsWithMembership",
2072226531 AppBskyGraphUnmuteActorList: "app.bsky.graph.unmuteActorList",
2072326532 AppBskyGraphGetListBlocks: "app.bsky.graph.getListBlocks",
2072426533 AppBskyGraphListblock: "app.bsky.graph.listblock",
···2073626545 AppBskyGraphListitem: "app.bsky.graph.listitem",
2073726546 AppBskyGraphList: "app.bsky.graph.list",
2073826547 AppBskyGraphGetKnownFollowers: "app.bsky.graph.getKnownFollowers",
2654826548+ AppBskyGraphVerification: "app.bsky.graph.verification",
2073926549 AppBskyGraphGetListMutes: "app.bsky.graph.getListMutes",
2074026550 AppBskyGraphGetFollows: "app.bsky.graph.getFollows",
2074126551 AppBskyGraphGetBlocks: "app.bsky.graph.getBlocks",
···2076826578 AppBskyFeedGetActorFeeds: "app.bsky.feed.getActorFeeds",
2076926579 AppBskyFeedPost: "app.bsky.feed.post",
2077026580 AppBskyRichtextFacet: "app.bsky.richtext.facet",
2658126581+ AppBskyAgeassuranceBegin: "app.bsky.ageassurance.begin",
2658226582+ AppBskyAgeassuranceDefs: "app.bsky.ageassurance.defs",
2658326583+ AppBskyAgeassuranceGetState: "app.bsky.ageassurance.getState",
2658426584+ AppBskyAgeassuranceGetConfig: "app.bsky.ageassurance.getConfig",
2077126585 AppBskyActorSearchActorsTypeahead: "app.bsky.actor.searchActorsTypeahead",
2077226586 AppBskyActorDefs: "app.bsky.actor.defs",
2077326587 AppBskyActorPutPreferences: "app.bsky.actor.putPreferences",
···2077526589 AppBskyActorGetSuggestions: "app.bsky.actor.getSuggestions",
2077626590 AppBskyActorSearchActors: "app.bsky.actor.searchActors",
2077726591 AppBskyActorGetProfiles: "app.bsky.actor.getProfiles",
2659226592+ AppBskyActorStatus: "app.bsky.actor.status",
2077826593 AppBskyActorGetPreferences: "app.bsky.actor.getPreferences",
2077926594 AppBskyActorProfile: "app.bsky.actor.profile",
2078026595 AppBskyLabelerDefs: "app.bsky.labeler.defs",
···2078726602 ChatBskyConvoGetLog: "chat.bsky.convo.getLog",
2078826603 ChatBskyConvoSendMessage: "chat.bsky.convo.sendMessage",
2078926604 ChatBskyConvoLeaveConvo: "chat.bsky.convo.leaveConvo",
2660526605+ ChatBskyConvoAddReaction: "chat.bsky.convo.addReaction",
2079026606 ChatBskyConvoAcceptConvo: "chat.bsky.convo.acceptConvo",
2079126607 ChatBskyConvoMuteConvo: "chat.bsky.convo.muteConvo",
2079226608 ChatBskyConvoDeleteMessageForSelf: "chat.bsky.convo.deleteMessageForSelf",
2660926609+ ChatBskyConvoRemoveReaction: "chat.bsky.convo.removeReaction",
2079326610 ChatBskyConvoUpdateRead: "chat.bsky.convo.updateRead",
2079426611 ChatBskyConvoUpdateAllRead: "chat.bsky.convo.updateAllRead",
2079526612 ChatBskyConvoGetConvo: "chat.bsky.convo.getConvo",
···2087826695 SoSprkMediaImages: "so.sprk.media.images",
2087926696 SoSprkMediaVideo: "so.sprk.media.video",
2088026697 SoSprkMediaImage: "so.sprk.media.image",
2669826698+ ComAtprotoTempDereferenceScope: "com.atproto.temp.dereferenceScope",
2088126699 ComAtprotoTempAddReservedHandle: "com.atproto.temp.addReservedHandle",
2088226700 ComAtprotoTempCheckSignupQueue: "com.atproto.temp.checkSignupQueue",
2670126701+ ComAtprotoTempCheckHandleAvailability:
2670226702+ "com.atproto.temp.checkHandleAvailability",
2088326703 ComAtprotoTempRequestPhoneVerification:
2088426704 "com.atproto.temp.requestPhoneVerification",
2670526705+ ComAtprotoTempRevokeAccountCredentials:
2670626706+ "com.atproto.temp.revokeAccountCredentials",
2088526707 ComAtprotoTempFetchLabels: "com.atproto.temp.fetchLabels",
2088626708 ComAtprotoIdentityUpdateHandle: "com.atproto.identity.updateHandle",
2670926709+ ComAtprotoIdentityDefs: "com.atproto.identity.defs",
2088726710 ComAtprotoIdentitySignPlcOperation: "com.atproto.identity.signPlcOperation",
2088826711 ComAtprotoIdentitySubmitPlcOperation:
2088926712 "com.atproto.identity.submitPlcOperation",
2671326713+ ComAtprotoIdentityResolveIdentity: "com.atproto.identity.resolveIdentity",
2671426714+ ComAtprotoIdentityRefreshIdentity: "com.atproto.identity.refreshIdentity",
2089026715 ComAtprotoIdentityResolveHandle: "com.atproto.identity.resolveHandle",
2089126716 ComAtprotoIdentityRequestPlcOperationSignature:
2089226717 "com.atproto.identity.requestPlcOperationSignature",
2089326718 ComAtprotoIdentityGetRecommendedDidCredentials:
2089426719 "com.atproto.identity.getRecommendedDidCredentials",
2672026720+ ComAtprotoIdentityResolveDid: "com.atproto.identity.resolveDid",
2089526721 ComAtprotoAdminUpdateAccountEmail: "com.atproto.admin.updateAccountEmail",
2089626722 ComAtprotoAdminGetAccountInfo: "com.atproto.admin.getAccountInfo",
2089726723 ComAtprotoAdminGetSubjectStatus: "com.atproto.admin.getSubjectStatus",
···2090126727 "com.atproto.admin.updateAccountPassword",
2090226728 ComAtprotoAdminUpdateAccountHandle: "com.atproto.admin.updateAccountHandle",
2090326729 ComAtprotoAdminGetInviteCodes: "com.atproto.admin.getInviteCodes",
2673026730+ ComAtprotoAdminUpdateAccountSigningKey:
2673126731+ "com.atproto.admin.updateAccountSigningKey",
2090426732 ComAtprotoAdminEnableAccountInvites: "com.atproto.admin.enableAccountInvites",
2090526733 ComAtprotoAdminDisableAccountInvites:
2090626734 "com.atproto.admin.disableAccountInvites",
···2094226770 ComAtprotoServerCreateAccount: "com.atproto.server.createAccount",
2094326771 ComAtprotoServerDeleteAccount: "com.atproto.server.deleteAccount",
2094426772 ComAtprotoServerCreateInviteCode: "com.atproto.server.createInviteCode",
2677326773+ ComAtprotoLexiconResolveLexicon: "com.atproto.lexicon.resolveLexicon",
2094526774 ComAtprotoLexiconSchema: "com.atproto.lexicon.schema",
2094626775 ComAtprotoSyncGetHead: "com.atproto.sync.getHead",
2094726776 ComAtprotoSyncGetBlob: "com.atproto.sync.getBlob",
2094826777 ComAtprotoSyncGetRepo: "com.atproto.sync.getRepo",
2094926778 ComAtprotoSyncNotifyOfUpdate: "com.atproto.sync.notifyOfUpdate",
2677926779+ ComAtprotoSyncDefs: "com.atproto.sync.defs",
2095026780 ComAtprotoSyncRequestCrawl: "com.atproto.sync.requestCrawl",
2095126781 ComAtprotoSyncListBlobs: "com.atproto.sync.listBlobs",
2095226782 ComAtprotoSyncGetLatestCommit: "com.atproto.sync.getLatestCommit",
2095326783 ComAtprotoSyncSubscribeRepos: "com.atproto.sync.subscribeRepos",
2095426784 ComAtprotoSyncGetRepoStatus: "com.atproto.sync.getRepoStatus",
2095526785 ComAtprotoSyncGetRecord: "com.atproto.sync.getRecord",
2678626786+ ComAtprotoSyncListHosts: "com.atproto.sync.listHosts",
2095626787 ComAtprotoSyncListRepos: "com.atproto.sync.listRepos",
2678826788+ ComAtprotoSyncGetHostStatus: "com.atproto.sync.getHostStatus",
2095726789 ComAtprotoSyncGetBlocks: "com.atproto.sync.getBlocks",
2095826790 ComAtprotoSyncListReposByCollection: "com.atproto.sync.listReposByCollection",
2095926791 ComAtprotoSyncGetCheckout: "com.atproto.sync.getCheckout",
+138
lex/types/app/bsky/actor/defs.ts
···77import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts";
88import type * as AppBskyGraphDefs from "../graph/defs.ts";
99import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts";
1010+import type * as AppBskyNotificationDefs from "../notification/defs.ts";
1011import type * as AppBskyFeedThreadgate from "../feed/threadgate.ts";
1112import type * as AppBskyFeedPostgate from "../feed/postgate.ts";
1313+import type * as AppBskyEmbedExternal from "../embed/external.ts";
12141315const is$typed = _is$typed, validate = _validate;
1416const id = "app.bsky.actor.defs";
···1820 did: string;
1921 handle: string;
2022 displayName?: string;
2323+ pronouns?: string;
2124 avatar?: string;
2225 associated?: ProfileAssociated;
2326 viewer?: ViewerState;
2427 labels?: (ComAtprotoLabelDefs.Label)[];
2528 createdAt?: string;
2929+ verification?: VerificationState;
3030+ status?: StatusView;
3131+ /** Debug information for internal development */
3232+ debug?: { [_ in string]: unknown };
2633}
27342835const hashProfileViewBasic = "profileViewBasic";
···4047 did: string;
4148 handle: string;
4249 displayName?: string;
5050+ pronouns?: string;
4351 description?: string;
4452 avatar?: string;
4553 associated?: ProfileAssociated;
···4755 createdAt?: string;
4856 viewer?: ViewerState;
4957 labels?: (ComAtprotoLabelDefs.Label)[];
5858+ verification?: VerificationState;
5959+ status?: StatusView;
6060+ /** Debug information for internal development */
6161+ debug?: { [_ in string]: unknown };
5062}
51635264const hashProfileView = "profileView";
···6577 handle: string;
6678 displayName?: string;
6779 description?: string;
8080+ pronouns?: string;
8181+ website?: string;
6882 avatar?: string;
6983 banner?: string;
7084 followersCount?: number;
···7791 viewer?: ViewerState;
7892 labels?: (ComAtprotoLabelDefs.Label)[];
7993 pinnedPost?: ComAtprotoRepoStrongRef.Main;
9494+ verification?: VerificationState;
9595+ status?: StatusView;
9696+ /** Debug information for internal development */
9797+ debug?: { [_ in string]: unknown };
8098}
819982100const hashProfileViewDetailed = "profileViewDetailed";
···96114 starterPacks?: number;
97115 labeler?: boolean;
98116 chat?: ProfileAssociatedChat;
117117+ activitySubscription?: ProfileAssociatedActivitySubscription;
99118}
100119101120const hashProfileAssociated = "profileAssociated";
···127146 return validate<ProfileAssociatedChat & V>(v, id, hashProfileAssociatedChat);
128147}
129148149149+export interface ProfileAssociatedActivitySubscription {
150150+ $type?: "app.bsky.actor.defs#profileAssociatedActivitySubscription";
151151+ allowSubscriptions:
152152+ | "followers"
153153+ | "mutuals"
154154+ | "none"
155155+ | (string & globalThis.Record<PropertyKey, never>);
156156+}
157157+158158+const hashProfileAssociatedActivitySubscription =
159159+ "profileAssociatedActivitySubscription";
160160+161161+export function isProfileAssociatedActivitySubscription<V>(v: V) {
162162+ return is$typed(v, id, hashProfileAssociatedActivitySubscription);
163163+}
164164+165165+export function validateProfileAssociatedActivitySubscription<V>(v: V) {
166166+ return validate<ProfileAssociatedActivitySubscription & V>(
167167+ v,
168168+ id,
169169+ hashProfileAssociatedActivitySubscription,
170170+ );
171171+}
172172+130173/** Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests. */
131174export interface ViewerState {
132175 $type?: "app.bsky.actor.defs#viewerState";
···138181 following?: string;
139182 followedBy?: string;
140183 knownFollowers?: KnownFollowers;
184184+ activitySubscription?: AppBskyNotificationDefs.ActivitySubscription;
141185}
142186143187const hashViewerState = "viewerState";
···167211 return validate<KnownFollowers & V>(v, id, hashKnownFollowers);
168212}
169213214214+/** Represents the verification information about the user this object is attached to. */
215215+export interface VerificationState {
216216+ $type?: "app.bsky.actor.defs#verificationState";
217217+ /** All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included. */
218218+ verifications: (VerificationView)[];
219219+ /** The user's status as a verified account. */
220220+ verifiedStatus:
221221+ | "valid"
222222+ | "invalid"
223223+ | "none"
224224+ | (string & globalThis.Record<PropertyKey, never>);
225225+ /** The user's status as a trusted verifier. */
226226+ trustedVerifierStatus:
227227+ | "valid"
228228+ | "invalid"
229229+ | "none"
230230+ | (string & globalThis.Record<PropertyKey, never>);
231231+}
232232+233233+const hashVerificationState = "verificationState";
234234+235235+export function isVerificationState<V>(v: V) {
236236+ return is$typed(v, id, hashVerificationState);
237237+}
238238+239239+export function validateVerificationState<V>(v: V) {
240240+ return validate<VerificationState & V>(v, id, hashVerificationState);
241241+}
242242+243243+/** An individual verification for an associated subject. */
244244+export interface VerificationView {
245245+ $type?: "app.bsky.actor.defs#verificationView";
246246+ /** The user who issued this verification. */
247247+ issuer: string;
248248+ /** The AT-URI of the verification record. */
249249+ uri: string;
250250+ /** True if the verification passes validation, otherwise false. */
251251+ isValid: boolean;
252252+ /** Timestamp when the verification was created. */
253253+ createdAt: string;
254254+}
255255+256256+const hashVerificationView = "verificationView";
257257+258258+export function isVerificationView<V>(v: V) {
259259+ return is$typed(v, id, hashVerificationView);
260260+}
261261+262262+export function validateVerificationView<V>(v: V) {
263263+ return validate<VerificationView & V>(v, id, hashVerificationView);
264264+}
265265+170266export type Preferences = (
171267 | $Typed<AdultContentPref>
172268 | $Typed<ContentLabelPref>
···181277 | $Typed<BskyAppStatePref>
182278 | $Typed<LabelersPref>
183279 | $Typed<PostInteractionSettingsPref>
280280+ | $Typed<VerificationPrefs>
184281 | { $type: string }
185282)[];
186283···507604 return validate<Nux & V>(v, id, hashNux);
508605}
509606607607+/** Preferences for how verified accounts appear in the app. */
608608+export interface VerificationPrefs {
609609+ $type?: "app.bsky.actor.defs#verificationPrefs";
610610+ /** Hide the blue check badges for verified accounts and trusted verifiers. */
611611+ hideBadges: boolean;
612612+}
613613+614614+const hashVerificationPrefs = "verificationPrefs";
615615+616616+export function isVerificationPrefs<V>(v: V) {
617617+ return is$typed(v, id, hashVerificationPrefs);
618618+}
619619+620620+export function validateVerificationPrefs<V>(v: V) {
621621+ return validate<VerificationPrefs & V>(v, id, hashVerificationPrefs);
622622+}
623623+510624/** 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. */
511625export interface PostInteractionSettingsPref {
512626 $type?: "app.bsky.actor.defs#postInteractionSettingsPref";
···536650 hashPostInteractionSettingsPref,
537651 );
538652}
653653+654654+export interface StatusView {
655655+ $type?: "app.bsky.actor.defs#statusView";
656656+ /** The status for the account. */
657657+ status:
658658+ | "app.bsky.actor.status#live"
659659+ | (string & globalThis.Record<PropertyKey, never>);
660660+ record: { [_ in string]: unknown };
661661+ embed?: $Typed<AppBskyEmbedExternal.View> | { $type: string };
662662+ /** The date when this status will expire. The application might choose to no longer return the status after expiration. */
663663+ expiresAt?: string;
664664+ /** True if the status is not expired, false if it is expired. Only present if expiration was set. */
665665+ isActive?: boolean;
666666+}
667667+668668+const hashStatusView = "statusView";
669669+670670+export function isStatusView<V>(v: V) {
671671+ return is$typed(v, id, hashStatusView);
672672+}
673673+674674+export function validateStatusView<V>(v: V) {
675675+ return validate<StatusView & V>(v, id, hashStatusView);
676676+}
+3
lex/types/app/bsky/actor/profile.ts
···1616 displayName?: string;
1717 /** Free-form profile description text. */
1818 description?: string;
1919+ /** Free-form pronouns text. */
2020+ pronouns?: string;
2121+ website?: string;
1922 /** Small image to be displayed next to posts from account. AKA, 'profile picture' */
2023 avatar?: BlobRef;
2124 /** Larger horizontal image to display behind profile view. */
+36
lex/types/app/bsky/actor/status.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+import { type $Typed } from "../../../../util.ts";
77+import type * as AppBskyEmbedExternal from "../embed/external.ts";
88+99+const is$typed = _is$typed, validate = _validate;
1010+const id = "app.bsky.actor.status";
1111+1212+export interface Record {
1313+ $type: "app.bsky.actor.status";
1414+ /** The status for the account. */
1515+ status:
1616+ | "app.bsky.actor.status#live"
1717+ | (string & globalThis.Record<PropertyKey, never>);
1818+ embed?: $Typed<AppBskyEmbedExternal.Main> | { $type: string };
1919+ /** The duration of the status in minutes. Applications can choose to impose minimum and maximum limits. */
2020+ durationMinutes?: number;
2121+ createdAt: string;
2222+ [k: string]: unknown;
2323+}
2424+2525+const hashRecord = "main";
2626+2727+export function isRecord<V>(v: V) {
2828+ return is$typed(v, id, hashRecord);
2929+}
3030+3131+export function validateRecord<V>(v: V) {
3232+ return validate<Record & V>(v, id, hashRecord, true);
3333+}
3434+3535+/** Advertises an account as currently offering live content. */
3636+export const LIVE = `${id}#live`;
+42
lex/types/app/bsky/ageassurance/begin.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyAgeassuranceDefs from "./defs.ts";
55+66+export type QueryParams = globalThis.Record<PropertyKey, never>;
77+88+export interface InputSchema {
99+ /** The user's email address to receive Age Assurance instructions. */
1010+ email: string;
1111+ /** The user's preferred language for communication during the Age Assurance process. */
1212+ language: string;
1313+ /** An ISO 3166-1 alpha-2 code of the user's location. */
1414+ countryCode: string;
1515+ /** An optional ISO 3166-2 code of the user's region or state within the country. */
1616+ regionCode?: string;
1717+}
1818+1919+export type OutputSchema = AppBskyAgeassuranceDefs.State;
2020+2121+export interface HandlerInput {
2222+ encoding: "application/json";
2323+ body: InputSchema;
2424+}
2525+2626+export interface HandlerSuccess {
2727+ encoding: "application/json";
2828+ body: OutputSchema;
2929+ headers?: { [key: string]: string };
3030+}
3131+3232+export interface HandlerError {
3333+ status: number;
3434+ message?: string;
3535+ error?:
3636+ | "InvalidEmail"
3737+ | "DidTooLong"
3838+ | "InvalidInitiation"
3939+ | "RegionNotSupported";
4040+}
4141+4242+export type HandlerOutput = HandlerError | HandlerSuccess;
+310
lex/types/app/bsky/ageassurance/defs.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+import { type $Typed } from "../../../../util.ts";
77+88+const is$typed = _is$typed, validate = _validate;
99+const id = "app.bsky.ageassurance.defs";
1010+1111+/** The access level granted based on Age Assurance data we've processed. */
1212+export type Access =
1313+ | "unknown"
1414+ | "none"
1515+ | "safe"
1616+ | "full"
1717+ | (string & globalThis.Record<PropertyKey, never>);
1818+/** The status of the Age Assurance process. */
1919+export type Status =
2020+ | "unknown"
2121+ | "pending"
2222+ | "assured"
2323+ | "blocked"
2424+ | (string & globalThis.Record<PropertyKey, never>);
2525+2626+/** The user's computed Age Assurance state. */
2727+export interface State {
2828+ $type?: "app.bsky.ageassurance.defs#state";
2929+ /** The timestamp when this state was last updated. */
3030+ lastInitiatedAt?: string;
3131+ status: Status;
3232+ access: Access;
3333+}
3434+3535+const hashState = "state";
3636+3737+export function isState<V>(v: V) {
3838+ return is$typed(v, id, hashState);
3939+}
4040+4141+export function validateState<V>(v: V) {
4242+ return validate<State & V>(v, id, hashState);
4343+}
4444+4545+/** Additional metadata needed to compute Age Assurance state client-side. */
4646+export interface StateMetadata {
4747+ $type?: "app.bsky.ageassurance.defs#stateMetadata";
4848+ /** The account creation timestamp. */
4949+ accountCreatedAt?: string;
5050+}
5151+5252+const hashStateMetadata = "stateMetadata";
5353+5454+export function isStateMetadata<V>(v: V) {
5555+ return is$typed(v, id, hashStateMetadata);
5656+}
5757+5858+export function validateStateMetadata<V>(v: V) {
5959+ return validate<StateMetadata & V>(v, id, hashStateMetadata);
6060+}
6161+6262+export interface Config {
6363+ $type?: "app.bsky.ageassurance.defs#config";
6464+ /** The per-region Age Assurance configuration. */
6565+ regions: (ConfigRegion)[];
6666+}
6767+6868+const hashConfig = "config";
6969+7070+export function isConfig<V>(v: V) {
7171+ return is$typed(v, id, hashConfig);
7272+}
7373+7474+export function validateConfig<V>(v: V) {
7575+ return validate<Config & V>(v, id, hashConfig);
7676+}
7777+7878+/** The Age Assurance configuration for a specific region. */
7979+export interface ConfigRegion {
8080+ $type?: "app.bsky.ageassurance.defs#configRegion";
8181+ /** The ISO 3166-1 alpha-2 country code this configuration applies to. */
8282+ countryCode: string;
8383+ /** The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country. */
8484+ regionCode?: string;
8585+ /** The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item. */
8686+ rules: (
8787+ | $Typed<ConfigRegionRuleDefault>
8888+ | $Typed<ConfigRegionRuleIfDeclaredOverAge>
8989+ | $Typed<ConfigRegionRuleIfDeclaredUnderAge>
9090+ | $Typed<ConfigRegionRuleIfAssuredOverAge>
9191+ | $Typed<ConfigRegionRuleIfAssuredUnderAge>
9292+ | $Typed<ConfigRegionRuleIfAccountNewerThan>
9393+ | $Typed<ConfigRegionRuleIfAccountOlderThan>
9494+ | { $type: string }
9595+ )[];
9696+}
9797+9898+const hashConfigRegion = "configRegion";
9999+100100+export function isConfigRegion<V>(v: V) {
101101+ return is$typed(v, id, hashConfigRegion);
102102+}
103103+104104+export function validateConfigRegion<V>(v: V) {
105105+ return validate<ConfigRegion & V>(v, id, hashConfigRegion);
106106+}
107107+108108+/** Age Assurance rule that applies by default. */
109109+export interface ConfigRegionRuleDefault {
110110+ $type?: "app.bsky.ageassurance.defs#configRegionRuleDefault";
111111+ access: Access;
112112+}
113113+114114+const hashConfigRegionRuleDefault = "configRegionRuleDefault";
115115+116116+export function isConfigRegionRuleDefault<V>(v: V) {
117117+ return is$typed(v, id, hashConfigRegionRuleDefault);
118118+}
119119+120120+export function validateConfigRegionRuleDefault<V>(v: V) {
121121+ return validate<ConfigRegionRuleDefault & V>(
122122+ v,
123123+ id,
124124+ hashConfigRegionRuleDefault,
125125+ );
126126+}
127127+128128+/** Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age. */
129129+export interface ConfigRegionRuleIfDeclaredOverAge {
130130+ $type?: "app.bsky.ageassurance.defs#configRegionRuleIfDeclaredOverAge";
131131+ /** The age threshold as a whole integer. */
132132+ age: number;
133133+ access: Access;
134134+}
135135+136136+const hashConfigRegionRuleIfDeclaredOverAge =
137137+ "configRegionRuleIfDeclaredOverAge";
138138+139139+export function isConfigRegionRuleIfDeclaredOverAge<V>(v: V) {
140140+ return is$typed(v, id, hashConfigRegionRuleIfDeclaredOverAge);
141141+}
142142+143143+export function validateConfigRegionRuleIfDeclaredOverAge<V>(v: V) {
144144+ return validate<ConfigRegionRuleIfDeclaredOverAge & V>(
145145+ v,
146146+ id,
147147+ hashConfigRegionRuleIfDeclaredOverAge,
148148+ );
149149+}
150150+151151+/** Age Assurance rule that applies if the user has declared themselves under a certain age. */
152152+export interface ConfigRegionRuleIfDeclaredUnderAge {
153153+ $type?: "app.bsky.ageassurance.defs#configRegionRuleIfDeclaredUnderAge";
154154+ /** The age threshold as a whole integer. */
155155+ age: number;
156156+ access: Access;
157157+}
158158+159159+const hashConfigRegionRuleIfDeclaredUnderAge =
160160+ "configRegionRuleIfDeclaredUnderAge";
161161+162162+export function isConfigRegionRuleIfDeclaredUnderAge<V>(v: V) {
163163+ return is$typed(v, id, hashConfigRegionRuleIfDeclaredUnderAge);
164164+}
165165+166166+export function validateConfigRegionRuleIfDeclaredUnderAge<V>(v: V) {
167167+ return validate<ConfigRegionRuleIfDeclaredUnderAge & V>(
168168+ v,
169169+ id,
170170+ hashConfigRegionRuleIfDeclaredUnderAge,
171171+ );
172172+}
173173+174174+/** Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age. */
175175+export interface ConfigRegionRuleIfAssuredOverAge {
176176+ $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAssuredOverAge";
177177+ /** The age threshold as a whole integer. */
178178+ age: number;
179179+ access: Access;
180180+}
181181+182182+const hashConfigRegionRuleIfAssuredOverAge = "configRegionRuleIfAssuredOverAge";
183183+184184+export function isConfigRegionRuleIfAssuredOverAge<V>(v: V) {
185185+ return is$typed(v, id, hashConfigRegionRuleIfAssuredOverAge);
186186+}
187187+188188+export function validateConfigRegionRuleIfAssuredOverAge<V>(v: V) {
189189+ return validate<ConfigRegionRuleIfAssuredOverAge & V>(
190190+ v,
191191+ id,
192192+ hashConfigRegionRuleIfAssuredOverAge,
193193+ );
194194+}
195195+196196+/** Age Assurance rule that applies if the user has been assured to be under a certain age. */
197197+export interface ConfigRegionRuleIfAssuredUnderAge {
198198+ $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAssuredUnderAge";
199199+ /** The age threshold as a whole integer. */
200200+ age: number;
201201+ access: Access;
202202+}
203203+204204+const hashConfigRegionRuleIfAssuredUnderAge =
205205+ "configRegionRuleIfAssuredUnderAge";
206206+207207+export function isConfigRegionRuleIfAssuredUnderAge<V>(v: V) {
208208+ return is$typed(v, id, hashConfigRegionRuleIfAssuredUnderAge);
209209+}
210210+211211+export function validateConfigRegionRuleIfAssuredUnderAge<V>(v: V) {
212212+ return validate<ConfigRegionRuleIfAssuredUnderAge & V>(
213213+ v,
214214+ id,
215215+ hashConfigRegionRuleIfAssuredUnderAge,
216216+ );
217217+}
218218+219219+/** Age Assurance rule that applies if the account is equal-to or newer than a certain date. */
220220+export interface ConfigRegionRuleIfAccountNewerThan {
221221+ $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAccountNewerThan";
222222+ /** The date threshold as a datetime string. */
223223+ date: string;
224224+ access: Access;
225225+}
226226+227227+const hashConfigRegionRuleIfAccountNewerThan =
228228+ "configRegionRuleIfAccountNewerThan";
229229+230230+export function isConfigRegionRuleIfAccountNewerThan<V>(v: V) {
231231+ return is$typed(v, id, hashConfigRegionRuleIfAccountNewerThan);
232232+}
233233+234234+export function validateConfigRegionRuleIfAccountNewerThan<V>(v: V) {
235235+ return validate<ConfigRegionRuleIfAccountNewerThan & V>(
236236+ v,
237237+ id,
238238+ hashConfigRegionRuleIfAccountNewerThan,
239239+ );
240240+}
241241+242242+/** Age Assurance rule that applies if the account is older than a certain date. */
243243+export interface ConfigRegionRuleIfAccountOlderThan {
244244+ $type?: "app.bsky.ageassurance.defs#configRegionRuleIfAccountOlderThan";
245245+ /** The date threshold as a datetime string. */
246246+ date: string;
247247+ access: Access;
248248+}
249249+250250+const hashConfigRegionRuleIfAccountOlderThan =
251251+ "configRegionRuleIfAccountOlderThan";
252252+253253+export function isConfigRegionRuleIfAccountOlderThan<V>(v: V) {
254254+ return is$typed(v, id, hashConfigRegionRuleIfAccountOlderThan);
255255+}
256256+257257+export function validateConfigRegionRuleIfAccountOlderThan<V>(v: V) {
258258+ return validate<ConfigRegionRuleIfAccountOlderThan & V>(
259259+ v,
260260+ id,
261261+ hashConfigRegionRuleIfAccountOlderThan,
262262+ );
263263+}
264264+265265+/** Object used to store Age Assurance data in stash. */
266266+export interface Event {
267267+ $type?: "app.bsky.ageassurance.defs#event";
268268+ /** The date and time of this write operation. */
269269+ createdAt: string;
270270+ /** The unique identifier for this instance of the Age Assurance flow, in UUID format. */
271271+ attemptId: string;
272272+ /** The status of the Age Assurance process. */
273273+ status:
274274+ | "unknown"
275275+ | "pending"
276276+ | "assured"
277277+ | "blocked"
278278+ | (string & globalThis.Record<PropertyKey, never>);
279279+ /** The access level granted based on Age Assurance data we've processed. */
280280+ access:
281281+ | "unknown"
282282+ | "none"
283283+ | "safe"
284284+ | "full"
285285+ | (string & globalThis.Record<PropertyKey, never>);
286286+ /** The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow. */
287287+ countryCode: string;
288288+ /** The ISO 3166-2 region code provided when beginning the Age Assurance flow. */
289289+ regionCode?: string;
290290+ /** The email used for Age Assurance. */
291291+ email?: string;
292292+ /** The IP address used when initiating the Age Assurance flow. */
293293+ initIp?: string;
294294+ /** The user agent used when initiating the Age Assurance flow. */
295295+ initUa?: string;
296296+ /** The IP address used when completing the Age Assurance flow. */
297297+ completeIp?: string;
298298+ /** The user agent used when completing the Age Assurance flow. */
299299+ completeUa?: string;
300300+}
301301+302302+const hashEvent = "event";
303303+304304+export function isEvent<V>(v: V) {
305305+ return is$typed(v, id, hashEvent);
306306+}
307307+308308+export function validateEvent<V>(v: V) {
309309+ return validate<Event & V>(v, id, hashEvent);
310310+}
+22
lex/types/app/bsky/ageassurance/getConfig.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyAgeassuranceDefs from "./defs.ts";
55+66+export type QueryParams = globalThis.Record<PropertyKey, never>;
77+export type InputSchema = undefined;
88+export type OutputSchema = AppBskyAgeassuranceDefs.Config;
99+export type HandlerInput = void;
1010+1111+export interface HandlerSuccess {
1212+ encoding: "application/json";
1313+ body: OutputSchema;
1414+ headers?: { [key: string]: string };
1515+}
1616+1717+export interface HandlerError {
1818+ status: number;
1919+ message?: string;
2020+}
2121+2222+export type HandlerOutput = HandlerError | HandlerSuccess;
+30
lex/types/app/bsky/ageassurance/getState.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyAgeassuranceDefs from "./defs.ts";
55+66+export type QueryParams = {
77+ countryCode: string;
88+ regionCode?: string;
99+};
1010+export type InputSchema = undefined;
1111+1212+export interface OutputSchema {
1313+ state: AppBskyAgeassuranceDefs.State;
1414+ metadata: AppBskyAgeassuranceDefs.StateMetadata;
1515+}
1616+1717+export type HandlerInput = void;
1818+1919+export interface HandlerSuccess {
2020+ encoding: "application/json";
2121+ body: OutputSchema;
2222+ headers?: { [key: string]: string };
2323+}
2424+2525+export interface HandlerError {
2626+ status: number;
2727+ message?: string;
2828+}
2929+3030+export type HandlerOutput = HandlerError | HandlerSuccess;
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyBookmarkDefs from "./defs.ts";
55+66+export type QueryParams = {
77+ limit: number;
88+ cursor?: string;
99+};
1010+export type InputSchema = undefined;
1111+1212+export interface OutputSchema {
1313+ cursor?: string;
1414+ bookmarks: (AppBskyBookmarkDefs.BookmarkView)[];
1515+}
1616+1717+export type HandlerInput = void;
1818+1919+export interface HandlerSuccess {
2020+ encoding: "application/json";
2121+ body: OutputSchema;
2222+ headers?: { [key: string]: string };
2323+}
2424+2525+export interface HandlerError {
2626+ status: number;
2727+ message?: string;
2828+}
2929+3030+export type HandlerOutput = HandlerError | HandlerSuccess;
+1
lex/types/app/bsky/embed/video.ts
···11111212export interface Main {
1313 $type?: "app.bsky.embed.video";
1414+ /** The mp4 video file. May be up to 100mb, formerly limited to 50mb. */
1415 video: BlobRef;
1516 captions?: (Caption)[];
1617 /** Alt text description of the video, for accessibility. */
+10
lex/types/app/bsky/feed/defs.ts
···3030 | $Typed<AppBskyEmbedRecord.View>
3131 | $Typed<AppBskyEmbedRecordWithMedia.View>
3232 | { $type: string };
3333+ bookmarkCount?: number;
3334 replyCount?: number;
3435 repostCount?: number;
3536 likeCount?: number;
···3839 viewer?: ViewerState;
3940 labels?: (ComAtprotoLabelDefs.Label)[];
4041 threadgate?: ThreadgateView;
4242+ /** Debug information for internal development */
4343+ debug?: { [_ in string]: unknown };
4144}
42454346const hashPostView = "postView";
···5558 $type?: "app.bsky.feed.defs#viewerState";
5659 repost?: string;
5760 like?: string;
6161+ bookmarked?: boolean;
5862 threadMuted?: boolean;
5963 replyDisabled?: boolean;
6064 embeddingDisabled?: boolean;
···9498 reason?: $Typed<ReasonRepost> | $Typed<ReasonPin> | { $type: string };
9599 /** Context provided by feed generator that may be passed back alongside interactions. */
96100 feedContext?: string;
101101+ /** Unique identifier per request that may be passed back alongside interactions. */
102102+ reqId?: string;
97103}
9810499105const hashFeedViewPost = "feedViewPost";
···130136export interface ReasonRepost {
131137 $type?: "app.bsky.feed.defs#reasonRepost";
132138 by: AppBskyActorDefs.ProfileViewBasic;
139139+ uri?: string;
140140+ cid?: string;
133141 indexedAt: string;
134142}
135143···363371 | (string & globalThis.Record<PropertyKey, never>);
364372 /** Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton. */
365373 feedContext?: string;
374374+ /** Unique identifier per request that may be passed back alongside interactions. */
375375+ reqId?: string;
366376}
367377368378const hashInteraction = "interaction";
+2
lex/types/app/bsky/feed/getFeedSkeleton.ts
···1414export interface OutputSchema {
1515 cursor?: string;
1616 feed: (AppBskyFeedDefs.SkeletonFeedPost)[];
1717+ /** Unique identifier per request that may be passed back alongside interactions. */
1818+ reqId?: string;
1719}
18201921export type HandlerInput = void;
+2
lex/types/app/bsky/graph/follow.ts
···33 */
44import { validate as _validate } from "../../../../lexicons.ts";
55import { is$typed as _is$typed } from "../../../../util.ts";
66+import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts";
6778const is$typed = _is$typed, validate = _validate;
89const id = "app.bsky.graph.follow";
···1112 $type: "app.bsky.graph.follow";
1213 subject: string;
1314 createdAt: string;
1515+ via?: ComAtprotoRepoStrongRef.Main;
1416 [k: string]: unknown;
1517}
1618
+5
lex/types/app/bsky/graph/getLists.ts
···88 actor: string;
99 limit: number;
1010 cursor?: string;
1111+ /** Optional filter by list purpose. If not specified, all supported types are returned. */
1212+ purposes?:
1313+ | "modlist"
1414+ | "curatelist"
1515+ | (string & globalThis.Record<PropertyKey, never>)[];
1116};
1217export type InputSchema = undefined;
1318
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+import type * as AppBskyGraphDefs from "./defs.ts";
77+88+const is$typed = _is$typed, validate = _validate;
99+const id = "app.bsky.graph.getStarterPacksWithMembership";
1010+1111+export type QueryParams = {
1212+ /** The account (actor) to check for membership. */
1313+ actor: string;
1414+ limit: number;
1515+ cursor?: string;
1616+};
1717+export type InputSchema = undefined;
1818+1919+export interface OutputSchema {
2020+ cursor?: string;
2121+ starterPacksWithMembership: (StarterPackWithMembership)[];
2222+}
2323+2424+export type HandlerInput = void;
2525+2626+export interface HandlerSuccess {
2727+ encoding: "application/json";
2828+ body: OutputSchema;
2929+ headers?: { [key: string]: string };
3030+}
3131+3232+export interface HandlerError {
3333+ status: number;
3434+ message?: string;
3535+}
3636+3737+export type HandlerOutput = HandlerError | HandlerSuccess;
3838+3939+/** A starter pack and an optional list item indicating membership of a target user to that starter pack. */
4040+export interface StarterPackWithMembership {
4141+ $type?:
4242+ "app.bsky.graph.getStarterPacksWithMembership#starterPackWithMembership";
4343+ starterPack: AppBskyGraphDefs.StarterPackView;
4444+ listItem?: AppBskyGraphDefs.ListItemView;
4545+}
4646+4747+const hashStarterPackWithMembership = "starterPackWithMembership";
4848+4949+export function isStarterPackWithMembership<V>(v: V) {
5050+ return is$typed(v, id, hashStarterPackWithMembership);
5151+}
5252+5353+export function validateStarterPackWithMembership<V>(v: V) {
5454+ return validate<StarterPackWithMembership & V>(
5555+ v,
5656+ id,
5757+ hashStarterPackWithMembership,
5858+ );
5959+}
+31
lex/types/app/bsky/graph/verification.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+77+const is$typed = _is$typed, validate = _validate;
88+const id = "app.bsky.graph.verification";
99+1010+export interface Record {
1111+ $type: "app.bsky.graph.verification";
1212+ /** DID of the subject the verification applies to. */
1313+ subject: string;
1414+ /** Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying. */
1515+ handle: string;
1616+ /** Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying. */
1717+ displayName: string;
1818+ /** Date of when the verification was created. */
1919+ createdAt: string;
2020+ [k: string]: unknown;
2121+}
2222+2323+const hashRecord = "main";
2424+2525+export function isRecord<V>(v: V) {
2626+ return is$typed(v, id, hashRecord);
2727+}
2828+2929+export function validateRecord<V>(v: V) {
3030+ return validate<Record & V>(v, id, hashRecord, true);
3131+}
+29
lex/types/app/bsky/notification/declaration.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+77+const is$typed = _is$typed, validate = _validate;
88+const id = "app.bsky.notification.declaration";
99+1010+export interface Record {
1111+ $type: "app.bsky.notification.declaration";
1212+ /** A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'. */
1313+ allowSubscriptions:
1414+ | "followers"
1515+ | "mutuals"
1616+ | "none"
1717+ | (string & globalThis.Record<PropertyKey, never>);
1818+ [k: string]: unknown;
1919+}
2020+2121+const hashRecord = "main";
2222+2323+export function isRecord<V>(v: V) {
2424+ return is$typed(v, id, hashRecord);
2525+}
2626+2727+export function validateRecord<V>(v: V) {
2828+ return validate<Record & V>(v, id, hashRecord, true);
2929+}
···1212 | "web"
1313 | (string & globalThis.Record<PropertyKey, never>);
1414 appId: string;
1515+ /** Set to true when the actor is age restricted */
1616+ ageRestricted?: boolean;
1517}
16181719export interface HandlerInput {
···33 */
44import { validate as _validate } from "../../../../lexicons.ts";
55import { is$typed as _is$typed } from "../../../../util.ts";
66+import type * as AppBskyActorDefs from "../actor/defs.ts";
77+import type * as AppBskyFeedDefs from "../feed/defs.ts";
6879const is$typed = _is$typed, validate = _validate;
810const id = "app.bsky.unspecced.defs";
···7375export function validateTrendingTopic<V>(v: V) {
7476 return validate<TrendingTopic & V>(v, id, hashTrendingTopic);
7577}
7878+7979+export interface SkeletonTrend {
8080+ $type?: "app.bsky.unspecced.defs#skeletonTrend";
8181+ topic: string;
8282+ displayName: string;
8383+ link: string;
8484+ startedAt: string;
8585+ postCount: number;
8686+ status?: "hot" | (string & globalThis.Record<PropertyKey, never>);
8787+ category?: string;
8888+ dids: (string)[];
8989+}
9090+9191+const hashSkeletonTrend = "skeletonTrend";
9292+9393+export function isSkeletonTrend<V>(v: V) {
9494+ return is$typed(v, id, hashSkeletonTrend);
9595+}
9696+9797+export function validateSkeletonTrend<V>(v: V) {
9898+ return validate<SkeletonTrend & V>(v, id, hashSkeletonTrend);
9999+}
100100+101101+export interface TrendView {
102102+ $type?: "app.bsky.unspecced.defs#trendView";
103103+ topic: string;
104104+ displayName: string;
105105+ link: string;
106106+ startedAt: string;
107107+ postCount: number;
108108+ status?: "hot" | (string & globalThis.Record<PropertyKey, never>);
109109+ category?: string;
110110+ actors: (AppBskyActorDefs.ProfileViewBasic)[];
111111+}
112112+113113+const hashTrendView = "trendView";
114114+115115+export function isTrendView<V>(v: V) {
116116+ return is$typed(v, id, hashTrendView);
117117+}
118118+119119+export function validateTrendView<V>(v: V) {
120120+ return validate<TrendView & V>(v, id, hashTrendView);
121121+}
122122+123123+export interface ThreadItemPost {
124124+ $type?: "app.bsky.unspecced.defs#threadItemPost";
125125+ post: AppBskyFeedDefs.PostView;
126126+ /** This post has more parents that were not present in the response. This is just a boolean, without the number of parents. */
127127+ moreParents: boolean;
128128+ /** This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate. */
129129+ moreReplies: number;
130130+ /** This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread. */
131131+ opThread: boolean;
132132+ /** The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread. */
133133+ hiddenByThreadgate: boolean;
134134+ /** This is by an account muted by the viewer requesting it. */
135135+ mutedByViewer: boolean;
136136+}
137137+138138+const hashThreadItemPost = "threadItemPost";
139139+140140+export function isThreadItemPost<V>(v: V) {
141141+ return is$typed(v, id, hashThreadItemPost);
142142+}
143143+144144+export function validateThreadItemPost<V>(v: V) {
145145+ return validate<ThreadItemPost & V>(v, id, hashThreadItemPost);
146146+}
147147+148148+export interface ThreadItemNoUnauthenticated {
149149+ $type?: "app.bsky.unspecced.defs#threadItemNoUnauthenticated";
150150+}
151151+152152+const hashThreadItemNoUnauthenticated = "threadItemNoUnauthenticated";
153153+154154+export function isThreadItemNoUnauthenticated<V>(v: V) {
155155+ return is$typed(v, id, hashThreadItemNoUnauthenticated);
156156+}
157157+158158+export function validateThreadItemNoUnauthenticated<V>(v: V) {
159159+ return validate<ThreadItemNoUnauthenticated & V>(
160160+ v,
161161+ id,
162162+ hashThreadItemNoUnauthenticated,
163163+ );
164164+}
165165+166166+export interface ThreadItemNotFound {
167167+ $type?: "app.bsky.unspecced.defs#threadItemNotFound";
168168+}
169169+170170+const hashThreadItemNotFound = "threadItemNotFound";
171171+172172+export function isThreadItemNotFound<V>(v: V) {
173173+ return is$typed(v, id, hashThreadItemNotFound);
174174+}
175175+176176+export function validateThreadItemNotFound<V>(v: V) {
177177+ return validate<ThreadItemNotFound & V>(v, id, hashThreadItemNotFound);
178178+}
179179+180180+export interface ThreadItemBlocked {
181181+ $type?: "app.bsky.unspecced.defs#threadItemBlocked";
182182+ author: AppBskyFeedDefs.BlockedAuthor;
183183+}
184184+185185+const hashThreadItemBlocked = "threadItemBlocked";
186186+187187+export function isThreadItemBlocked<V>(v: V) {
188188+ return is$typed(v, id, hashThreadItemBlocked);
189189+}
190190+191191+export function validateThreadItemBlocked<V>(v: V) {
192192+ return validate<ThreadItemBlocked & V>(v, id, hashThreadItemBlocked);
193193+}
194194+195195+/** The computed state of the age assurance process, returned to the user in question on certain authenticated requests. */
196196+export interface AgeAssuranceState {
197197+ $type?: "app.bsky.unspecced.defs#ageAssuranceState";
198198+ /** The timestamp when this state was last updated. */
199199+ lastInitiatedAt?: string;
200200+ /** The status of the age assurance process. */
201201+ status:
202202+ | "unknown"
203203+ | "pending"
204204+ | "assured"
205205+ | "blocked"
206206+ | (string & globalThis.Record<PropertyKey, never>);
207207+}
208208+209209+const hashAgeAssuranceState = "ageAssuranceState";
210210+211211+export function isAgeAssuranceState<V>(v: V) {
212212+ return is$typed(v, id, hashAgeAssuranceState);
213213+}
214214+215215+export function validateAgeAssuranceState<V>(v: V) {
216216+ return validate<AgeAssuranceState & V>(v, id, hashAgeAssuranceState);
217217+}
218218+219219+/** Object used to store age assurance data in stash. */
220220+export interface AgeAssuranceEvent {
221221+ $type?: "app.bsky.unspecced.defs#ageAssuranceEvent";
222222+ /** The date and time of this write operation. */
223223+ createdAt: string;
224224+ /** The status of the age assurance process. */
225225+ status:
226226+ | "unknown"
227227+ | "pending"
228228+ | "assured"
229229+ | (string & globalThis.Record<PropertyKey, never>);
230230+ /** The unique identifier for this instance of the age assurance flow, in UUID format. */
231231+ attemptId: string;
232232+ /** The email used for AA. */
233233+ email?: string;
234234+ /** The IP address used when initiating the AA flow. */
235235+ initIp?: string;
236236+ /** The user agent used when initiating the AA flow. */
237237+ initUa?: string;
238238+ /** The IP address used when completing the AA flow. */
239239+ completeIp?: string;
240240+ /** The user agent used when completing the AA flow. */
241241+ completeUa?: string;
242242+}
243243+244244+const hashAgeAssuranceEvent = "ageAssuranceEvent";
245245+246246+export function isAgeAssuranceEvent<V>(v: V) {
247247+ return is$typed(v, id, hashAgeAssuranceEvent);
248248+}
249249+250250+export function validateAgeAssuranceEvent<V>(v: V) {
251251+ return validate<AgeAssuranceEvent & V>(v, id, hashAgeAssuranceEvent);
252252+}
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+import { type $Typed } from "../../../../util.ts";
77+import type * as AppBskyUnspeccedDefs from "./defs.ts";
88+99+const is$typed = _is$typed, validate = _validate;
1010+const id = "app.bsky.unspecced.getPostThreadOtherV2";
1111+1212+export type QueryParams = {
1313+ /** Reference (AT-URI) to post record. This is the anchor post. */
1414+ anchor: string;
1515+};
1616+export type InputSchema = undefined;
1717+1818+export interface OutputSchema {
1919+ /** A flat list of other thread items. The depth of each item is indicated by the depth property inside the item. */
2020+ thread: (ThreadItem)[];
2121+}
2222+2323+export type HandlerInput = void;
2424+2525+export interface HandlerSuccess {
2626+ encoding: "application/json";
2727+ body: OutputSchema;
2828+ headers?: { [key: string]: string };
2929+}
3030+3131+export interface HandlerError {
3232+ status: number;
3333+ message?: string;
3434+}
3535+3636+export type HandlerOutput = HandlerError | HandlerSuccess;
3737+3838+export interface ThreadItem {
3939+ $type?: "app.bsky.unspecced.getPostThreadOtherV2#threadItem";
4040+ uri: string;
4141+ /** The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths. */
4242+ depth: number;
4343+ value: $Typed<AppBskyUnspeccedDefs.ThreadItemPost> | { $type: string };
4444+}
4545+4646+const hashThreadItem = "threadItem";
4747+4848+export function isThreadItem<V>(v: V) {
4949+ return is$typed(v, id, hashThreadItem);
5050+}
5151+5252+export function validateThreadItem<V>(v: V) {
5353+ return validate<ThreadItem & V>(v, id, hashThreadItem);
5454+}
+75
lex/types/app/bsky/unspecced/getPostThreadV2.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+import { type $Typed } from "../../../../util.ts";
77+import type * as AppBskyFeedDefs from "../feed/defs.ts";
88+import type * as AppBskyUnspeccedDefs from "./defs.ts";
99+1010+const is$typed = _is$typed, validate = _validate;
1111+const id = "app.bsky.unspecced.getPostThreadV2";
1212+1313+export type QueryParams = {
1414+ /** Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post. */
1515+ anchor: string;
1616+ /** Whether to include parents above the anchor. */
1717+ above: boolean;
1818+ /** How many levels of replies to include below the anchor. */
1919+ below: number;
2020+ /** Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated). */
2121+ branchingFactor: number;
2222+ /** Sorting for the thread replies. */
2323+ sort:
2424+ | "newest"
2525+ | "oldest"
2626+ | "top"
2727+ | (string & globalThis.Record<PropertyKey, never>);
2828+};
2929+export type InputSchema = undefined;
3030+3131+export interface OutputSchema {
3232+ /** A flat list of thread items. The depth of each item is indicated by the depth property inside the item. */
3333+ thread: (ThreadItem)[];
3434+ threadgate?: AppBskyFeedDefs.ThreadgateView;
3535+ /** Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them. */
3636+ hasOtherReplies: boolean;
3737+}
3838+3939+export type HandlerInput = void;
4040+4141+export interface HandlerSuccess {
4242+ encoding: "application/json";
4343+ body: OutputSchema;
4444+ headers?: { [key: string]: string };
4545+}
4646+4747+export interface HandlerError {
4848+ status: number;
4949+ message?: string;
5050+}
5151+5252+export type HandlerOutput = HandlerError | HandlerSuccess;
5353+5454+export interface ThreadItem {
5555+ $type?: "app.bsky.unspecced.getPostThreadV2#threadItem";
5656+ uri: string;
5757+ /** The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths. */
5858+ depth: number;
5959+ value:
6060+ | $Typed<AppBskyUnspeccedDefs.ThreadItemPost>
6161+ | $Typed<AppBskyUnspeccedDefs.ThreadItemNoUnauthenticated>
6262+ | $Typed<AppBskyUnspeccedDefs.ThreadItemNotFound>
6363+ | $Typed<AppBskyUnspeccedDefs.ThreadItemBlocked>
6464+ | { $type: string };
6565+}
6666+6767+const hashThreadItem = "threadItem";
6868+6969+export function isThreadItem<V>(v: V) {
7070+ return is$typed(v, id, hashThreadItem);
7171+}
7272+7373+export function validateThreadItem<V>(v: V) {
7474+ return validate<ThreadItem & V>(v, id, hashThreadItem);
7575+}
+28
lex/types/app/bsky/unspecced/getSuggestedFeeds.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyFeedDefs from "../feed/defs.ts";
55+66+export type QueryParams = {
77+ limit: number;
88+};
99+export type InputSchema = undefined;
1010+1111+export interface OutputSchema {
1212+ feeds: (AppBskyFeedDefs.GeneratorView)[];
1313+}
1414+1515+export type HandlerInput = void;
1616+1717+export interface HandlerSuccess {
1818+ encoding: "application/json";
1919+ body: OutputSchema;
2020+ headers?: { [key: string]: string };
2121+}
2222+2323+export interface HandlerError {
2424+ status: number;
2525+ message?: string;
2626+}
2727+2828+export type HandlerOutput = HandlerError | HandlerSuccess;
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+export type QueryParams = {
55+ /** DID of the account making the request (not included for public/unauthenticated queries). */
66+ viewer?: string;
77+ /** Category of users to get suggestions for. */
88+ category?: string;
99+ limit: number;
1010+};
1111+export type InputSchema = undefined;
1212+1313+export interface OutputSchema {
1414+ dids: (string)[];
1515+}
1616+1717+export type HandlerInput = void;
1818+1919+export interface HandlerSuccess {
2020+ encoding: "application/json";
2121+ body: OutputSchema;
2222+ headers?: { [key: string]: string };
2323+}
2424+2525+export interface HandlerError {
2626+ status: number;
2727+ message?: string;
2828+}
2929+3030+export type HandlerOutput = HandlerError | HandlerSuccess;
+28
lex/types/app/bsky/unspecced/getTrends.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyUnspeccedDefs from "./defs.ts";
55+66+export type QueryParams = {
77+ limit: number;
88+};
99+export type InputSchema = undefined;
1010+1111+export interface OutputSchema {
1212+ trends: (AppBskyUnspeccedDefs.TrendView)[];
1313+}
1414+1515+export type HandlerInput = void;
1616+1717+export interface HandlerSuccess {
1818+ encoding: "application/json";
1919+ body: OutputSchema;
2020+ headers?: { [key: string]: string };
2121+}
2222+2323+export interface HandlerError {
2424+ status: number;
2525+ message?: string;
2626+}
2727+2828+export type HandlerOutput = HandlerError | HandlerSuccess;
+30
lex/types/app/bsky/unspecced/getTrendsSkeleton.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyUnspeccedDefs from "./defs.ts";
55+66+export type QueryParams = {
77+ /** DID of the account making the request (not included for public/unauthenticated queries). */
88+ viewer?: string;
99+ limit: number;
1010+};
1111+export type InputSchema = undefined;
1212+1313+export interface OutputSchema {
1414+ trends: (AppBskyUnspeccedDefs.SkeletonTrend)[];
1515+}
1616+1717+export type HandlerInput = void;
1818+1919+export interface HandlerSuccess {
2020+ encoding: "application/json";
2121+ body: OutputSchema;
2222+ headers?: { [key: string]: string };
2323+}
2424+2525+export interface HandlerError {
2626+ status: number;
2727+ message?: string;
2828+}
2929+3030+export type HandlerOutput = HandlerError | HandlerSuccess;
+36
lex/types/app/bsky/unspecced/initAgeAssurance.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as AppBskyUnspeccedDefs from "./defs.ts";
55+66+export type QueryParams = globalThis.Record<PropertyKey, never>;
77+88+export interface InputSchema {
99+ /** The user's email address to receive assurance instructions. */
1010+ email: string;
1111+ /** The user's preferred language for communication during the assurance process. */
1212+ language: string;
1313+ /** An ISO 3166-1 alpha-2 code of the user's location. */
1414+ countryCode: string;
1515+}
1616+1717+export type OutputSchema = AppBskyUnspeccedDefs.AgeAssuranceState;
1818+1919+export interface HandlerInput {
2020+ encoding: "application/json";
2121+ body: InputSchema;
2222+}
2323+2424+export interface HandlerSuccess {
2525+ encoding: "application/json";
2626+ body: OutputSchema;
2727+ headers?: { [key: string]: string };
2828+}
2929+3030+export interface HandlerError {
3131+ status: number;
3232+ message?: string;
3333+ error?: "InvalidEmail" | "DidTooLong" | "InvalidInitiation";
3434+}
3535+3636+export type HandlerOutput = HandlerError | HandlerSuccess;
+2-1
lex/types/chat/bsky/actor/defs.ts
···1818 associated?: AppBskyActorDefs.ProfileAssociated;
1919 viewer?: AppBskyActorDefs.ViewerState;
2020 labels?: (ComAtprotoLabelDefs.Label)[];
2121- /** Set to true when the actor cannot actively participate in converations */
2121+ /** Set to true when the actor cannot actively participate in conversations */
2222 chatDisabled?: boolean;
2323+ verification?: AppBskyActorDefs.VerificationState;
2324}
24252526const hashProfileViewBasic = "profileViewBasic";
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+77+const is$typed = _is$typed, validate = _validate;
88+const id = "com.atproto.identity.defs";
99+1010+export interface IdentityInfo {
1111+ $type?: "com.atproto.identity.defs#identityInfo";
1212+ did: string;
1313+ /** The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document. */
1414+ handle: string;
1515+ /** The complete DID document for the identity. */
1616+ didDoc: { [_ in string]: unknown };
1717+}
1818+1919+const hashIdentityInfo = "identityInfo";
2020+2121+export function isIdentityInfo<V>(v: V) {
2222+ return is$typed(v, id, hashIdentityInfo);
2323+}
2424+2525+export function validateIdentityInfo<V>(v: V) {
2626+ return validate<IdentityInfo & V>(v, id, hashIdentityInfo);
2727+}
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as ComAtprotoIdentityDefs from "./defs.ts";
55+66+export type QueryParams = {
77+ /** Handle or DID to resolve. */
88+ identifier: string;
99+};
1010+export type InputSchema = undefined;
1111+export type OutputSchema = ComAtprotoIdentityDefs.IdentityInfo;
1212+export type HandlerInput = void;
1313+1414+export interface HandlerSuccess {
1515+ encoding: "application/json";
1616+ body: OutputSchema;
1717+ headers?: { [key: string]: string };
1818+}
1919+2020+export interface HandlerError {
2121+ status: number;
2222+ message?: string;
2323+ error?: "HandleNotFound" | "DidNotFound" | "DidDeactivated";
2424+}
2525+2626+export type HandlerOutput = HandlerError | HandlerSuccess;
+34
lex/types/com/atproto/lexicon/resolveLexicon.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as ComAtprotoLexiconSchema from "./schema.ts";
55+66+export type QueryParams = {
77+ /** The lexicon NSID to resolve. */
88+ nsid: string;
99+};
1010+export type InputSchema = undefined;
1111+1212+export interface OutputSchema {
1313+ /** The CID of the lexicon schema record. */
1414+ cid: string;
1515+ schema: ComAtprotoLexiconSchema.Main;
1616+ /** The AT-URI of the lexicon schema record. */
1717+ uri: string;
1818+}
1919+2020+export type HandlerInput = void;
2121+2222+export interface HandlerSuccess {
2323+ encoding: "application/json";
2424+ body: OutputSchema;
2525+ headers?: { [key: string]: string };
2626+}
2727+2828+export interface HandlerError {
2929+ status: number;
3030+ message?: string;
3131+ error?: "LexiconNotFound";
3232+}
3333+3434+export type HandlerOutput = HandlerError | HandlerSuccess;
+25
lex/types/com/atproto/moderation/createReport.ts
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
46import { type $Typed } from "../../../../util.ts";
57import type * as ComAtprotoModerationDefs from "./defs.ts";
68import type * as ComAtprotoAdminDefs from "../admin/defs.ts";
79import type * as ComAtprotoRepoStrongRef from "../repo/strongRef.ts";
1010+1111+const is$typed = _is$typed, validate = _validate;
1212+const id = "com.atproto.moderation.createReport";
813914export type QueryParams = globalThis.Record<PropertyKey, never>;
1015···1621 | $Typed<ComAtprotoAdminDefs.RepoRef>
1722 | $Typed<ComAtprotoRepoStrongRef.Main>
1823 | { $type: string };
2424+ modTool?: ModTool;
1925}
20262127export interface OutputSchema {
···4753}
48544955export type HandlerOutput = HandlerError | HandlerSuccess;
5656+5757+/** Moderation tool information for tracing the source of the action */
5858+export interface ModTool {
5959+ $type?: "com.atproto.moderation.createReport#modTool";
6060+ /** Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome') */
6161+ name: string;
6262+ /** Additional arbitrary metadata about the source */
6363+ meta?: { [_ in string]: unknown };
6464+}
6565+6666+const hashModTool = "modTool";
6767+6868+export function isModTool<V>(v: V) {
6969+ return is$typed(v, id, hashModTool);
7070+}
7171+7272+export function validateModTool<V>(v: V) {
7373+ return validate<ModTool & V>(v, id, hashModTool);
7474+}
+47-7
lex/types/com/atproto/moderation/defs.ts
···1111 | "com.atproto.moderation.defs#reasonRude"
1212 | "com.atproto.moderation.defs#reasonOther"
1313 | "com.atproto.moderation.defs#reasonAppeal"
1414+ | "tools.ozone.report.defs#reasonAppeal"
1515+ | "tools.ozone.report.defs#reasonOther"
1616+ | "tools.ozone.report.defs#reasonViolenceAnimal"
1717+ | "tools.ozone.report.defs#reasonViolenceThreats"
1818+ | "tools.ozone.report.defs#reasonViolenceGraphicContent"
1919+ | "tools.ozone.report.defs#reasonViolenceGlorification"
2020+ | "tools.ozone.report.defs#reasonViolenceExtremistContent"
2121+ | "tools.ozone.report.defs#reasonViolenceTrafficking"
2222+ | "tools.ozone.report.defs#reasonViolenceOther"
2323+ | "tools.ozone.report.defs#reasonSexualAbuseContent"
2424+ | "tools.ozone.report.defs#reasonSexualNCII"
2525+ | "tools.ozone.report.defs#reasonSexualDeepfake"
2626+ | "tools.ozone.report.defs#reasonSexualAnimal"
2727+ | "tools.ozone.report.defs#reasonSexualUnlabeled"
2828+ | "tools.ozone.report.defs#reasonSexualOther"
2929+ | "tools.ozone.report.defs#reasonChildSafetyCSAM"
3030+ | "tools.ozone.report.defs#reasonChildSafetyGroom"
3131+ | "tools.ozone.report.defs#reasonChildSafetyPrivacy"
3232+ | "tools.ozone.report.defs#reasonChildSafetyHarassment"
3333+ | "tools.ozone.report.defs#reasonChildSafetyOther"
3434+ | "tools.ozone.report.defs#reasonHarassmentTroll"
3535+ | "tools.ozone.report.defs#reasonHarassmentTargeted"
3636+ | "tools.ozone.report.defs#reasonHarassmentHateSpeech"
3737+ | "tools.ozone.report.defs#reasonHarassmentDoxxing"
3838+ | "tools.ozone.report.defs#reasonHarassmentOther"
3939+ | "tools.ozone.report.defs#reasonMisleadingBot"
4040+ | "tools.ozone.report.defs#reasonMisleadingImpersonation"
4141+ | "tools.ozone.report.defs#reasonMisleadingSpam"
4242+ | "tools.ozone.report.defs#reasonMisleadingScam"
4343+ | "tools.ozone.report.defs#reasonMisleadingElections"
4444+ | "tools.ozone.report.defs#reasonMisleadingOther"
4545+ | "tools.ozone.report.defs#reasonRuleSiteSecurity"
4646+ | "tools.ozone.report.defs#reasonRuleProhibitedSales"
4747+ | "tools.ozone.report.defs#reasonRuleBanEvasion"
4848+ | "tools.ozone.report.defs#reasonRuleOther"
4949+ | "tools.ozone.report.defs#reasonSelfHarmContent"
5050+ | "tools.ozone.report.defs#reasonSelfHarmED"
5151+ | "tools.ozone.report.defs#reasonSelfHarmStunts"
5252+ | "tools.ozone.report.defs#reasonSelfHarmSubstances"
5353+ | "tools.ozone.report.defs#reasonSelfHarmOther"
1454 | (string & globalThis.Record<PropertyKey, never>);
15551616-/** Spam: frequent unwanted promotion, replies, mentions */
5656+/** Spam: frequent unwanted promotion, replies, mentions. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingSpam`. */
1757export const REASONSPAM = `${id}#reasonSpam`;
1818-/** Direct violation of server rules, laws, terms of service */
5858+/** Direct violation of server rules, laws, terms of service. Prefer new lexicon definition `tools.ozone.report.defs#reasonRuleOther`. */
1959export const REASONVIOLATION = `${id}#reasonViolation`;
2020-/** Misleading identity, affiliation, or content */
6060+/** Misleading identity, affiliation, or content. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingOther`. */
2161export const REASONMISLEADING = `${id}#reasonMisleading`;
2222-/** Unwanted or mislabeled sexual content */
6262+/** Unwanted or mislabeled sexual content. Prefer new lexicon definition `tools.ozone.report.defs#reasonSexualUnlabeled`. */
2363export const REASONSEXUAL = `${id}#reasonSexual`;
2424-/** Rude, harassing, explicit, or otherwise unwelcoming behavior */
6464+/** Rude, harassing, explicit, or otherwise unwelcoming behavior. Prefer new lexicon definition `tools.ozone.report.defs#reasonHarassmentOther`. */
2565export const REASONRUDE = `${id}#reasonRude`;
2626-/** Other: reports not falling under another report category */
6666+/** Reports not falling under another report category. Prefer new lexicon definition `tools.ozone.report.defs#reasonOther`. */
2767export const REASONOTHER = `${id}#reasonOther`;
2828-/** Appeal: appeal a previously taken moderation action */
6868+/** Appeal a previously taken moderation action */
2969export const REASONAPPEAL = `${id}#reasonAppeal`;
30703171/** Tag describing a type of subject that might be reported. */
+1
lex/types/com/atproto/repo/applyWrites.ts
···5050export interface Create {
5151 $type?: "com.atproto.repo.applyWrites#create";
5252 collection: string;
5353+ /** NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility. */
5354 rkey?: string;
5455 value: { [_ in string]: unknown };
5556}
-4
lex/types/com/atproto/repo/listRecords.ts
···1515 /** The number of records to return. */
1616 limit: number;
1717 cursor?: string;
1818- /** DEPRECATED: The lowest sort-ordered rkey to start from (exclusive) */
1919- rkeyStart?: string;
2020- /** DEPRECATED: The highest sort-ordered rkey to stop at (exclusive) */
2121- rkeyEnd?: string;
2218 /** Flag to reverse the order of the returned records. */
2319 reverse?: boolean;
2420};
+12
lex/types/com/atproto/sync/defs.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+const id = "com.atproto.sync.defs";
55+66+export type HostStatus =
77+ | "active"
88+ | "idle"
99+ | "offline"
1010+ | "throttled"
1111+ | "banned"
1212+ | (string & globalThis.Record<PropertyKey, never>);
+35
lex/types/com/atproto/sync/getHostStatus.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as ComAtprotoSyncDefs from "./defs.ts";
55+66+export type QueryParams = {
77+ /** Hostname of the host (eg, PDS or relay) being queried. */
88+ hostname: string;
99+};
1010+export type InputSchema = undefined;
1111+1212+export interface OutputSchema {
1313+ hostname: string;
1414+ /** Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor). */
1515+ seq?: number;
1616+ /** Number of accounts on the server which are associated with the upstream host. Note that the upstream may actually have more accounts. */
1717+ accountCount?: number;
1818+ status?: ComAtprotoSyncDefs.HostStatus;
1919+}
2020+2121+export type HandlerInput = void;
2222+2323+export interface HandlerSuccess {
2424+ encoding: "application/json";
2525+ body: OutputSchema;
2626+ headers?: { [key: string]: string };
2727+}
2828+2929+export interface HandlerError {
3030+ status: number;
3131+ message?: string;
3232+ error?: "HostNotFound";
3333+}
3434+3535+export type HandlerOutput = HandlerError | HandlerSuccess;
-2
lex/types/com/atproto/sync/getRecord.ts
···99 collection: string;
1010 /** Record Key */
1111 rkey: string;
1212- /** DEPRECATED: referenced a repo commit by CID, and retrieved record as of that commit */
1313- commit?: string;
1412};
1513export type InputSchema = undefined;
1614export type HandlerInput = void;
+3
lex/types/com/atproto/sync/getRepoStatus.ts
···1414 status?:
1515 | "takendown"
1616 | "suspended"
1717+ | "deleted"
1718 | "deactivated"
1919+ | "desynchronized"
2020+ | "throttled"
1821 | (string & globalThis.Record<PropertyKey, never>);
1922 /** Optional field, the current rev of the repo, if active=true */
2023 rev?: string;
+56
lex/types/com/atproto/sync/listHosts.ts
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+import type * as ComAtprotoSyncDefs from "./defs.ts";
77+88+const is$typed = _is$typed, validate = _validate;
99+const id = "com.atproto.sync.listHosts";
1010+1111+export type QueryParams = {
1212+ limit: number;
1313+ cursor?: string;
1414+};
1515+export type InputSchema = undefined;
1616+1717+export interface OutputSchema {
1818+ cursor?: string;
1919+ /** Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first. */
2020+ hosts: (Host)[];
2121+}
2222+2323+export type HandlerInput = void;
2424+2525+export interface HandlerSuccess {
2626+ encoding: "application/json";
2727+ body: OutputSchema;
2828+ headers?: { [key: string]: string };
2929+}
3030+3131+export interface HandlerError {
3232+ status: number;
3333+ message?: string;
3434+}
3535+3636+export type HandlerOutput = HandlerError | HandlerSuccess;
3737+3838+export interface Host {
3939+ $type?: "com.atproto.sync.listHosts#host";
4040+ /** hostname of server; not a URL (no scheme) */
4141+ hostname: string;
4242+ /** Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor). */
4343+ seq?: number;
4444+ accountCount?: number;
4545+ status?: ComAtprotoSyncDefs.HostStatus;
4646+}
4747+4848+const hashHost = "host";
4949+5050+export function isHost<V>(v: V) {
5151+ return is$typed(v, id, hashHost);
5252+}
5353+5454+export function validateHost<V>(v: V) {
5555+ return validate<Host & V>(v, id, hashHost);
5656+}
···1616};
1717export type OutputSchema =
1818 | $Typed<Commit>
1919+ | $Typed<Sync>
1920 | $Typed<Identity>
2021 | $Typed<Account>
2121- | $Typed<Handle>
2222- | $Typed<Migrate>
2323- | $Typed<Tombstone>
2422 | $Typed<Info>
2523 | { $type: string };
2624export type HandlerError = ErrorFrame<"FutureCursor" | "ConsumerTooSlow">;
···3331 seq: number;
3432 /** DEPRECATED -- unused */
3533 rebase: boolean;
3636- /** Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data. */
3434+ /** DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data. */
3735 tooBig: boolean;
3838- /** The repo this event comes from. */
3636+ /** The repo this event comes from. Note that all other message types name this field 'did'. */
3937 repo: string;
4038 /** Repo commit object CID. */
4139 commit: CID;
4242- /** DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability. */
4343- prev?: CID | null;
4440 /** The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event. */
4541 rev: string;
4642 /** The rev of the last emitted commit from this repo (if any). */
4743 since: string | null;
4848- /** CAR file containing relevant blocks, as a diff since the previous repo state. */
4444+ /** CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list. */
4945 blocks: Uint8Array;
5046 ops: (RepoOp)[];
5147 blobs: (CID)[];
4848+ /** The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose. */
4949+ prevData?: CID;
5250 /** Timestamp of when this message was originally broadcast. */
5351 time: string;
5452}
···6361 return validate<Commit & V>(v, id, hashCommit);
6462}
65636464+/** Updates the repo to a new state, without necessarily including that state on the firehose. Used to recover from broken commit streams, data loss incidents, or in situations where upstream host does not know recent state of the repository. */
6565+export interface Sync {
6666+ $type?: "com.atproto.sync.subscribeRepos#sync";
6767+ /** The stream sequence number of this message. */
6868+ seq: number;
6969+ /** The account this repo event corresponds to. Must match that in the commit object. */
7070+ did: string;
7171+ /** CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'. */
7272+ blocks: Uint8Array;
7373+ /** The rev of the commit. This value must match that in the commit object. */
7474+ rev: string;
7575+ /** Timestamp of when this message was originally broadcast. */
7676+ time: string;
7777+}
7878+7979+const hashSync = "sync";
8080+8181+export function isSync<V>(v: V) {
8282+ return is$typed(v, id, hashSync);
8383+}
8484+8585+export function validateSync<V>(v: V) {
8686+ return validate<Sync & V>(v, id, hashSync);
8787+}
8888+6689/** Represents a change to an account's identity. Could be an updated handle, signing key, or pds hosting endpoint. Serves as a prod to all downstream services to refresh their identity cache. */
6790export interface Identity {
6891 $type?: "com.atproto.sync.subscribeRepos#identity";
···97120 | "suspended"
98121 | "deleted"
99122 | "deactivated"
123123+ | "desynchronized"
124124+ | "throttled"
100125 | (string & globalThis.Record<PropertyKey, never>);
101126}
102127···110135 return validate<Account & V>(v, id, hashAccount);
111136}
112137113113-/** DEPRECATED -- Use #identity event instead */
114114-export interface Handle {
115115- $type?: "com.atproto.sync.subscribeRepos#handle";
116116- seq: number;
117117- did: string;
118118- handle: string;
119119- time: string;
120120-}
121121-122122-const hashHandle = "handle";
123123-124124-export function isHandle<V>(v: V) {
125125- return is$typed(v, id, hashHandle);
126126-}
127127-128128-export function validateHandle<V>(v: V) {
129129- return validate<Handle & V>(v, id, hashHandle);
130130-}
131131-132132-/** DEPRECATED -- Use #account event instead */
133133-export interface Migrate {
134134- $type?: "com.atproto.sync.subscribeRepos#migrate";
135135- seq: number;
136136- did: string;
137137- migrateTo: string | null;
138138- time: string;
139139-}
140140-141141-const hashMigrate = "migrate";
142142-143143-export function isMigrate<V>(v: V) {
144144- return is$typed(v, id, hashMigrate);
145145-}
146146-147147-export function validateMigrate<V>(v: V) {
148148- return validate<Migrate & V>(v, id, hashMigrate);
149149-}
150150-151151-/** DEPRECATED -- Use #account event instead */
152152-export interface Tombstone {
153153- $type?: "com.atproto.sync.subscribeRepos#tombstone";
154154- seq: number;
155155- did: string;
156156- time: string;
157157-}
158158-159159-const hashTombstone = "tombstone";
160160-161161-export function isTombstone<V>(v: V) {
162162- return is$typed(v, id, hashTombstone);
163163-}
164164-165165-export function validateTombstone<V>(v: V) {
166166- return validate<Tombstone & V>(v, id, hashTombstone);
167167-}
168168-169138export interface Info {
170139 $type?: "com.atproto.sync.subscribeRepos#info";
171140 name: "OutdatedCursor" | (string & globalThis.Record<PropertyKey, never>);
···193162 path: string;
194163 /** For creates and updates, the new record CID. For deletions, null. */
195164 cid: CID | null;
165165+ /** For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined. */
166166+ prev?: CID;
196167}
197168198169const hashRepoOp = "repoOp";
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+77+const is$typed = _is$typed, validate = _validate;
88+const id = "tools.ozone.moderation.cancelScheduledActions";
99+1010+export type QueryParams = globalThis.Record<PropertyKey, never>;
1111+1212+export interface InputSchema {
1313+ /** Array of DID subjects to cancel scheduled actions for */
1414+ subjects: (string)[];
1515+ /** Optional comment describing the reason for cancellation */
1616+ comment?: string;
1717+}
1818+1919+export type OutputSchema = CancellationResults;
2020+2121+export interface HandlerInput {
2222+ encoding: "application/json";
2323+ body: InputSchema;
2424+}
2525+2626+export interface HandlerSuccess {
2727+ encoding: "application/json";
2828+ body: OutputSchema;
2929+ headers?: { [key: string]: string };
3030+}
3131+3232+export interface HandlerError {
3333+ status: number;
3434+ message?: string;
3535+}
3636+3737+export type HandlerOutput = HandlerError | HandlerSuccess;
3838+3939+export interface CancellationResults {
4040+ $type?: "tools.ozone.moderation.cancelScheduledActions#cancellationResults";
4141+ /** DIDs for which all pending scheduled actions were successfully cancelled */
4242+ succeeded: (string)[];
4343+ /** DIDs for which cancellation failed with error details */
4444+ failed: (FailedCancellation)[];
4545+}
4646+4747+const hashCancellationResults = "cancellationResults";
4848+4949+export function isCancellationResults<V>(v: V) {
5050+ return is$typed(v, id, hashCancellationResults);
5151+}
5252+5353+export function validateCancellationResults<V>(v: V) {
5454+ return validate<CancellationResults & V>(v, id, hashCancellationResults);
5555+}
5656+5757+export interface FailedCancellation {
5858+ $type?: "tools.ozone.moderation.cancelScheduledActions#failedCancellation";
5959+ did: string;
6060+ error: string;
6161+ errorCode?: string;
6262+}
6363+6464+const hashFailedCancellation = "failedCancellation";
6565+6666+export function isFailedCancellation<V>(v: V) {
6767+ return is$typed(v, id, hashFailedCancellation);
6868+}
6969+7070+export function validateFailedCancellation<V>(v: V) {
7171+ return validate<FailedCancellation & V>(v, id, hashFailedCancellation);
7272+}
+303-4
lex/types/tools/ozone/moderation/defs.ts
···88import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts";
99import type * as ChatBskyConvoDefs from "../../../chat/bsky/convo/defs.ts";
1010import type * as ComAtprotoModerationDefs from "../../../com/atproto/moderation/defs.ts";
1111+import type * as AppBskyAgeassuranceDefs from "../../../app/bsky/ageassurance/defs.ts";
1112import type * as ComAtprotoServerDefs from "../../../com/atproto/server/defs.ts";
1213import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts";
1314···3738 | $Typed<IdentityEvent>
3839 | $Typed<RecordEvent>
3940 | $Typed<ModEventPriorityScore>
4141+ | $Typed<AgeAssuranceEvent>
4242+ | $Typed<AgeAssuranceOverrideEvent>
4343+ | $Typed<RevokeAccountCredentialsEvent>
4444+ | $Typed<ScheduleTakedownEvent>
4545+ | $Typed<CancelScheduledTakedownEvent>
4046 | { $type: string };
4147 subject:
4248 | $Typed<ComAtprotoAdminDefs.RepoRef>
···4854 createdAt: string;
4955 creatorHandle?: string;
5056 subjectHandle?: string;
5757+ modTool?: ModTool;
5158}
52595360const hashModEventView = "modEventView";
···8390 | $Typed<IdentityEvent>
8491 | $Typed<RecordEvent>
8592 | $Typed<ModEventPriorityScore>
9393+ | $Typed<AgeAssuranceEvent>
9494+ | $Typed<AgeAssuranceOverrideEvent>
9595+ | $Typed<RevokeAccountCredentialsEvent>
9696+ | $Typed<ScheduleTakedownEvent>
9797+ | $Typed<CancelScheduledTakedownEvent>
8698 | { $type: string };
8799 subject:
88100 | $Typed<RepoView>
···93105 subjectBlobs: (BlobView)[];
94106 createdBy: string;
95107 createdAt: string;
108108+ modTool?: ModTool;
96109}
9711098111const hashModEventViewDetail = "modEventViewDetail";
···111124 subject:
112125 | $Typed<ComAtprotoAdminDefs.RepoRef>
113126 | $Typed<ComAtprotoRepoStrongRef.Main>
127127+ | $Typed<ChatBskyConvoDefs.MessageRef>
114128 | { $type: string };
115129 hosting?: $Typed<AccountHosting> | $Typed<RecordHosting> | { $type: string };
116130 subjectBlobCids?: (string)[];
···138152 tags?: (string)[];
139153 accountStats?: AccountStats;
140154 recordsStats?: RecordsStats;
155155+ accountStrike?: AccountStrike;
156156+ /** Current age assurance state of the subject. */
157157+ ageAssuranceState?:
158158+ | "pending"
159159+ | "assured"
160160+ | "unknown"
161161+ | "reset"
162162+ | "blocked"
163163+ | (string & globalThis.Record<PropertyKey, never>);
164164+ /** Whether or not the last successful update to age assurance was made by the user or admin. */
165165+ ageAssuranceUpdatedBy?:
166166+ | "admin"
167167+ | "user"
168168+ | (string & globalThis.Record<PropertyKey, never>);
141169}
142170143171const hashSubjectStatusView = "subjectStatusView";
···150178 return validate<SubjectStatusView & V>(v, id, hashSubjectStatusView);
151179}
152180181181+/** Detailed view of a subject. For record subjects, the author's repo and profile will be returned. */
182182+export interface SubjectView {
183183+ $type?: "tools.ozone.moderation.defs#subjectView";
184184+ type: ComAtprotoModerationDefs.SubjectType;
185185+ subject: string;
186186+ status?: SubjectStatusView;
187187+ repo?: RepoViewDetail;
188188+ profile?: { $type: string };
189189+ record?: RecordViewDetail;
190190+}
191191+192192+const hashSubjectView = "subjectView";
193193+194194+export function isSubjectView<V>(v: V) {
195195+ return is$typed(v, id, hashSubjectView);
196196+}
197197+198198+export function validateSubjectView<V>(v: V) {
199199+ return validate<SubjectView & V>(v, id, hashSubjectView);
200200+}
201201+153202/** Statistics about a particular account subject */
154203export interface AccountStats {
155204 $type?: "tools.ozone.moderation.defs#accountStats";
···206255 return validate<RecordsStats & V>(v, id, hashRecordsStats);
207256}
208257258258+/** Strike information for an account */
259259+export interface AccountStrike {
260260+ $type?: "tools.ozone.moderation.defs#accountStrike";
261261+ /** Current number of active strikes (excluding expired strikes) */
262262+ activeStrikeCount?: number;
263263+ /** Total number of strikes ever received (including expired strikes) */
264264+ totalStrikeCount?: number;
265265+ /** Timestamp of the first strike received */
266266+ firstStrikeAt?: string;
267267+ /** Timestamp of the most recent strike received */
268268+ lastStrikeAt?: string;
269269+}
270270+271271+const hashAccountStrike = "accountStrike";
272272+273273+export function isAccountStrike<V>(v: V) {
274274+ return is$typed(v, id, hashAccountStrike);
275275+}
276276+277277+export function validateAccountStrike<V>(v: V) {
278278+ return validate<AccountStrike & V>(v, id, hashAccountStrike);
279279+}
280280+209281export type SubjectReviewState =
210210- | "lex:tools.ozone.moderation.defs#reviewOpen"
211211- | "lex:tools.ozone.moderation.defs#reviewEscalated"
212212- | "lex:tools.ozone.moderation.defs#reviewClosed"
213213- | "lex:tools.ozone.moderation.defs#reviewNone"
282282+ | "tools.ozone.moderation.defs#reviewOpen"
283283+ | "tools.ozone.moderation.defs#reviewEscalated"
284284+ | "tools.ozone.moderation.defs#reviewClosed"
285285+ | "tools.ozone.moderation.defs#reviewNone"
214286 | (string & globalThis.Record<PropertyKey, never>);
215287216288/** Moderator review status of a subject: Open. Indicates that the subject needs to be reviewed by a moderator */
···232304 acknowledgeAccountSubjects?: boolean;
233305 /** Names/Keywords of the policies that drove the decision. */
234306 policies?: (string)[];
307307+ /** Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.). */
308308+ severityLevel?: string;
309309+ /** List of services where the takedown should be applied. If empty or not provided, takedown is applied on all configured services. */
310310+ targetServices?:
311311+ ("appview" | "pds" | (string & globalThis.Record<PropertyKey, never>))[];
312312+ /** Number of strikes to assign to the user for this violation. */
313313+ strikeCount?: number;
314314+ /** When the strike should expire. If not provided, the strike never expires. */
315315+ strikeExpiresAt?: string;
235316}
236317237318const hashModEventTakedown = "modEventTakedown";
···249330 $type?: "tools.ozone.moderation.defs#modEventReverseTakedown";
250331 /** Describe reasoning behind the reversal. */
251332 comment?: string;
333333+ /** Names/Keywords of the policy infraction for which takedown is being reversed. */
334334+ policies?: (string)[];
335335+ /** Severity level of the violation. Usually set from the last policy infraction's severity. */
336336+ severityLevel?: string;
337337+ /** Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity. */
338338+ strikeCount?: number;
252339}
253340254341const hashModEventReverseTakedown = "modEventReverseTakedown";
···356443 return validate<ModEventPriorityScore & V>(v, id, hashModEventPriorityScore);
357444}
358445446446+/** Age assurance info coming directly from users. Only works on DID subjects. */
447447+export interface AgeAssuranceEvent {
448448+ $type?: "tools.ozone.moderation.defs#ageAssuranceEvent";
449449+ /** The date and time of this write operation. */
450450+ createdAt: string;
451451+ /** The unique identifier for this instance of the age assurance flow, in UUID format. */
452452+ attemptId: string;
453453+ /** The status of the Age Assurance process. */
454454+ status:
455455+ | "unknown"
456456+ | "pending"
457457+ | "assured"
458458+ | (string & globalThis.Record<PropertyKey, never>);
459459+ access?: AppBskyAgeassuranceDefs.Access;
460460+ /** The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow. */
461461+ countryCode?: string;
462462+ /** The ISO 3166-2 region code provided when beginning the Age Assurance flow. */
463463+ regionCode?: string;
464464+ /** The IP address used when initiating the AA flow. */
465465+ initIp?: string;
466466+ /** The user agent used when initiating the AA flow. */
467467+ initUa?: string;
468468+ /** The IP address used when completing the AA flow. */
469469+ completeIp?: string;
470470+ /** The user agent used when completing the AA flow. */
471471+ completeUa?: string;
472472+}
473473+474474+const hashAgeAssuranceEvent = "ageAssuranceEvent";
475475+476476+export function isAgeAssuranceEvent<V>(v: V) {
477477+ return is$typed(v, id, hashAgeAssuranceEvent);
478478+}
479479+480480+export function validateAgeAssuranceEvent<V>(v: V) {
481481+ return validate<AgeAssuranceEvent & V>(v, id, hashAgeAssuranceEvent);
482482+}
483483+484484+/** Age assurance status override by moderators. Only works on DID subjects. */
485485+export interface AgeAssuranceOverrideEvent {
486486+ $type?: "tools.ozone.moderation.defs#ageAssuranceOverrideEvent";
487487+ /** The status to be set for the user decided by a moderator, overriding whatever value the user had previously. Use reset to default to original state. */
488488+ status:
489489+ | "assured"
490490+ | "reset"
491491+ | "blocked"
492492+ | (string & globalThis.Record<PropertyKey, never>);
493493+ access?: AppBskyAgeassuranceDefs.Access;
494494+ /** Comment describing the reason for the override. */
495495+ comment: string;
496496+}
497497+498498+const hashAgeAssuranceOverrideEvent = "ageAssuranceOverrideEvent";
499499+500500+export function isAgeAssuranceOverrideEvent<V>(v: V) {
501501+ return is$typed(v, id, hashAgeAssuranceOverrideEvent);
502502+}
503503+504504+export function validateAgeAssuranceOverrideEvent<V>(v: V) {
505505+ return validate<AgeAssuranceOverrideEvent & V>(
506506+ v,
507507+ id,
508508+ hashAgeAssuranceOverrideEvent,
509509+ );
510510+}
511511+512512+/** Account credentials revocation by moderators. Only works on DID subjects. */
513513+export interface RevokeAccountCredentialsEvent {
514514+ $type?: "tools.ozone.moderation.defs#revokeAccountCredentialsEvent";
515515+ /** Comment describing the reason for the revocation. */
516516+ comment: string;
517517+}
518518+519519+const hashRevokeAccountCredentialsEvent = "revokeAccountCredentialsEvent";
520520+521521+export function isRevokeAccountCredentialsEvent<V>(v: V) {
522522+ return is$typed(v, id, hashRevokeAccountCredentialsEvent);
523523+}
524524+525525+export function validateRevokeAccountCredentialsEvent<V>(v: V) {
526526+ return validate<RevokeAccountCredentialsEvent & V>(
527527+ v,
528528+ id,
529529+ hashRevokeAccountCredentialsEvent,
530530+ );
531531+}
532532+359533export interface ModEventAcknowledge {
360534 $type?: "tools.ozone.moderation.defs#modEventAcknowledge";
361535 comment?: string;
···471645 content?: string;
472646 /** Additional comment about the outgoing comm. */
473647 comment?: string;
648648+ /** Names/Keywords of the policies that necessitated the email. */
649649+ policies?: (string)[];
650650+ /** Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense */
651651+ severityLevel?: string;
652652+ /** Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense. */
653653+ strikeCount?: number;
654654+ /** When the strike should expire. If not provided, the strike never expires. */
655655+ strikeExpiresAt?: string;
656656+ /** Indicates whether the email was successfully delivered to the user's inbox. */
657657+ isDelivered?: boolean;
474658}
475659476660const hashModEventEmail = "modEventEmail";
···588772589773export function validateRecordEvent<V>(v: V) {
590774 return validate<RecordEvent & V>(v, id, hashRecordEvent);
775775+}
776776+777777+/** Logs a scheduled takedown action for an account. */
778778+export interface ScheduleTakedownEvent {
779779+ $type?: "tools.ozone.moderation.defs#scheduleTakedownEvent";
780780+ comment?: string;
781781+ executeAt?: string;
782782+ executeAfter?: string;
783783+ executeUntil?: string;
784784+}
785785+786786+const hashScheduleTakedownEvent = "scheduleTakedownEvent";
787787+788788+export function isScheduleTakedownEvent<V>(v: V) {
789789+ return is$typed(v, id, hashScheduleTakedownEvent);
790790+}
791791+792792+export function validateScheduleTakedownEvent<V>(v: V) {
793793+ return validate<ScheduleTakedownEvent & V>(v, id, hashScheduleTakedownEvent);
794794+}
795795+796796+/** Logs cancellation of a scheduled takedown action for an account. */
797797+export interface CancelScheduledTakedownEvent {
798798+ $type?: "tools.ozone.moderation.defs#cancelScheduledTakedownEvent";
799799+ comment?: string;
800800+}
801801+802802+const hashCancelScheduledTakedownEvent = "cancelScheduledTakedownEvent";
803803+804804+export function isCancelScheduledTakedownEvent<V>(v: V) {
805805+ return is$typed(v, id, hashCancelScheduledTakedownEvent);
806806+}
807807+808808+export function validateCancelScheduledTakedownEvent<V>(v: V) {
809809+ return validate<CancelScheduledTakedownEvent & V>(
810810+ v,
811811+ id,
812812+ hashCancelScheduledTakedownEvent,
813813+ );
591814}
592815593816export interface RepoView {
···8761099export function validateReporterStats<V>(v: V) {
8771100 return validate<ReporterStats & V>(v, id, hashReporterStats);
8781101}
11021102+11031103+/** Moderation tool information for tracing the source of the action */
11041104+export interface ModTool {
11051105+ $type?: "tools.ozone.moderation.defs#modTool";
11061106+ /** Name/identifier of the source (e.g., 'automod', 'ozone/workspace') */
11071107+ name: string;
11081108+ /** Additional arbitrary metadata about the source */
11091109+ meta?: { [_ in string]: unknown };
11101110+}
11111111+11121112+const hashModTool = "modTool";
11131113+11141114+export function isModTool<V>(v: V) {
11151115+ return is$typed(v, id, hashModTool);
11161116+}
11171117+11181118+export function validateModTool<V>(v: V) {
11191119+ return validate<ModTool & V>(v, id, hashModTool);
11201120+}
11211121+11221122+/** Moderation event timeline event for a PLC create operation */
11231123+export const TIMELINEEVENTPLCCREATE = `${id}#timelineEventPlcCreate`;
11241124+/** Moderation event timeline event for generic PLC operation */
11251125+export const TIMELINEEVENTPLCOPERATION = `${id}#timelineEventPlcOperation`;
11261126+/** Moderation event timeline event for a PLC tombstone operation */
11271127+export const TIMELINEEVENTPLCTOMBSTONE = `${id}#timelineEventPlcTombstone`;
11281128+11291129+/** View of a scheduled moderation action */
11301130+export interface ScheduledActionView {
11311131+ $type?: "tools.ozone.moderation.defs#scheduledActionView";
11321132+ /** Auto-incrementing row ID */
11331133+ id: number;
11341134+ /** Type of action to be executed */
11351135+ action: "takedown" | (string & globalThis.Record<PropertyKey, never>);
11361136+ /** Serialized event object that will be propagated to the event when performed */
11371137+ eventData?: { [_ in string]: unknown };
11381138+ /** Subject DID for the action */
11391139+ did: string;
11401140+ /** Exact time to execute the action */
11411141+ executeAt?: string;
11421142+ /** Earliest time to execute the action (for randomized scheduling) */
11431143+ executeAfter?: string;
11441144+ /** Latest time to execute the action (for randomized scheduling) */
11451145+ executeUntil?: string;
11461146+ /** Whether execution time should be randomized within the specified range */
11471147+ randomizeExecution?: boolean;
11481148+ /** DID of the user who created this scheduled action */
11491149+ createdBy: string;
11501150+ /** When the scheduled action was created */
11511151+ createdAt: string;
11521152+ /** When the scheduled action was last updated */
11531153+ updatedAt?: string;
11541154+ /** Current status of the scheduled action */
11551155+ status:
11561156+ | "pending"
11571157+ | "executed"
11581158+ | "cancelled"
11591159+ | "failed"
11601160+ | (string & globalThis.Record<PropertyKey, never>);
11611161+ /** When the action was last attempted to be executed */
11621162+ lastExecutedAt?: string;
11631163+ /** Reason for the last execution failure */
11641164+ lastFailureReason?: string;
11651165+ /** ID of the moderation event created when action was successfully executed */
11661166+ executionEventId?: number;
11671167+}
11681168+11691169+const hashScheduledActionView = "scheduledActionView";
11701170+11711171+export function isScheduledActionView<V>(v: V) {
11721172+ return is$typed(v, id, hashScheduledActionView);
11731173+}
11741174+11751175+export function validateScheduledActionView<V>(v: V) {
11761176+ return validate<ScheduledActionView & V>(v, id, hashScheduledActionView);
11771177+}
+9-1
lex/types/tools/ozone/moderation/emitEvent.ts
···2929 | $Typed<ToolsOzoneModerationDefs.IdentityEvent>
3030 | $Typed<ToolsOzoneModerationDefs.RecordEvent>
3131 | $Typed<ToolsOzoneModerationDefs.ModEventPriorityScore>
3232+ | $Typed<ToolsOzoneModerationDefs.AgeAssuranceEvent>
3333+ | $Typed<ToolsOzoneModerationDefs.AgeAssuranceOverrideEvent>
3434+ | $Typed<ToolsOzoneModerationDefs.RevokeAccountCredentialsEvent>
3535+ | $Typed<ToolsOzoneModerationDefs.ScheduleTakedownEvent>
3636+ | $Typed<ToolsOzoneModerationDefs.CancelScheduledTakedownEvent>
3237 | { $type: string };
3338 subject:
3439 | $Typed<ComAtprotoAdminDefs.RepoRef>
···3641 | { $type: string };
3742 subjectBlobCids?: (string)[];
3843 createdBy: string;
4444+ modTool?: ToolsOzoneModerationDefs.ModTool;
4545+ /** An optional external ID for the event, used to deduplicate events from external systems. Fails when an event of same type with the same external ID exists for the same subject. */
4646+ externalId?: string;
3947}
40484149export type OutputSchema = ToolsOzoneModerationDefs.ModEventView;
···5462export interface HandlerError {
5563 status: number;
5664 message?: string;
5757- error?: "SubjectHasAction";
6565+ error?: "SubjectHasAction" | "DuplicateExternalId";
5866}
59676068export type HandlerOutput = HandlerError | HandlerSuccess;
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import type * as ToolsOzoneModerationDefs from "./defs.ts";
55+66+export type QueryParams = globalThis.Record<PropertyKey, never>;
77+88+export interface InputSchema {
99+ /** Filter actions scheduled to execute after this time */
1010+ startsAfter?: string;
1111+ /** Filter actions scheduled to execute before this time */
1212+ endsBefore?: string;
1313+ /** Filter actions for specific DID subjects */
1414+ subjects?: (string)[];
1515+ /** Filter actions by status */
1616+ statuses: (
1717+ | "pending"
1818+ | "executed"
1919+ | "cancelled"
2020+ | "failed"
2121+ | (string & globalThis.Record<PropertyKey, never>)
2222+ )[];
2323+ /** Maximum number of results to return */
2424+ limit: number;
2525+ /** Cursor for pagination */
2626+ cursor?: string;
2727+}
2828+2929+export interface OutputSchema {
3030+ actions: (ToolsOzoneModerationDefs.ScheduledActionView)[];
3131+ /** Cursor for next page of results */
3232+ cursor?: string;
3333+}
3434+3535+export interface HandlerInput {
3636+ encoding: "application/json";
3737+ body: InputSchema;
3838+}
3939+4040+export interface HandlerSuccess {
4141+ encoding: "application/json";
4242+ body: OutputSchema;
4343+ headers?: { [key: string]: string };
4444+}
4545+4646+export interface HandlerError {
4747+ status: number;
4848+ message?: string;
4949+}
5050+5151+export type HandlerOutput = HandlerError | HandlerSuccess;
+14
lex/types/tools/ozone/moderation/queryEvents.ts
···3838 removedTags?: string[];
3939 reportTypes?: string[];
4040 policies?: string[];
4141+ /** If specified, only events where the modTool name matches any of the given values are returned */
4242+ modTool?: string[];
4343+ /** If specified, only events where the batchId matches the given value are returned */
4444+ batchId?: string;
4545+ /** If specified, only events where the age assurance state matches the given value are returned */
4646+ ageAssuranceState?:
4747+ | "pending"
4848+ | "assured"
4949+ | "unknown"
5050+ | "reset"
5151+ | "blocked"
5252+ | (string & globalThis.Record<PropertyKey, never>);
5353+ /** If specified, only events where strikeCount value is set are returned. */
5454+ withStrike?: boolean;
4155 cursor?: string;
4256};
4357export type InputSchema = undefined;
+16-1
lex/types/tools/ozone/moderation/queryStatuses.ts
···3939 /** When set to true, only muted subjects and reporters will be returned. */
4040 onlyMuted?: boolean;
4141 /** Specify when fetching subjects in a certain state */
4242- reviewState?: string;
4242+ reviewState?:
4343+ | "tools.ozone.moderation.defs#reviewOpen"
4444+ | "tools.ozone.moderation.defs#reviewClosed"
4545+ | "tools.ozone.moderation.defs#reviewEscalated"
4646+ | "tools.ozone.moderation.defs#reviewNone"
4747+ | (string & globalThis.Record<PropertyKey, never>);
4348 ignoreSubjects?: string[];
4449 /** Get all subject statuses that were reviewed by a specific moderator */
4550 lastReviewedBy?: string;
···7378 minTakendownRecordsCount?: number;
7479 /** If specified, only subjects that have priority score value above the given value will be returned. */
7580 minPriorityScore?: number;
8181+ /** If specified, only subjects that belong to an account that has at least this many active strikes will be returned. */
8282+ minStrikeCount?: number;
8383+ /** If specified, only subjects with the given age assurance state will be returned. */
8484+ ageAssuranceState?:
8585+ | "pending"
8686+ | "assured"
8787+ | "unknown"
8888+ | "reset"
8989+ | "blocked"
9090+ | (string & globalThis.Record<PropertyKey, never>);
7691};
7792export type InputSchema = undefined;
7893
···11+/**
22+ * GENERATED CODE - DO NOT MODIFY
33+ */
44+import { validate as _validate } from "../../../../lexicons.ts";
55+import { is$typed as _is$typed } from "../../../../util.ts";
66+import { type $Typed } from "../../../../util.ts";
77+import type * as ToolsOzoneModerationDefs from "../moderation/defs.ts";
88+99+const is$typed = _is$typed, validate = _validate;
1010+const id = "tools.ozone.verification.defs";
1111+1212+/** Verification data for the associated subject. */
1313+export interface VerificationView {
1414+ $type?: "tools.ozone.verification.defs#verificationView";
1515+ /** The user who issued this verification. */
1616+ issuer: string;
1717+ /** The AT-URI of the verification record. */
1818+ uri: string;
1919+ /** The subject of the verification. */
2020+ subject: string;
2121+ /** Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying. */
2222+ handle: string;
2323+ /** Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying. */
2424+ displayName: string;
2525+ /** Timestamp when the verification was created. */
2626+ createdAt: string;
2727+ /** Describes the reason for revocation, also indicating that the verification is no longer valid. */
2828+ revokeReason?: string;
2929+ /** Timestamp when the verification was revoked. */
3030+ revokedAt?: string;
3131+ /** The user who revoked this verification. */
3232+ revokedBy?: string;
3333+ subjectProfile?: { $type: string };
3434+ issuerProfile?: { $type: string };
3535+ subjectRepo?:
3636+ | $Typed<ToolsOzoneModerationDefs.RepoViewDetail>
3737+ | $Typed<ToolsOzoneModerationDefs.RepoViewNotFound>
3838+ | { $type: string };
3939+ issuerRepo?:
4040+ | $Typed<ToolsOzoneModerationDefs.RepoViewDetail>
4141+ | $Typed<ToolsOzoneModerationDefs.RepoViewNotFound>
4242+ | { $type: string };
4343+}
4444+4545+const hashVerificationView = "verificationView";
4646+4747+export function isVerificationView<V>(v: V) {
4848+ return is$typed(v, id, hashVerificationView);
4949+}
5050+5151+export function validateVerificationView<V>(v: V) {
5252+ return validate<VerificationView & V>(v, id, hashVerificationView);
5353+}
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.actor.status",
44+ "defs": {
55+ "main": {
66+ "type": "record",
77+ "description": "A declaration of a Bluesky account status.",
88+ "key": "literal:self",
99+ "record": {
1010+ "type": "object",
1111+ "required": ["status", "createdAt"],
1212+ "properties": {
1313+ "status": {
1414+ "type": "string",
1515+ "description": "The status for the account.",
1616+ "knownValues": ["app.bsky.actor.status#live"]
1717+ },
1818+ "embed": {
1919+ "type": "union",
2020+ "description": "An optional embed associated with the status.",
2121+ "refs": ["app.bsky.embed.external"]
2222+ },
2323+ "durationMinutes": {
2424+ "type": "integer",
2525+ "description": "The duration of the status in minutes. Applications can choose to impose minimum and maximum limits.",
2626+ "minimum": 1
2727+ },
2828+ "createdAt": { "type": "string", "format": "datetime" }
2929+ }
3030+ }
3131+ },
3232+ "live": {
3333+ "type": "token",
3434+ "description": "Advertises an account as currently offering live content."
3535+ }
3636+ }
3737+}
+48
lexicons/app/bsky/ageassurance/begin.json
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.ageassurance.begin",
44+ "defs": {
55+ "main": {
66+ "type": "procedure",
77+ "description": "Initiate Age Assurance for an account.",
88+ "input": {
99+ "encoding": "application/json",
1010+ "schema": {
1111+ "type": "object",
1212+ "required": ["email", "language", "countryCode"],
1313+ "properties": {
1414+ "email": {
1515+ "type": "string",
1616+ "description": "The user's email address to receive Age Assurance instructions."
1717+ },
1818+ "language": {
1919+ "type": "string",
2020+ "description": "The user's preferred language for communication during the Age Assurance process."
2121+ },
2222+ "countryCode": {
2323+ "type": "string",
2424+ "description": "An ISO 3166-1 alpha-2 code of the user's location."
2525+ },
2626+ "regionCode": {
2727+ "type": "string",
2828+ "description": "An optional ISO 3166-2 code of the user's region or state within the country."
2929+ }
3030+ }
3131+ }
3232+ },
3333+ "output": {
3434+ "encoding": "application/json",
3535+ "schema": {
3636+ "type": "ref",
3737+ "ref": "app.bsky.ageassurance.defs#state"
3838+ }
3939+ },
4040+ "errors": [
4141+ { "name": "InvalidEmail" },
4242+ { "name": "DidTooLong" },
4343+ { "name": "InvalidInitiation" },
4444+ { "name": "RegionNotSupported" }
4545+ ]
4646+ }
4747+ }
4848+}
+251
lexicons/app/bsky/ageassurance/defs.json
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.ageassurance.defs",
44+ "defs": {
55+ "access": {
66+ "description": "The access level granted based on Age Assurance data we've processed.",
77+ "type": "string",
88+ "knownValues": ["unknown", "none", "safe", "full"]
99+ },
1010+ "status": {
1111+ "type": "string",
1212+ "description": "The status of the Age Assurance process.",
1313+ "knownValues": ["unknown", "pending", "assured", "blocked"]
1414+ },
1515+ "state": {
1616+ "type": "object",
1717+ "description": "The user's computed Age Assurance state.",
1818+ "required": ["status", "access"],
1919+ "properties": {
2020+ "lastInitiatedAt": {
2121+ "type": "string",
2222+ "format": "datetime",
2323+ "description": "The timestamp when this state was last updated."
2424+ },
2525+ "status": {
2626+ "type": "ref",
2727+ "ref": "app.bsky.ageassurance.defs#status"
2828+ },
2929+ "access": {
3030+ "type": "ref",
3131+ "ref": "app.bsky.ageassurance.defs#access"
3232+ }
3333+ }
3434+ },
3535+ "stateMetadata": {
3636+ "type": "object",
3737+ "description": "Additional metadata needed to compute Age Assurance state client-side.",
3838+ "required": [],
3939+ "properties": {
4040+ "accountCreatedAt": {
4141+ "type": "string",
4242+ "format": "datetime",
4343+ "description": "The account creation timestamp."
4444+ }
4545+ }
4646+ },
4747+ "config": {
4848+ "type": "object",
4949+ "description": "",
5050+ "required": ["regions"],
5151+ "properties": {
5252+ "regions": {
5353+ "type": "array",
5454+ "description": "The per-region Age Assurance configuration.",
5555+ "items": {
5656+ "type": "ref",
5757+ "ref": "app.bsky.ageassurance.defs#configRegion"
5858+ }
5959+ }
6060+ }
6161+ },
6262+ "configRegion": {
6363+ "type": "object",
6464+ "description": "The Age Assurance configuration for a specific region.",
6565+ "required": ["countryCode", "rules"],
6666+ "properties": {
6767+ "countryCode": {
6868+ "type": "string",
6969+ "description": "The ISO 3166-1 alpha-2 country code this configuration applies to."
7070+ },
7171+ "regionCode": {
7272+ "type": "string",
7373+ "description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country."
7474+ },
7575+ "rules": {
7676+ "type": "array",
7777+ "description": "The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item.",
7878+ "items": {
7979+ "type": "union",
8080+ "refs": [
8181+ "#configRegionRuleDefault",
8282+ "#configRegionRuleIfDeclaredOverAge",
8383+ "#configRegionRuleIfDeclaredUnderAge",
8484+ "#configRegionRuleIfAssuredOverAge",
8585+ "#configRegionRuleIfAssuredUnderAge",
8686+ "#configRegionRuleIfAccountNewerThan",
8787+ "#configRegionRuleIfAccountOlderThan"
8888+ ]
8989+ }
9090+ }
9191+ }
9292+ },
9393+ "configRegionRuleDefault": {
9494+ "type": "object",
9595+ "description": "Age Assurance rule that applies by default.",
9696+ "required": ["access"],
9797+ "properties": {
9898+ "access": {
9999+ "type": "ref",
100100+ "ref": "app.bsky.ageassurance.defs#access"
101101+ }
102102+ }
103103+ },
104104+ "configRegionRuleIfDeclaredOverAge": {
105105+ "type": "object",
106106+ "description": "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age.",
107107+ "required": ["age", "access"],
108108+ "properties": {
109109+ "age": {
110110+ "type": "integer",
111111+ "description": "The age threshold as a whole integer."
112112+ },
113113+ "access": {
114114+ "type": "ref",
115115+ "ref": "app.bsky.ageassurance.defs#access"
116116+ }
117117+ }
118118+ },
119119+ "configRegionRuleIfDeclaredUnderAge": {
120120+ "type": "object",
121121+ "description": "Age Assurance rule that applies if the user has declared themselves under a certain age.",
122122+ "required": ["age", "access"],
123123+ "properties": {
124124+ "age": {
125125+ "type": "integer",
126126+ "description": "The age threshold as a whole integer."
127127+ },
128128+ "access": {
129129+ "type": "ref",
130130+ "ref": "app.bsky.ageassurance.defs#access"
131131+ }
132132+ }
133133+ },
134134+ "configRegionRuleIfAssuredOverAge": {
135135+ "type": "object",
136136+ "description": "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age.",
137137+ "required": ["age", "access"],
138138+ "properties": {
139139+ "age": {
140140+ "type": "integer",
141141+ "description": "The age threshold as a whole integer."
142142+ },
143143+ "access": {
144144+ "type": "ref",
145145+ "ref": "app.bsky.ageassurance.defs#access"
146146+ }
147147+ }
148148+ },
149149+ "configRegionRuleIfAssuredUnderAge": {
150150+ "type": "object",
151151+ "description": "Age Assurance rule that applies if the user has been assured to be under a certain age.",
152152+ "required": ["age", "access"],
153153+ "properties": {
154154+ "age": {
155155+ "type": "integer",
156156+ "description": "The age threshold as a whole integer."
157157+ },
158158+ "access": {
159159+ "type": "ref",
160160+ "ref": "app.bsky.ageassurance.defs#access"
161161+ }
162162+ }
163163+ },
164164+ "configRegionRuleIfAccountNewerThan": {
165165+ "type": "object",
166166+ "description": "Age Assurance rule that applies if the account is equal-to or newer than a certain date.",
167167+ "required": ["date", "access"],
168168+ "properties": {
169169+ "date": {
170170+ "type": "string",
171171+ "format": "datetime",
172172+ "description": "The date threshold as a datetime string."
173173+ },
174174+ "access": {
175175+ "type": "ref",
176176+ "ref": "app.bsky.ageassurance.defs#access"
177177+ }
178178+ }
179179+ },
180180+ "configRegionRuleIfAccountOlderThan": {
181181+ "type": "object",
182182+ "description": "Age Assurance rule that applies if the account is older than a certain date.",
183183+ "required": ["date", "access"],
184184+ "properties": {
185185+ "date": {
186186+ "type": "string",
187187+ "format": "datetime",
188188+ "description": "The date threshold as a datetime string."
189189+ },
190190+ "access": {
191191+ "type": "ref",
192192+ "ref": "app.bsky.ageassurance.defs#access"
193193+ }
194194+ }
195195+ },
196196+ "event": {
197197+ "type": "object",
198198+ "description": "Object used to store Age Assurance data in stash.",
199199+ "required": ["createdAt", "status", "access", "attemptId", "countryCode"],
200200+ "properties": {
201201+ "createdAt": {
202202+ "type": "string",
203203+ "format": "datetime",
204204+ "description": "The date and time of this write operation."
205205+ },
206206+ "attemptId": {
207207+ "type": "string",
208208+ "description": "The unique identifier for this instance of the Age Assurance flow, in UUID format."
209209+ },
210210+ "status": {
211211+ "type": "string",
212212+ "description": "The status of the Age Assurance process.",
213213+ "knownValues": ["unknown", "pending", "assured", "blocked"]
214214+ },
215215+ "access": {
216216+ "description": "The access level granted based on Age Assurance data we've processed.",
217217+ "type": "string",
218218+ "knownValues": ["unknown", "none", "safe", "full"]
219219+ },
220220+ "countryCode": {
221221+ "type": "string",
222222+ "description": "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow."
223223+ },
224224+ "regionCode": {
225225+ "type": "string",
226226+ "description": "The ISO 3166-2 region code provided when beginning the Age Assurance flow."
227227+ },
228228+ "email": {
229229+ "type": "string",
230230+ "description": "The email used for Age Assurance."
231231+ },
232232+ "initIp": {
233233+ "type": "string",
234234+ "description": "The IP address used when initiating the Age Assurance flow."
235235+ },
236236+ "initUa": {
237237+ "type": "string",
238238+ "description": "The user agent used when initiating the Age Assurance flow."
239239+ },
240240+ "completeIp": {
241241+ "type": "string",
242242+ "description": "The IP address used when completing the Age Assurance flow."
243243+ },
244244+ "completeUa": {
245245+ "type": "string",
246246+ "description": "The user agent used when completing the Age Assurance flow."
247247+ }
248248+ }
249249+ }
250250+ }
251251+}
···3636 "type": "ref",
3737 "ref": "app.bsky.feed.defs#skeletonFeedPost"
3838 }
3939+ },
4040+ "reqId": {
4141+ "type": "string",
4242+ "description": "Unique identifier per request that may be passed back alongside interactions.",
4343+ "maxLength": 100
3944 }
4045 }
4146 }
+1-1
lexicons/app/bsky/feed/searchPosts.json
···44 "defs": {
55 "main": {
66 "type": "query",
77- "description": "Find posts matching search criteria, returning views of those posts.",
77+ "description": "Find posts matching search criteria, returning views of those posts. Note that this API endpoint may require authentication (eg, not public) for some service providers and implementations.",
88 "parameters": {
99 "type": "params",
1010 "required": ["q"],
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.graph.getStarterPacksWithMembership",
44+ "defs": {
55+ "main": {
66+ "type": "query",
77+ "description": "Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs. Requires auth.",
88+ "parameters": {
99+ "type": "params",
1010+ "required": ["actor"],
1111+ "properties": {
1212+ "actor": {
1313+ "type": "string",
1414+ "format": "at-identifier",
1515+ "description": "The account (actor) to check for membership."
1616+ },
1717+ "limit": {
1818+ "type": "integer",
1919+ "minimum": 1,
2020+ "maximum": 100,
2121+ "default": 50
2222+ },
2323+ "cursor": { "type": "string" }
2424+ }
2525+ },
2626+ "output": {
2727+ "encoding": "application/json",
2828+ "schema": {
2929+ "type": "object",
3030+ "required": ["starterPacksWithMembership"],
3131+ "properties": {
3232+ "cursor": { "type": "string" },
3333+ "starterPacksWithMembership": {
3434+ "type": "array",
3535+ "items": { "type": "ref", "ref": "#starterPackWithMembership" }
3636+ }
3737+ }
3838+ }
3939+ }
4040+ },
4141+ "starterPackWithMembership": {
4242+ "description": "A starter pack and an optional list item indicating membership of a target user to that starter pack.",
4343+ "type": "object",
4444+ "required": ["starterPack"],
4545+ "properties": {
4646+ "starterPack": {
4747+ "type": "ref",
4848+ "ref": "app.bsky.graph.defs#starterPackView"
4949+ },
5050+ "listItem": {
5151+ "type": "ref",
5252+ "ref": "app.bsky.graph.defs#listItemView"
5353+ }
5454+ }
5555+ }
5656+ }
5757+}
+36
lexicons/app/bsky/graph/verification.json
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.graph.verification",
44+ "defs": {
55+ "main": {
66+ "type": "record",
77+ "description": "Record declaring a verification relationship between two accounts. Verifications are only considered valid by an app if issued by an account the app considers trusted.",
88+ "key": "tid",
99+ "record": {
1010+ "type": "object",
1111+ "required": ["subject", "handle", "displayName", "createdAt"],
1212+ "properties": {
1313+ "subject": {
1414+ "description": "DID of the subject the verification applies to.",
1515+ "type": "string",
1616+ "format": "did"
1717+ },
1818+ "handle": {
1919+ "description": "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.",
2020+ "type": "string",
2121+ "format": "handle"
2222+ },
2323+ "displayName": {
2424+ "description": "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying.",
2525+ "type": "string"
2626+ },
2727+ "createdAt": {
2828+ "description": "Date of when the verification was created.",
2929+ "type": "string",
3030+ "format": "datetime"
3131+ }
3232+ }
3333+ }
3434+ }
3535+ }
3636+}
+22
lexicons/app/bsky/notification/declaration.json
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.notification.declaration",
44+ "defs": {
55+ "main": {
66+ "type": "record",
77+ "description": "A declaration of the user's choices related to notifications that can be produced by them.",
88+ "key": "literal:self",
99+ "record": {
1010+ "type": "object",
1111+ "required": ["allowSubscriptions"],
1212+ "properties": {
1313+ "allowSubscriptions": {
1414+ "type": "string",
1515+ "description": "A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.",
1616+ "knownValues": ["followers", "mutuals", "none"]
1717+ }
1818+ }
1919+ }
2020+ }
2121+ }
2222+}
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.unspecced.getAgeAssuranceState",
44+ "defs": {
55+ "main": {
66+ "type": "query",
77+ "description": "Returns the current state of the age assurance process for an account. This is used to check if the user has completed age assurance or if further action is required.",
88+ "output": {
99+ "encoding": "application/json",
1010+ "schema": {
1111+ "type": "ref",
1212+ "ref": "app.bsky.unspecced.defs#ageAssuranceState"
1313+ }
1414+ }
1515+ }
1616+ }
1717+}
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.unspecced.getPostThreadOtherV2",
44+ "defs": {
55+ "main": {
66+ "type": "query",
77+ "description": "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get additional posts under a thread e.g. replies hidden by threadgate. Based on an anchor post at any depth of the tree, returns top-level replies below that anchor. It does not include ancestors nor the anchor itself. This should be called after exhausting `app.bsky.unspecced.getPostThreadV2`. Does not require auth, but additional metadata and filtering will be applied for authed requests.",
88+ "parameters": {
99+ "type": "params",
1010+ "required": ["anchor"],
1111+ "properties": {
1212+ "anchor": {
1313+ "type": "string",
1414+ "format": "at-uri",
1515+ "description": "Reference (AT-URI) to post record. This is the anchor post."
1616+ }
1717+ }
1818+ },
1919+ "output": {
2020+ "encoding": "application/json",
2121+ "schema": {
2222+ "type": "object",
2323+ "required": ["thread"],
2424+ "properties": {
2525+ "thread": {
2626+ "type": "array",
2727+ "description": "A flat list of other thread items. The depth of each item is indicated by the depth property inside the item.",
2828+ "items": {
2929+ "type": "ref",
3030+ "ref": "#threadItem"
3131+ }
3232+ }
3333+ }
3434+ }
3535+ }
3636+ },
3737+ "threadItem": {
3838+ "type": "object",
3939+ "required": ["uri", "depth", "value"],
4040+ "properties": {
4141+ "uri": {
4242+ "type": "string",
4343+ "format": "at-uri"
4444+ },
4545+ "depth": {
4646+ "type": "integer",
4747+ "description": "The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths."
4848+ },
4949+ "value": {
5050+ "type": "union",
5151+ "refs": ["app.bsky.unspecced.defs#threadItemPost"]
5252+ }
5353+ }
5454+ }
5555+ }
5656+}
+94
lexicons/app/bsky/unspecced/getPostThreadV2.json
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.unspecced.getPostThreadV2",
44+ "defs": {
55+ "main": {
66+ "type": "query",
77+ "description": "(NOTE: this endpoint is under development and WILL change without notice. Don't use it until it is moved out of `unspecced` or your application WILL break) Get posts in a thread. It is based in an anchor post at any depth of the tree, and returns posts above it (recursively resolving the parent, without further branching to their replies) and below it (recursive replies, with branching to their replies). Does not require auth, but additional metadata and filtering will be applied for authed requests.",
88+ "parameters": {
99+ "type": "params",
1010+ "required": ["anchor"],
1111+ "properties": {
1212+ "anchor": {
1313+ "type": "string",
1414+ "format": "at-uri",
1515+ "description": "Reference (AT-URI) to post record. This is the anchor post, and the thread will be built around it. It can be any post in the tree, not necessarily a root post."
1616+ },
1717+ "above": {
1818+ "type": "boolean",
1919+ "description": "Whether to include parents above the anchor.",
2020+ "default": true
2121+ },
2222+ "below": {
2323+ "type": "integer",
2424+ "description": "How many levels of replies to include below the anchor.",
2525+ "default": 6,
2626+ "minimum": 0,
2727+ "maximum": 20
2828+ },
2929+ "branchingFactor": {
3030+ "type": "integer",
3131+ "description": "Maximum of replies to include at each level of the thread, except for the direct replies to the anchor, which are (NOTE: currently, during unspecced phase) all returned (NOTE: later they might be paginated).",
3232+ "default": 10,
3333+ "minimum": 0,
3434+ "maximum": 100
3535+ },
3636+ "sort": {
3737+ "type": "string",
3838+ "description": "Sorting for the thread replies.",
3939+ "knownValues": ["newest", "oldest", "top"],
4040+ "default": "oldest"
4141+ }
4242+ }
4343+ },
4444+ "output": {
4545+ "encoding": "application/json",
4646+ "schema": {
4747+ "type": "object",
4848+ "required": ["thread", "hasOtherReplies"],
4949+ "properties": {
5050+ "thread": {
5151+ "type": "array",
5252+ "description": "A flat list of thread items. The depth of each item is indicated by the depth property inside the item.",
5353+ "items": {
5454+ "type": "ref",
5555+ "ref": "#threadItem"
5656+ }
5757+ },
5858+ "threadgate": {
5959+ "type": "ref",
6060+ "ref": "app.bsky.feed.defs#threadgateView"
6161+ },
6262+ "hasOtherReplies": {
6363+ "type": "boolean",
6464+ "description": "Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them."
6565+ }
6666+ }
6767+ }
6868+ }
6969+ },
7070+ "threadItem": {
7171+ "type": "object",
7272+ "required": ["uri", "depth", "value"],
7373+ "properties": {
7474+ "uri": {
7575+ "type": "string",
7676+ "format": "at-uri"
7777+ },
7878+ "depth": {
7979+ "type": "integer",
8080+ "description": "The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths."
8181+ },
8282+ "value": {
8383+ "type": "union",
8484+ "refs": [
8585+ "app.bsky.unspecced.defs#threadItemPost",
8686+ "app.bsky.unspecced.defs#threadItemNoUnauthenticated",
8787+ "app.bsky.unspecced.defs#threadItemNotFound",
8888+ "app.bsky.unspecced.defs#threadItemBlocked"
8989+ ]
9090+ }
9191+ }
9292+ }
9393+ }
9494+}
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.unspecced.getTrendsSkeleton",
44+ "defs": {
55+ "main": {
66+ "type": "query",
77+ "description": "Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends",
88+ "parameters": {
99+ "type": "params",
1010+ "properties": {
1111+ "viewer": {
1212+ "type": "string",
1313+ "format": "did",
1414+ "description": "DID of the account making the request (not included for public/unauthenticated queries)."
1515+ },
1616+ "limit": {
1717+ "type": "integer",
1818+ "minimum": 1,
1919+ "maximum": 25,
2020+ "default": 10
2121+ }
2222+ }
2323+ },
2424+ "output": {
2525+ "encoding": "application/json",
2626+ "schema": {
2727+ "type": "object",
2828+ "required": ["trends"],
2929+ "properties": {
3030+ "trends": {
3131+ "type": "array",
3232+ "items": {
3333+ "type": "ref",
3434+ "ref": "app.bsky.unspecced.defs#skeletonTrend"
3535+ }
3636+ }
3737+ }
3838+ }
3939+ }
4040+ }
4141+ }
4242+}
+43
lexicons/app/bsky/unspecced/initAgeAssurance.json
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.unspecced.initAgeAssurance",
44+ "defs": {
55+ "main": {
66+ "type": "procedure",
77+ "description": "Initiate age assurance for an account. This is a one-time action that will start the process of verifying the user's age.",
88+ "input": {
99+ "encoding": "application/json",
1010+ "schema": {
1111+ "type": "object",
1212+ "required": ["email", "language", "countryCode"],
1313+ "properties": {
1414+ "email": {
1515+ "type": "string",
1616+ "description": "The user's email address to receive assurance instructions."
1717+ },
1818+ "language": {
1919+ "type": "string",
2020+ "description": "The user's preferred language for communication during the assurance process."
2121+ },
2222+ "countryCode": {
2323+ "type": "string",
2424+ "description": "An ISO 3166-1 alpha-2 code of the user's location."
2525+ }
2626+ }
2727+ }
2828+ },
2929+ "output": {
3030+ "encoding": "application/json",
3131+ "schema": {
3232+ "type": "ref",
3333+ "ref": "app.bsky.unspecced.defs#ageAssuranceState"
3434+ }
3535+ },
3636+ "errors": [
3737+ { "name": "InvalidEmail" },
3838+ { "name": "DidTooLong" },
3939+ { "name": "InvalidInitiation" }
4040+ ]
4141+ }
4242+ }
4343+}
+5-1
lexicons/chat/bsky/actor/defs.json
···2525 },
2626 "chatDisabled": {
2727 "type": "boolean",
2828- "description": "Set to true when the actor cannot actively participate in converations"
2828+ "description": "Set to true when the actor cannot actively participate in conversations"
2929+ },
3030+ "verification": {
3131+ "type": "ref",
3232+ "ref": "app.bsky.actor.defs#verificationState"
2933 }
3034 }
3135 }
+55
lexicons/chat/bsky/convo/addReaction.json
···11+{
22+ "lexicon": 1,
33+ "id": "chat.bsky.convo.addReaction",
44+ "defs": {
55+ "main": {
66+ "type": "procedure",
77+ "description": "Adds an emoji reaction to a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in a single reaction.",
88+ "input": {
99+ "encoding": "application/json",
1010+ "schema": {
1111+ "type": "object",
1212+ "required": ["convoId", "messageId", "value"],
1313+ "properties": {
1414+ "convoId": { "type": "string" },
1515+ "messageId": { "type": "string" },
1616+ "value": {
1717+ "type": "string",
1818+ "minLength": 1,
1919+ "maxLength": 64,
2020+ "minGraphemes": 1,
2121+ "maxGraphemes": 1
2222+ }
2323+ }
2424+ }
2525+ },
2626+ "output": {
2727+ "encoding": "application/json",
2828+ "schema": {
2929+ "type": "object",
3030+ "required": ["message"],
3131+ "properties": {
3232+ "message": {
3333+ "type": "ref",
3434+ "ref": "chat.bsky.convo.defs#messageView"
3535+ }
3636+ }
3737+ }
3838+ },
3939+ "errors": [
4040+ {
4141+ "name": "ReactionMessageDeleted",
4242+ "description": "Indicates that the message has been deleted and reactions can no longer be added/removed."
4343+ },
4444+ {
4545+ "name": "ReactionLimitReached",
4646+ "description": "Indicates that the message has the maximum number of reactions allowed for a single user, and the requested reaction wasn't yet present. If it was already present, the request will not fail since it is idempotent."
4747+ },
4848+ {
4949+ "name": "ReactionInvalidValue",
5050+ "description": "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji."
5151+ }
5252+ ]
5353+ }
5454+ }
5555+}
···11+{
22+ "lexicon": 1,
33+ "id": "chat.bsky.convo.removeReaction",
44+ "defs": {
55+ "main": {
66+ "type": "procedure",
77+ "description": "Removes an emoji reaction from a message. Requires authentication. It is idempotent, so multiple calls from the same user with the same emoji result in that reaction not being present, even if it already wasn't.",
88+ "input": {
99+ "encoding": "application/json",
1010+ "schema": {
1111+ "type": "object",
1212+ "required": ["convoId", "messageId", "value"],
1313+ "properties": {
1414+ "convoId": { "type": "string" },
1515+ "messageId": { "type": "string" },
1616+ "value": {
1717+ "type": "string",
1818+ "minLength": 1,
1919+ "maxLength": 64,
2020+ "minGraphemes": 1,
2121+ "maxGraphemes": 1
2222+ }
2323+ }
2424+ }
2525+ },
2626+ "output": {
2727+ "encoding": "application/json",
2828+ "schema": {
2929+ "type": "object",
3030+ "required": ["message"],
3131+ "properties": {
3232+ "message": {
3333+ "type": "ref",
3434+ "ref": "chat.bsky.convo.defs#messageView"
3535+ }
3636+ }
3737+ }
3838+ },
3939+ "errors": [
4040+ {
4141+ "name": "ReactionMessageDeleted",
4242+ "description": "Indicates that the message has been deleted and reactions can no longer be added/removed."
4343+ },
4444+ {
4545+ "name": "ReactionInvalidValue",
4646+ "description": "Indicates the value for the reaction is not acceptable. In general, this means it is not an emoji."
4747+ }
4848+ ]
4949+ }
5050+ }
5151+}
···11+{
22+ "lexicon": 1,
33+ "id": "com.atproto.identity.refreshIdentity",
44+ "defs": {
55+ "main": {
66+ "type": "procedure",
77+ "description": "Request that the server re-resolve an identity (DID and handle). The server may ignore this request, or require authentication, depending on the role, implementation, and policy of the server.",
88+ "input": {
99+ "encoding": "application/json",
1010+ "schema": {
1111+ "type": "object",
1212+ "required": ["identifier"],
1313+ "properties": {
1414+ "identifier": {
1515+ "type": "string",
1616+ "format": "at-identifier"
1717+ }
1818+ }
1919+ }
2020+ },
2121+ "output": {
2222+ "encoding": "application/json",
2323+ "schema": {
2424+ "type": "ref",
2525+ "ref": "com.atproto.identity.defs#identityInfo"
2626+ }
2727+ },
2828+ "errors": [
2929+ {
3030+ "name": "HandleNotFound",
3131+ "description": "The resolution process confirmed that the handle does not resolve to any DID."
3232+ },
3333+ {
3434+ "name": "DidNotFound",
3535+ "description": "The DID resolution process confirmed that there is no current DID."
3636+ },
3737+ {
3838+ "name": "DidDeactivated",
3939+ "description": "The DID previously existed, but has been deactivated."
4040+ }
4141+ ]
4242+ }
4343+ }
4444+}
+44
lexicons/com/atproto/identity/resolveDid.json
···11+{
22+ "lexicon": 1,
33+ "id": "com.atproto.identity.resolveDid",
44+ "defs": {
55+ "main": {
66+ "type": "query",
77+ "description": "Resolves DID to DID document. Does not bi-directionally verify handle.",
88+ "parameters": {
99+ "type": "params",
1010+ "required": ["did"],
1111+ "properties": {
1212+ "did": {
1313+ "type": "string",
1414+ "format": "did",
1515+ "description": "DID to resolve."
1616+ }
1717+ }
1818+ },
1919+ "output": {
2020+ "encoding": "application/json",
2121+ "schema": {
2222+ "type": "object",
2323+ "required": ["didDoc"],
2424+ "properties": {
2525+ "didDoc": {
2626+ "type": "unknown",
2727+ "description": "The complete DID document for the identity."
2828+ }
2929+ }
3030+ }
3131+ },
3232+ "errors": [
3333+ {
3434+ "name": "DidNotFound",
3535+ "description": "The DID resolution process confirmed that there is no current DID."
3636+ },
3737+ {
3838+ "name": "DidDeactivated",
3939+ "description": "The DID previously existed, but has been deactivated."
4040+ }
4141+ ]
4242+ }
4343+ }
4444+}
+8-2
lexicons/com/atproto/identity/resolveHandle.json
···44 "defs": {
55 "main": {
66 "type": "query",
77- "description": "Resolves a handle (domain name) to a DID.",
77+ "description": "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.",
88 "parameters": {
99 "type": "params",
1010 "required": ["handle"],
···2525 "did": { "type": "string", "format": "did" }
2626 }
2727 }
2828- }
2828+ },
2929+ "errors": [
3030+ {
3131+ "name": "HandleNotFound",
3232+ "description": "The resolution process confirmed that the handle does not resolve to any DID."
3333+ }
3434+ ]
2935 }
3036 }
3137}
···2727 "description": "The number of records to return."
2828 },
2929 "cursor": { "type": "string" },
3030- "rkeyStart": {
3131- "type": "string",
3232- "description": "DEPRECATED: The lowest sort-ordered rkey to start from (exclusive)"
3333- },
3434- "rkeyEnd": {
3535- "type": "string",
3636- "description": "DEPRECATED: The highest sort-ordered rkey to stop at (exclusive)"
3737- },
3830 "reverse": {
3931 "type": "boolean",
4032 "description": "Flag to reverse the order of the returned records."
···1515 "description": "The DID of the repo."
1616 },
1717 "collection": { "type": "string", "format": "nsid" },
1818- "rkey": { "type": "string", "description": "Record Key" },
1919- "commit": {
1818+ "rkey": {
2019 "type": "string",
2121- "format": "cid",
2222- "description": "DEPRECATED: referenced a repo commit by CID, and retrieved record as of that commit"
2020+ "description": "Record Key",
2121+ "format": "record-key"
2322 }
2423 }
2524 },
+1
lexicons/com/atproto/sync/getRepo.json
···1616 },
1717 "since": {
1818 "type": "string",
1919+ "format": "tid",
1920 "description": "The revision ('rev') of the repo to create a diff from."
2021 }
2122 }
+9-1
lexicons/com/atproto/sync/getRepoStatus.json
···2727 "status": {
2828 "type": "string",
2929 "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.",
3030- "knownValues": ["takendown", "suspended", "deactivated"]
3030+ "knownValues": [
3131+ "takendown",
3232+ "suspended",
3333+ "deleted",
3434+ "deactivated",
3535+ "desynchronized",
3636+ "throttled"
3737+ ]
3138 },
3239 "rev": {
3340 "type": "string",
4141+ "format": "tid",
3442 "description": "Optional field, the current rev of the repo, if active=true"
3543 }
3644 }
+1
lexicons/com/atproto/sync/listBlobs.json
···1616 },
1717 "since": {
1818 "type": "string",
1919+ "format": "tid",
1920 "description": "Optional revision of the repo to list blobs since."
2021 },
2122 "limit": {
+56
lexicons/com/atproto/sync/listHosts.json
···11+{
22+ "lexicon": 1,
33+ "id": "com.atproto.sync.listHosts",
44+ "defs": {
55+ "main": {
66+ "type": "query",
77+ "description": "Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from. Implemented by relays.",
88+ "parameters": {
99+ "type": "params",
1010+ "properties": {
1111+ "limit": {
1212+ "type": "integer",
1313+ "minimum": 1,
1414+ "maximum": 1000,
1515+ "default": 200
1616+ },
1717+ "cursor": { "type": "string" }
1818+ }
1919+ },
2020+ "output": {
2121+ "encoding": "application/json",
2222+ "schema": {
2323+ "type": "object",
2424+ "required": ["hosts"],
2525+ "properties": {
2626+ "cursor": { "type": "string" },
2727+ "hosts": {
2828+ "type": "array",
2929+ "items": { "type": "ref", "ref": "#host" },
3030+ "description": "Sort order is not formally specified. Recommended order is by time host was first seen by the server, with oldest first."
3131+ }
3232+ }
3333+ }
3434+ }
3535+ },
3636+ "host": {
3737+ "type": "object",
3838+ "required": ["hostname"],
3939+ "properties": {
4040+ "hostname": {
4141+ "type": "string",
4242+ "description": "hostname of server; not a URL (no scheme)"
4343+ },
4444+ "seq": {
4545+ "type": "integer",
4646+ "description": "Recent repo stream event sequence number. May be delayed from actual stream processing (eg, persisted cursor not in-memory cursor)."
4747+ },
4848+ "accountCount": { "type": "integer" },
4949+ "status": {
5050+ "type": "ref",
5151+ "ref": "com.atproto.sync.defs#hostStatus"
5252+ }
5353+ }
5454+ }
5555+ }
5656+}
+9-2
lexicons/com/atproto/sync/listRepos.json
···4242 "format": "cid",
4343 "description": "Current repo commit CID"
4444 },
4545- "rev": { "type": "string" },
4545+ "rev": { "type": "string", "format": "tid" },
4646 "active": { "type": "boolean" },
4747 "status": {
4848 "type": "string",
4949 "description": "If active=false, this optional field indicates a possible reason for why the account is not active. If active=false and no status is supplied, then the host makes no claim for why the repository is no longer being hosted.",
5050- "knownValues": ["takendown", "suspended", "deactivated"]
5050+ "knownValues": [
5151+ "takendown",
5252+ "suspended",
5353+ "deleted",
5454+ "deactivated",
5555+ "desynchronized",
5656+ "throttled"
5757+ ]
5158 }
5259 }
5360 }
+1-1
lexicons/com/atproto/sync/notifyOfUpdate.json
···44 "defs": {
55 "main": {
66 "type": "procedure",
77- "description": "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay.",
77+ "description": "Notify a crawling service of a recent update, and that crawling should resume. Intended use is after a gap between repo stream events caused the crawling service to disconnect. Does not require auth; implemented by Relay. DEPRECATED: just use com.atproto.sync.requestCrawl",
88 "input": {
99 "encoding": "application/json",
1010 "schema": {
···1717 "message": {
1818 "schema": {
1919 "type": "union",
2020- "refs": [
2121- "#commit",
2222- "#identity",
2323- "#account",
2424- "#handle",
2525- "#migrate",
2626- "#tombstone",
2727- "#info"
2828- ]
2020+ "refs": ["#commit", "#sync", "#identity", "#account", "#info"]
2921 }
3022 },
3123 "errors": [
···5244 "blobs",
5345 "time"
5446 ],
5555- "nullable": ["prev", "since"],
4747+ "nullable": ["since"],
5648 "properties": {
5749 "seq": {
5850 "type": "integer",
···6153 "rebase": { "type": "boolean", "description": "DEPRECATED -- unused" },
6254 "tooBig": {
6355 "type": "boolean",
6464- "description": "Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data."
5656+ "description": "DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops, or data size was too large. Consumers will need to make a separate request to get missing data."
6557 },
6658 "repo": {
6759 "type": "string",
6860 "format": "did",
6969- "description": "The repo this event comes from."
6161+ "description": "The repo this event comes from. Note that all other message types name this field 'did'."
7062 },
7163 "commit": {
7264 "type": "cid-link",
7365 "description": "Repo commit object CID."
7466 },
7575- "prev": {
7676- "type": "cid-link",
7777- "description": "DEPRECATED -- unused. WARNING -- nullable and optional; stick with optional to ensure golang interoperability."
7878- },
7967 "rev": {
8068 "type": "string",
6969+ "format": "tid",
8170 "description": "The rev of the emitted commit. Note that this information is also in the commit object included in blocks, unless this is a tooBig event."
8271 },
8372 "since": {
8473 "type": "string",
7474+ "format": "tid",
8575 "description": "The rev of the last emitted commit from this repo (if any)."
8676 },
8777 "blocks": {
8878 "type": "bytes",
8989- "description": "CAR file containing relevant blocks, as a diff since the previous repo state.",
9090- "maxLength": 1000000
7979+ "description": "CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.",
8080+ "maxLength": 2000000
9181 },
9282 "ops": {
9383 "type": "array",
···10292 "type": "array",
10393 "items": {
10494 "type": "cid-link",
105105- "description": "List of new blobs (by CID) referenced by records in this commit."
9595+ "description": "DEPRECATED -- will soon always be empty. List of new blobs (by CID) referenced by records in this commit."
10696 }
9797+ },
9898+ "prevData": {
9999+ "type": "cid-link",
100100+ "description": "The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is effectively required for the 'inductive' version of firehose."
101101+ },
102102+ "time": {
103103+ "type": "string",
104104+ "format": "datetime",
105105+ "description": "Timestamp of when this message was originally broadcast."
106106+ }
107107+ }
108108+ },
109109+ "sync": {
110110+ "type": "object",
111111+ "description": "Updates the repo to a new state, without necessarily including that state on the firehose. Used to recover from broken commit streams, data loss incidents, or in situations where upstream host does not know recent state of the repository.",
112112+ "required": ["seq", "did", "blocks", "rev", "time"],
113113+ "properties": {
114114+ "seq": {
115115+ "type": "integer",
116116+ "description": "The stream sequence number of this message."
117117+ },
118118+ "did": {
119119+ "type": "string",
120120+ "format": "did",
121121+ "description": "The account this repo event corresponds to. Must match that in the commit object."
122122+ },
123123+ "blocks": {
124124+ "type": "bytes",
125125+ "description": "CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first 'root'.",
126126+ "maxLength": 10000
127127+ },
128128+ "rev": {
129129+ "type": "string",
130130+ "description": "The rev of the commit. This value must match that in the commit object."
107131 },
108132 "time": {
109133 "type": "string",
···142166 "status": {
143167 "type": "string",
144168 "description": "If active=false, this optional field indicates a reason for why the account is not active.",
145145- "knownValues": ["takendown", "suspended", "deleted", "deactivated"]
169169+ "knownValues": [
170170+ "takendown",
171171+ "suspended",
172172+ "deleted",
173173+ "deactivated",
174174+ "desynchronized",
175175+ "throttled"
176176+ ]
146177 }
147178 }
148179 },
149149- "handle": {
150150- "type": "object",
151151- "description": "DEPRECATED -- Use #identity event instead",
152152- "required": ["seq", "did", "handle", "time"],
153153- "properties": {
154154- "seq": { "type": "integer" },
155155- "did": { "type": "string", "format": "did" },
156156- "handle": { "type": "string", "format": "handle" },
157157- "time": { "type": "string", "format": "datetime" }
158158- }
159159- },
160160- "migrate": {
161161- "type": "object",
162162- "description": "DEPRECATED -- Use #account event instead",
163163- "required": ["seq", "did", "migrateTo", "time"],
164164- "nullable": ["migrateTo"],
165165- "properties": {
166166- "seq": { "type": "integer" },
167167- "did": { "type": "string", "format": "did" },
168168- "migrateTo": { "type": "string" },
169169- "time": { "type": "string", "format": "datetime" }
170170- }
171171- },
172172- "tombstone": {
173173- "type": "object",
174174- "description": "DEPRECATED -- Use #account event instead",
175175- "required": ["seq", "did", "time"],
176176- "properties": {
177177- "seq": { "type": "integer" },
178178- "did": { "type": "string", "format": "did" },
179179- "time": { "type": "string", "format": "datetime" }
180180- }
181181- },
182180 "info": {
183181 "type": "object",
184182 "required": ["name"],
···206204 "cid": {
207205 "type": "cid-link",
208206 "description": "For creates and updates, the new record CID. For deletions, null."
207207+ },
208208+ "prev": {
209209+ "type": "cid-link",
210210+ "description": "For updates and deletes, the previous record CID (required for inductive firehose). For creations, field should not be defined."
209211 }
210212 }
211213 }
···113113 "description": "If specified, only events where the action policies match any of the given policies are returned"
114114 }
115115 },
116116+ "modTool": {
117117+ "type": "array",
118118+ "items": {
119119+ "type": "string"
120120+ },
121121+ "description": "If specified, only events where the modTool name matches any of the given values are returned"
122122+ },
123123+ "batchId": {
124124+ "type": "string",
125125+ "description": "If specified, only events where the batchId matches the given value are returned"
126126+ },
127127+ "ageAssuranceState": {
128128+ "type": "string",
129129+ "description": "If specified, only events where the age assurance state matches the given value are returned",
130130+ "knownValues": ["pending", "assured", "unknown", "reset", "blocked"]
131131+ },
132132+ "withStrike": {
133133+ "type": "boolean",
134134+ "description": "If specified, only events where strikeCount value is set are returned."
135135+ },
116136 "cursor": {
117137 "type": "string"
118138 }
···9090 },
9191 "reviewState": {
9292 "type": "string",
9393- "description": "Specify when fetching subjects in a certain state"
9393+ "description": "Specify when fetching subjects in a certain state",
9494+ "knownValues": [
9595+ "tools.ozone.moderation.defs#reviewOpen",
9696+ "tools.ozone.moderation.defs#reviewClosed",
9797+ "tools.ozone.moderation.defs#reviewEscalated",
9898+ "tools.ozone.moderation.defs#reviewNone"
9999+ ]
94100 },
95101 "ignoreSubjects": {
96102 "type": "array",
···182188 "maximum": 100,
183189 "type": "integer",
184190 "description": "If specified, only subjects that have priority score value above the given value will be returned."
191191+ },
192192+ "minStrikeCount": {
193193+ "type": "integer",
194194+ "minimum": 1,
195195+ "description": "If specified, only subjects that belong to an account that has at least this many active strikes will be returned."
196196+ },
197197+ "ageAssuranceState": {
198198+ "type": "string",
199199+ "description": "If specified, only subjects with the given age assurance state will be returned.",
200200+ "knownValues": ["pending", "assured", "unknown", "reset", "blocked"]
185201 }
186202 }
187203 },
···11+{
22+ "lexicon": 1,
33+ "id": "tools.ozone.verification.defs",
44+ "defs": {
55+ "verificationView": {
66+ "type": "object",
77+ "description": "Verification data for the associated subject.",
88+ "required": [
99+ "issuer",
1010+ "uri",
1111+ "subject",
1212+ "handle",
1313+ "displayName",
1414+ "createdAt"
1515+ ],
1616+ "properties": {
1717+ "issuer": {
1818+ "type": "string",
1919+ "description": "The user who issued this verification.",
2020+ "format": "did"
2121+ },
2222+ "uri": {
2323+ "type": "string",
2424+ "description": "The AT-URI of the verification record.",
2525+ "format": "at-uri"
2626+ },
2727+ "subject": {
2828+ "type": "string",
2929+ "format": "did",
3030+ "description": "The subject of the verification."
3131+ },
3232+ "handle": {
3333+ "type": "string",
3434+ "description": "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.",
3535+ "format": "handle"
3636+ },
3737+ "displayName": {
3838+ "type": "string",
3939+ "description": "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying."
4040+ },
4141+ "createdAt": {
4242+ "type": "string",
4343+ "description": "Timestamp when the verification was created.",
4444+ "format": "datetime"
4545+ },
4646+ "revokeReason": {
4747+ "type": "string",
4848+ "description": "Describes the reason for revocation, also indicating that the verification is no longer valid."
4949+ },
5050+ "revokedAt": {
5151+ "type": "string",
5252+ "description": "Timestamp when the verification was revoked.",
5353+ "format": "datetime"
5454+ },
5555+ "revokedBy": {
5656+ "type": "string",
5757+ "description": "The user who revoked this verification.",
5858+ "format": "did"
5959+ },
6060+ "subjectProfile": {
6161+ "type": "union",
6262+ "refs": []
6363+ },
6464+ "issuerProfile": {
6565+ "type": "union",
6666+ "refs": []
6767+ },
6868+ "subjectRepo": {
6969+ "type": "union",
7070+ "refs": [
7171+ "tools.ozone.moderation.defs#repoViewDetail",
7272+ "tools.ozone.moderation.defs#repoViewNotFound"
7373+ ]
7474+ },
7575+ "issuerRepo": {
7676+ "type": "union",
7777+ "refs": [
7878+ "tools.ozone.moderation.defs#repoViewDetail",
7979+ "tools.ozone.moderation.defs#repoViewNotFound"
8080+ ]
8181+ }
8282+ }
8383+ }
8484+ }
8585+}