diff --git a/deno.json b/deno.json index 4ee6d0a..817cad0 100644 --- a/deno.json +++ b/deno.json @@ -9,7 +9,7 @@ "dev": { "dependencies": ["dev:db", "dev:api", "dev:ingest"] }, - "codegen": "deno run -A jsr:@atp/lex-gen@^0.1.0-alpha.2 server -o ./lex -i ./lexicons", + "codegen": "deno run -A ../atp/lex-gen/mod.ts server -o ./lex -i ./lexicons", "start": "deno run -A main.ts", "docker-dev": "docker compose -f compose.dev.yaml up --build --watch" }, diff --git a/lex/index.ts b/lex/index.ts index babb48f..74061f8 100644 --- a/lex/index.ts +++ b/lex/index.ts @@ -55,9 +55,21 @@ import type * as ToolsOzoneModerationEmitEvent from "./types/tools/ozone/moderat import type * as ToolsOzoneModerationSearchRepos from "./types/tools/ozone/moderation/searchRepos.ts"; import type * as ToolsOzoneModerationGetAccountTimeline from "./types/tools/ozone/moderation/getAccountTimeline.ts"; import type * as ToolsOzoneModerationGetRepos from "./types/tools/ozone/moderation/getRepos.ts"; +import type * as AppBskyDraftCreateDraft from "./types/app/bsky/draft/createDraft.ts"; +import type * as AppBskyDraftUpdateDraft from "./types/app/bsky/draft/updateDraft.ts"; +import type * as AppBskyDraftGetDrafts from "./types/app/bsky/draft/getDrafts.ts"; +import type * as AppBskyDraftDeleteDraft from "./types/app/bsky/draft/deleteDraft.ts"; import type * as AppBskyVideoUploadVideo from "./types/app/bsky/video/uploadVideo.ts"; import type * as AppBskyVideoGetJobStatus from "./types/app/bsky/video/getJobStatus.ts"; import type * as AppBskyVideoGetUploadLimits from "./types/app/bsky/video/getUploadLimits.ts"; +import type * as AppBskyContactSendNotification from "./types/app/bsky/contact/sendNotification.ts"; +import type * as AppBskyContactGetSyncStatus from "./types/app/bsky/contact/getSyncStatus.ts"; +import type * as AppBskyContactStartPhoneVerification from "./types/app/bsky/contact/startPhoneVerification.ts"; +import type * as AppBskyContactGetMatches from "./types/app/bsky/contact/getMatches.ts"; +import type * as AppBskyContactImportContacts from "./types/app/bsky/contact/importContacts.ts"; +import type * as AppBskyContactDismissMatch from "./types/app/bsky/contact/dismissMatch.ts"; +import type * as AppBskyContactRemoveData from "./types/app/bsky/contact/removeData.ts"; +import type * as AppBskyContactVerifyPhone from "./types/app/bsky/contact/verifyPhone.ts"; import type * as AppBskyBookmarkDeleteBookmark from "./types/app/bsky/bookmark/deleteBookmark.ts"; import type * as AppBskyBookmarkGetBookmarks from "./types/app/bsky/bookmark/getBookmarks.ts"; import type * as AppBskyBookmarkCreateBookmark from "./types/app/bsky/bookmark/createBookmark.ts"; @@ -73,7 +85,9 @@ import type * as AppBskyNotificationListNotifications from "./types/app/bsky/not import type * as AppBskyNotificationGetUnreadCount from "./types/app/bsky/notification/getUnreadCount.ts"; import type * as AppBskyUnspeccedGetSuggestedFeedsSkeleton from "./types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts"; import type * as AppBskyUnspeccedSearchStarterPacksSkeleton from "./types/app/bsky/unspecced/searchStarterPacksSkeleton.ts"; +import type * as AppBskyUnspeccedGetSuggestedUsersForExplore from "./types/app/bsky/unspecced/getSuggestedUsersForExplore.ts"; import type * as AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton from "./types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.ts"; +import type * as AppBskyUnspeccedGetSuggestedUsersForExploreSkeleton from "./types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.ts"; import type * as AppBskyUnspeccedGetSuggestedUsers from "./types/app/bsky/unspecced/getSuggestedUsers.ts"; import type * as AppBskyUnspeccedGetPostThreadOtherV2 from "./types/app/bsky/unspecced/getPostThreadOtherV2.ts"; import type * as AppBskyUnspeccedGetSuggestedStarterPacks from "./types/app/bsky/unspecced/getSuggestedStarterPacks.ts"; @@ -85,11 +99,17 @@ import type * as AppBskyUnspeccedGetTrends from "./types/app/bsky/unspecced/getT import type * as AppBskyUnspeccedSearchActorsSkeleton from "./types/app/bsky/unspecced/searchActorsSkeleton.ts"; import type * as AppBskyUnspeccedGetSuggestionsSkeleton from "./types/app/bsky/unspecced/getSuggestionsSkeleton.ts"; import type * as AppBskyUnspeccedSearchPostsSkeleton from "./types/app/bsky/unspecced/searchPostsSkeleton.ts"; +import type * as AppBskyUnspeccedGetOnboardingSuggestedUsersSkeleton from "./types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.ts"; +import type * as AppBskyUnspeccedGetSuggestedUsersForDiscoverSkeleton from "./types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.ts"; +import type * as AppBskyUnspeccedGetSuggestedUsersForDiscover from "./types/app/bsky/unspecced/getSuggestedUsersForDiscover.ts"; import type * as AppBskyUnspeccedGetAgeAssuranceState from "./types/app/bsky/unspecced/getAgeAssuranceState.ts"; import type * as AppBskyUnspeccedGetPopularFeedGenerators from "./types/app/bsky/unspecced/getPopularFeedGenerators.ts"; +import type * as AppBskyUnspeccedGetSuggestedOnboardingUsers from "./types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts"; +import type * as AppBskyUnspeccedGetSuggestedUsersForSeeMore from "./types/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts"; import type * as AppBskyUnspeccedInitAgeAssurance from "./types/app/bsky/unspecced/initAgeAssurance.ts"; import type * as AppBskyUnspeccedGetTrendingTopics from "./types/app/bsky/unspecced/getTrendingTopics.ts"; import type * as AppBskyUnspeccedGetTaggedSuggestions from "./types/app/bsky/unspecced/getTaggedSuggestions.ts"; +import type * as AppBskyUnspeccedGetSuggestedUsersForSeeMoreSkeleton from "./types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.ts"; import type * as AppBskyUnspeccedGetSuggestedFeeds from "./types/app/bsky/unspecced/getSuggestedFeeds.ts"; import type * as AppBskyUnspeccedGetTrendsSkeleton from "./types/app/bsky/unspecced/getTrendsSkeleton.ts"; import type * as AppBskyUnspeccedGetConfig from "./types/app/bsky/unspecced/getConfig.ts"; @@ -1119,7 +1139,9 @@ export class AppNS { export class AppBskyNS { _server: Server; + draft: AppBskyDraftNS; video: AppBskyVideoNS; + contact: AppBskyContactNS; bookmark: AppBskyBookmarkNS; embed: AppBskyEmbedNS; notification: AppBskyNotificationNS; @@ -1133,7 +1155,9 @@ export class AppBskyNS { constructor(server: Server) { this._server = server; + this.draft = new AppBskyDraftNS(server); this.video = new AppBskyVideoNS(server); + this.contact = new AppBskyContactNS(server); this.bookmark = new AppBskyBookmarkNS(server); this.embed = new AppBskyEmbedNS(server); this.notification = new AppBskyNotificationNS(server); @@ -1147,6 +1171,62 @@ export class AppBskyNS { } } +export class AppBskyDraftNS { + _server: Server; + + constructor(server: Server) { + this._server = server; + } + + createDraft( + cfg: MethodConfigOrHandler< + A, + AppBskyDraftCreateDraft.QueryParams, + AppBskyDraftCreateDraft.HandlerInput, + AppBskyDraftCreateDraft.HandlerOutput + >, + ) { + const nsid = "app.bsky.draft.createDraft"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + updateDraft( + cfg: MethodConfigOrHandler< + A, + AppBskyDraftUpdateDraft.QueryParams, + AppBskyDraftUpdateDraft.HandlerInput, + AppBskyDraftUpdateDraft.HandlerOutput + >, + ) { + const nsid = "app.bsky.draft.updateDraft"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + getDrafts( + cfg: MethodConfigOrHandler< + A, + AppBskyDraftGetDrafts.QueryParams, + AppBskyDraftGetDrafts.HandlerInput, + AppBskyDraftGetDrafts.HandlerOutput + >, + ) { + const nsid = "app.bsky.draft.getDrafts"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + deleteDraft( + cfg: MethodConfigOrHandler< + A, + AppBskyDraftDeleteDraft.QueryParams, + AppBskyDraftDeleteDraft.HandlerInput, + AppBskyDraftDeleteDraft.HandlerOutput + >, + ) { + const nsid = "app.bsky.draft.deleteDraft"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } +} + export class AppBskyVideoNS { _server: Server; @@ -1191,6 +1271,110 @@ export class AppBskyVideoNS { } } +export class AppBskyContactNS { + _server: Server; + + constructor(server: Server) { + this._server = server; + } + + sendNotification( + cfg: MethodConfigOrHandler< + A, + AppBskyContactSendNotification.QueryParams, + AppBskyContactSendNotification.HandlerInput, + AppBskyContactSendNotification.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.sendNotification"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + getSyncStatus( + cfg: MethodConfigOrHandler< + A, + AppBskyContactGetSyncStatus.QueryParams, + AppBskyContactGetSyncStatus.HandlerInput, + AppBskyContactGetSyncStatus.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.getSyncStatus"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + startPhoneVerification( + cfg: MethodConfigOrHandler< + A, + AppBskyContactStartPhoneVerification.QueryParams, + AppBskyContactStartPhoneVerification.HandlerInput, + AppBskyContactStartPhoneVerification.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.startPhoneVerification"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + getMatches( + cfg: MethodConfigOrHandler< + A, + AppBskyContactGetMatches.QueryParams, + AppBskyContactGetMatches.HandlerInput, + AppBskyContactGetMatches.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.getMatches"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + importContacts( + cfg: MethodConfigOrHandler< + A, + AppBskyContactImportContacts.QueryParams, + AppBskyContactImportContacts.HandlerInput, + AppBskyContactImportContacts.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.importContacts"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + dismissMatch( + cfg: MethodConfigOrHandler< + A, + AppBskyContactDismissMatch.QueryParams, + AppBskyContactDismissMatch.HandlerInput, + AppBskyContactDismissMatch.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.dismissMatch"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + removeData( + cfg: MethodConfigOrHandler< + A, + AppBskyContactRemoveData.QueryParams, + AppBskyContactRemoveData.HandlerInput, + AppBskyContactRemoveData.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.removeData"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + verifyPhone( + cfg: MethodConfigOrHandler< + A, + AppBskyContactVerifyPhone.QueryParams, + AppBskyContactVerifyPhone.HandlerInput, + AppBskyContactVerifyPhone.HandlerOutput + >, + ) { + const nsid = "app.bsky.contact.verifyPhone"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } +} + export class AppBskyBookmarkNS { _server: Server; @@ -1402,6 +1586,18 @@ export class AppBskyUnspeccedNS { return this._server.xrpc.method(nsid, cfg); } + getSuggestedUsersForExplore( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetSuggestedUsersForExplore.QueryParams, + AppBskyUnspeccedGetSuggestedUsersForExplore.HandlerInput, + AppBskyUnspeccedGetSuggestedUsersForExplore.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getSuggestedUsersForExplore"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + getOnboardingSuggestedStarterPacksSkeleton( cfg: MethodConfigOrHandler< A, @@ -1415,6 +1611,18 @@ export class AppBskyUnspeccedNS { return this._server.xrpc.method(nsid, cfg); } + getSuggestedUsersForExploreSkeleton( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetSuggestedUsersForExploreSkeleton.QueryParams, + AppBskyUnspeccedGetSuggestedUsersForExploreSkeleton.HandlerInput, + AppBskyUnspeccedGetSuggestedUsersForExploreSkeleton.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getSuggestedUsersForExploreSkeleton"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + getSuggestedUsers( cfg: MethodConfigOrHandler< A, @@ -1547,6 +1755,42 @@ export class AppBskyUnspeccedNS { return this._server.xrpc.method(nsid, cfg); } + getOnboardingSuggestedUsersSkeleton( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetOnboardingSuggestedUsersSkeleton.QueryParams, + AppBskyUnspeccedGetOnboardingSuggestedUsersSkeleton.HandlerInput, + AppBskyUnspeccedGetOnboardingSuggestedUsersSkeleton.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + getSuggestedUsersForDiscoverSkeleton( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetSuggestedUsersForDiscoverSkeleton.QueryParams, + AppBskyUnspeccedGetSuggestedUsersForDiscoverSkeleton.HandlerInput, + AppBskyUnspeccedGetSuggestedUsersForDiscoverSkeleton.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getSuggestedUsersForDiscoverSkeleton"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + getSuggestedUsersForDiscover( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetSuggestedUsersForDiscover.QueryParams, + AppBskyUnspeccedGetSuggestedUsersForDiscover.HandlerInput, + AppBskyUnspeccedGetSuggestedUsersForDiscover.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getSuggestedUsersForDiscover"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + getAgeAssuranceState( cfg: MethodConfigOrHandler< A, @@ -1571,6 +1815,30 @@ export class AppBskyUnspeccedNS { return this._server.xrpc.method(nsid, cfg); } + getSuggestedOnboardingUsers( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetSuggestedOnboardingUsers.QueryParams, + AppBskyUnspeccedGetSuggestedOnboardingUsers.HandlerInput, + AppBskyUnspeccedGetSuggestedOnboardingUsers.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getSuggestedOnboardingUsers"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + + getSuggestedUsersForSeeMore( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetSuggestedUsersForSeeMore.QueryParams, + AppBskyUnspeccedGetSuggestedUsersForSeeMore.HandlerInput, + AppBskyUnspeccedGetSuggestedUsersForSeeMore.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getSuggestedUsersForSeeMore"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + initAgeAssurance( cfg: MethodConfigOrHandler< A, @@ -1607,6 +1875,18 @@ export class AppBskyUnspeccedNS { return this._server.xrpc.method(nsid, cfg); } + getSuggestedUsersForSeeMoreSkeleton( + cfg: MethodConfigOrHandler< + A, + AppBskyUnspeccedGetSuggestedUsersForSeeMoreSkeleton.QueryParams, + AppBskyUnspeccedGetSuggestedUsersForSeeMoreSkeleton.HandlerInput, + AppBskyUnspeccedGetSuggestedUsersForSeeMoreSkeleton.HandlerOutput + >, + ) { + const nsid = "app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeleton"; // @ts-ignore - dynamically generated + return this._server.xrpc.method(nsid, cfg); + } + getSuggestedFeeds( cfg: MethodConfigOrHandler< A, diff --git a/lex/lexicons.ts b/lex/lexicons.ts index 307624d..45a5231 100644 --- a/lex/lexicons.ts +++ b/lex/lexicons.ts @@ -3112,6 +3112,7 @@ export const schemaDict = { "lex:tools.ozone.moderation.defs#modEventPriorityScore", "lex:tools.ozone.moderation.defs#ageAssuranceEvent", "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent", + "lex:tools.ozone.moderation.defs#ageAssurancePurgeEvent", "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent", "lex:tools.ozone.moderation.defs#scheduleTakedownEvent", "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent", @@ -3189,6 +3190,7 @@ export const schemaDict = { "lex:tools.ozone.moderation.defs#modEventPriorityScore", "lex:tools.ozone.moderation.defs#ageAssuranceEvent", "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent", + "lex:tools.ozone.moderation.defs#ageAssurancePurgeEvent", "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent", "lex:tools.ozone.moderation.defs#scheduleTakedownEvent", "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent", @@ -3793,10 +3795,26 @@ export const schemaDict = { }, "comment": { "type": "string", + "minLength": 1, "description": "Comment describing the reason for the override.", }, }, }, + "ageAssurancePurgeEvent": { + "type": "object", + "description": + "Purges all age assurance events for the subject. Only works on DID subjects. Moderator-only.", + "required": [ + "comment", + ], + "properties": { + "comment": { + "type": "string", + "minLength": 1, + "description": "Comment describing the reason for the purge.", + }, + }, + }, "revokeAccountCredentialsEvent": { "type": "object", "description": @@ -3806,6 +3824,7 @@ export const schemaDict = { ], "properties": { "comment": { + "minLength": 1, "type": "string", "description": "Comment describing the reason for the revocation.", }, @@ -5266,6 +5285,7 @@ export const schemaDict = { "lex:tools.ozone.moderation.defs#modEventPriorityScore", "lex:tools.ozone.moderation.defs#ageAssuranceEvent", "lex:tools.ozone.moderation.defs#ageAssuranceOverrideEvent", + "lex:tools.ozone.moderation.defs#ageAssurancePurgeEvent", "lex:tools.ozone.moderation.defs#revokeAccountCredentialsEvent", "lex:tools.ozone.moderation.defs#scheduleTakedownEvent", "lex:tools.ozone.moderation.defs#cancelScheduledTakedownEvent", @@ -5544,241 +5564,364 @@ export const schemaDict = { }, }, }, - "AppBskyVideoUploadVideo": { - "lexicon": 1, - "id": "app.bsky.video.uploadVideo", - "defs": { - "main": { - "type": "procedure", - "description": "Upload a video to be processed then stored on the PDS.", - "input": { - "encoding": "video/mp4", - }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "jobStatus", - ], - "properties": { - "jobStatus": { - "type": "ref", - "ref": "lex:app.bsky.video.defs#jobStatus", - }, - }, - }, - }, - }, - }, - }, - "AppBskyVideoDefs": { + "AppBskyDraftDefs": { "lexicon": 1, - "id": "app.bsky.video.defs", + "id": "app.bsky.draft.defs", "defs": { - "jobStatus": { + "draftWithId": { + "description": + "A draft with an identifier, used to store drafts in private storage (stash).", "type": "object", "required": [ - "jobId", - "did", - "state", + "id", + "draft", ], "properties": { - "jobId": { + "id": { + "description": "A TID to be used as a draft identifier.", "type": "string", + "format": "tid", }, - "did": { - "type": "string", - "format": "did", + "draft": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draft", }, - "state": { + }, + }, + "draft": { + "description": "A draft containing an array of draft posts.", + "type": "object", + "required": [ + "posts", + ], + "properties": { + "deviceId": { "type": "string", "description": - "The state of the video processing job. All values not listed as a known value indicate that the job is in process.", - "knownValues": [ - "JOB_STATE_COMPLETED", - "JOB_STATE_FAILED", - ], - }, - "progress": { - "type": "integer", - "minimum": 0, - "maximum": 100, - "description": "Progress within the current processing state.", - }, - "blob": { - "type": "blob", + "UUIDv4 identifier of the device that created this draft.", + "maxLength": 100, }, - "error": { + "deviceName": { "type": "string", + "description": + "The device and/or platform on which the draft was created.", + "maxLength": 100, }, - "message": { - "type": "string", + "posts": { + "description": "Array of draft posts that compose this draft.", + "type": "array", + "minLength": 1, + "maxLength": 100, + "items": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftPost", + }, }, - }, - }, - }, - }, - "AppBskyVideoGetJobStatus": { - "lexicon": 1, - "id": "app.bsky.video.getJobStatus", - "defs": { - "main": { - "type": "query", - "description": "Get status details for a video processing job.", - "parameters": { - "type": "params", - "required": [ - "jobId", - ], - "properties": { - "jobId": { + "langs": { + "type": "array", + "description": + "Indicates human language of posts primary text content.", + "maxLength": 3, + "items": { "type": "string", + "format": "language", }, }, - }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "jobStatus", - ], - "properties": { - "jobStatus": { - "type": "ref", - "ref": "lex:app.bsky.video.defs#jobStatus", - }, + "postgateEmbeddingRules": { + "description": + "Embedding rules for the postgates to be created when this draft is published.", + "type": "array", + "maxLength": 5, + "items": { + "type": "union", + "refs": [ + "lex:app.bsky.feed.postgate#disableRule", + ], }, }, - }, - }, - }, - }, - "AppBskyVideoGetUploadLimits": { - "lexicon": 1, - "id": "app.bsky.video.getUploadLimits", - "defs": { - "main": { - "type": "query", - "description": "Get video upload limits for the authenticated user.", - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "canUpload", - ], - "properties": { - "canUpload": { - "type": "boolean", - }, - "remainingDailyVideos": { - "type": "integer", - }, - "remainingDailyBytes": { - "type": "integer", - }, - "message": { - "type": "string", - }, - "error": { - "type": "string", - }, + "threadgateAllow": { + "description": + "Allow-rules for the threadgate to be created when this draft is published.", + "type": "array", + "maxLength": 5, + "items": { + "type": "union", + "refs": [ + "lex:app.bsky.feed.threadgate#mentionRule", + "lex:app.bsky.feed.threadgate#followerRule", + "lex:app.bsky.feed.threadgate#followingRule", + "lex:app.bsky.feed.threadgate#listRule", + ], }, }, }, }, - }, - }, - "AppBskyBookmarkDefs": { - "lexicon": 1, - "id": "app.bsky.bookmark.defs", - "defs": { - "bookmark": { - "description": "Object used to store bookmark data in stash.", + "draftPost": { + "description": "One of the posts that compose a draft.", "type": "object", "required": [ - "subject", + "text", ], "properties": { - "subject": { + "text": { + "type": "string", + "maxLength": 10000, + "maxGraphemes": 1000, "description": - "A strong ref to the record to be bookmarked. Currently, only `app.bsky.feed.post` records are supported.", - "type": "ref", - "ref": "lex:com.atproto.repo.strongRef", + "The primary post content. It has a higher limit than post contents to allow storing a larger text that can later be refined into smaller posts.", + }, + "labels": { + "type": "union", + "description": + "Self-label values for this post. Effectively content warnings.", + "refs": [ + "lex:com.atproto.label.defs#selfLabels", + ], + }, + "embedImages": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftEmbedImage", + }, + "maxLength": 4, + }, + "embedVideos": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftEmbedVideo", + }, + "maxLength": 1, + }, + "embedExternals": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftEmbedExternal", + }, + "maxLength": 1, + }, + "embedRecords": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftEmbedRecord", + }, + "maxLength": 1, }, }, }, - "bookmarkView": { + "draftView": { + "description": "View to present drafts data to users.", "type": "object", "required": [ - "subject", - "item", + "id", + "draft", + "createdAt", + "updatedAt", ], "properties": { - "subject": { - "description": "A strong ref to the bookmarked record.", + "id": { + "description": "A TID to be used as a draft identifier.", + "type": "string", + "format": "tid", + }, + "draft": { "type": "ref", - "ref": "lex:com.atproto.repo.strongRef", + "ref": "lex:app.bsky.draft.defs#draft", }, "createdAt": { + "description": "The time the draft was created.", "type": "string", "format": "datetime", }, - "item": { - "type": "union", - "refs": [ - "lex:app.bsky.feed.defs#blockedPost", - "lex:app.bsky.feed.defs#notFoundPost", - "lex:app.bsky.feed.defs#postView", - ], + "updatedAt": { + "description": "The time the draft was last updated.", + "type": "string", + "format": "datetime", }, }, }, - }, - }, - "AppBskyBookmarkDeleteBookmark": { - "lexicon": 1, - "id": "app.bsky.bookmark.deleteBookmark", - "defs": { - "main": { - "type": "procedure", + "draftEmbedLocalRef": { + "type": "object", + "required": [ + "path", + ], + "properties": { + "path": { + "type": "string", + "description": + "Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts.", + "minLength": 1, + "maxLength": 1024, + }, + }, + }, + "draftEmbedCaption": { + "type": "object", + "required": [ + "lang", + "content", + ], + "properties": { + "lang": { + "type": "string", + "format": "language", + }, + "content": { + "type": "string", + "maxLength": 10000, + }, + }, + }, + "draftEmbedImage": { + "type": "object", + "required": [ + "localRef", + ], + "properties": { + "localRef": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftEmbedLocalRef", + }, + "alt": { + "type": "string", + "maxGraphemes": 2000, + }, + }, + }, + "draftEmbedVideo": { + "type": "object", + "required": [ + "localRef", + ], + "properties": { + "localRef": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftEmbedLocalRef", + }, + "alt": { + "type": "string", + "maxGraphemes": 2000, + }, + "captions": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftEmbedCaption", + }, + "maxLength": 20, + }, + }, + }, + "draftEmbedExternal": { + "type": "object", + "required": [ + "uri", + ], + "properties": { + "uri": { + "type": "string", + "format": "uri", + }, + }, + }, + "draftEmbedRecord": { + "type": "object", + "required": [ + "record", + ], + "properties": { + "record": { + "type": "ref", + "ref": "lex:com.atproto.repo.strongRef", + }, + }, + }, + }, + }, + "AppBskyDraftCreateDraft": { + "lexicon": 1, + "id": "app.bsky.draft.createDraft", + "defs": { + "main": { + "type": "procedure", "description": - "Deletes a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", + "Inserts a draft using private storage (stash). An upper limit of drafts might be enforced. Requires authentication.", "input": { "encoding": "application/json", "schema": { "type": "object", "required": [ - "uri", + "draft", ], "properties": { - "uri": { + "draft": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draft", + }, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "id", + ], + "properties": { + "id": { "type": "string", - "format": "at-uri", + "description": "The ID of the created draft.", }, }, }, }, "errors": [ { - "name": "UnsupportedCollection", + "name": "DraftLimitReached", "description": - "The URI to be bookmarked is for an unsupported collection.", + "Trying to insert a new draft when the limit was already reached.", }, ], }, }, }, - "AppBskyBookmarkGetBookmarks": { + "AppBskyDraftUpdateDraft": { "lexicon": 1, - "id": "app.bsky.bookmark.getBookmarks", + "id": "app.bsky.draft.updateDraft", "defs": { "main": { - "type": "query", + "type": "procedure", "description": - "Gets views of records bookmarked by the authenticated user. Requires authentication.", + "Updates a draft using private storage (stash). If the draft ID points to a non-existing ID, the update will be silently ignored. This is done because updates don't enforce draft limit, so it accepts all writes, but will ignore invalid ones. Requires authentication.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "draft", + ], + "properties": { + "draft": { + "type": "ref", + "ref": "lex:app.bsky.draft.defs#draftWithId", + }, + }, + }, + }, + }, + }, + }, + "AppBskyDraftGetDrafts": { + "lexicon": 1, + "id": "app.bsky.draft.getDrafts", + "defs": { + "main": { + "type": "query", + "description": "Gets views of user drafts. Requires authentication.", "parameters": { "type": "params", "properties": { @@ -5798,17 +5941,17 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "bookmarks", + "drafts", ], "properties": { "cursor": { "type": "string", }, - "bookmarks": { + "drafts": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.bookmark.defs#bookmarkView", + "ref": "lex:app.bsky.draft.defs#draftView", }, }, }, @@ -5817,821 +5960,555 @@ export const schemaDict = { }, }, }, - "AppBskyBookmarkCreateBookmark": { + "AppBskyDraftDeleteDraft": { "lexicon": 1, - "id": "app.bsky.bookmark.createBookmark", + "id": "app.bsky.draft.deleteDraft", "defs": { "main": { "type": "procedure", - "description": - "Creates a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", + "description": "Deletes a draft by ID. Requires authentication.", "input": { "encoding": "application/json", "schema": { "type": "object", "required": [ - "uri", - "cid", + "id", ], "properties": { - "uri": { - "type": "string", - "format": "at-uri", - }, - "cid": { + "id": { "type": "string", - "format": "cid", + "format": "tid", }, }, }, }, - "errors": [ - { - "name": "UnsupportedCollection", - "description": - "The URI to be bookmarked is for an unsupported collection.", - }, - ], }, }, }, - "AppBskyEmbedDefs": { + "AppBskyAuthManageLabelerService": { "lexicon": 1, - "id": "app.bsky.embed.defs", + "id": "app.bsky.authManageLabelerService", "defs": { - "aspectRatio": { - "type": "object", - "description": - "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.", - "required": [ - "width", - "height", - ], - "properties": { - "width": { - "type": "integer", - "minimum": 1, - }, - "height": { - "type": "integer", - "minimum": 1, + "main": { + "type": "permission-set", + "title": "Manage Hosted Labeling Service", + "title:lang": {}, + "detail": "Configure labeler declaration records.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "repo", + "action": [ + "create", + "update", + "delete", + ], + "collection": [ + "app.bsky.labeler.service", + ], }, - }, + ], }, }, }, - "AppBskyEmbedRecord": { + "AppBskyVideoUploadVideo": { "lexicon": 1, - "id": "app.bsky.embed.record", - "description": - "A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.", + "id": "app.bsky.video.uploadVideo", "defs": { "main": { - "type": "object", - "required": [ - "record", - ], - "properties": { - "record": { - "type": "ref", - "ref": "lex:com.atproto.repo.strongRef", - }, + "type": "procedure", + "description": "Upload a video to be processed then stored on the PDS.", + "input": { + "encoding": "video/mp4", }, - }, - "view": { - "type": "object", - "required": [ - "record", - ], - "properties": { - "record": { - "type": "union", - "refs": [ - "lex:app.bsky.embed.record#viewRecord", - "lex:app.bsky.embed.record#viewNotFound", - "lex:app.bsky.embed.record#viewBlocked", - "lex:app.bsky.embed.record#viewDetached", - "lex:app.bsky.feed.defs#generatorView", - "lex:app.bsky.graph.defs#listView", - "lex:app.bsky.labeler.defs#labelerView", - "lex:app.bsky.graph.defs#starterPackViewBasic", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "jobStatus", ], + "properties": { + "jobStatus": { + "type": "ref", + "ref": "lex:app.bsky.video.defs#jobStatus", + }, + }, }, }, }, - "viewRecord": { + }, + }, + "AppBskyVideoDefs": { + "lexicon": 1, + "id": "app.bsky.video.defs", + "defs": { + "jobStatus": { "type": "object", "required": [ - "uri", - "cid", - "author", - "value", - "indexedAt", + "jobId", + "did", + "state", ], "properties": { - "uri": { + "jobId": { "type": "string", - "format": "at-uri", }, - "cid": { + "did": { "type": "string", - "format": "cid", + "format": "did", }, - "author": { - "type": "ref", - "ref": "lex:app.bsky.actor.defs#profileViewBasic", - }, - "value": { - "type": "unknown", - "description": "The record data itself.", - }, - "labels": { - "type": "array", - "items": { - "type": "ref", - "ref": "lex:com.atproto.label.defs#label", - }, - }, - "replyCount": { - "type": "integer", - }, - "repostCount": { - "type": "integer", - }, - "likeCount": { - "type": "integer", + "state": { + "type": "string", + "description": + "The state of the video processing job. All values not listed as a known value indicate that the job is in process.", + "knownValues": [ + "JOB_STATE_COMPLETED", + "JOB_STATE_FAILED", + ], }, - "quoteCount": { + "progress": { "type": "integer", + "minimum": 0, + "maximum": 100, + "description": "Progress within the current processing state.", }, - "embeds": { - "type": "array", - "items": { - "type": "union", - "refs": [ - "lex:app.bsky.embed.images#view", - "lex:app.bsky.embed.video#view", - "lex:app.bsky.embed.external#view", - "lex:app.bsky.embed.record#view", - "lex:app.bsky.embed.recordWithMedia#view", - ], - }, + "blob": { + "type": "blob", }, - "indexedAt": { + "error": { "type": "string", - "format": "datetime", }, - }, - }, - "viewNotFound": { - "type": "object", - "required": [ - "uri", - "notFound", - ], - "properties": { - "uri": { + "message": { "type": "string", - "format": "at-uri", - }, - "notFound": { - "type": "boolean", - "const": true, }, }, }, - "viewBlocked": { - "type": "object", - "required": [ - "uri", - "blocked", - "author", - ], - "properties": { - "uri": { - "type": "string", - "format": "at-uri", - }, - "blocked": { - "type": "boolean", - "const": true, - }, - "author": { - "type": "ref", - "ref": "lex:app.bsky.feed.defs#blockedAuthor", + }, + }, + "AppBskyVideoGetJobStatus": { + "lexicon": 1, + "id": "app.bsky.video.getJobStatus", + "defs": { + "main": { + "type": "query", + "description": "Get status details for a video processing job.", + "parameters": { + "type": "params", + "required": [ + "jobId", + ], + "properties": { + "jobId": { + "type": "string", + }, }, }, - }, - "viewDetached": { - "type": "object", - "required": [ - "uri", - "detached", - ], - "properties": { - "uri": { - "type": "string", - "format": "at-uri", - }, - "detached": { - "type": "boolean", - "const": true, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "jobStatus", + ], + "properties": { + "jobStatus": { + "type": "ref", + "ref": "lex:app.bsky.video.defs#jobStatus", + }, + }, }, }, }, }, }, - "AppBskyEmbedImages": { + "AppBskyVideoGetUploadLimits": { "lexicon": 1, - "id": "app.bsky.embed.images", - "description": "A set of images embedded in a Bluesky record (eg, a post).", + "id": "app.bsky.video.getUploadLimits", "defs": { "main": { - "type": "object", - "required": [ - "images", - ], - "properties": { - "images": { - "type": "array", - "items": { - "type": "ref", - "ref": "lex:app.bsky.embed.images#image", + "type": "query", + "description": "Get video upload limits for the authenticated user.", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "canUpload", + ], + "properties": { + "canUpload": { + "type": "boolean", + }, + "remainingDailyVideos": { + "type": "integer", + }, + "remainingDailyBytes": { + "type": "integer", + }, + "message": { + "type": "string", + }, + "error": { + "type": "string", + }, }, - "maxLength": 4, }, }, }, - "image": { + }, + }, + "AppBskyContactDefs": { + "lexicon": 1, + "id": "app.bsky.contact.defs", + "defs": { + "matchAndContactIndex": { + "description": + "Associates a profile with the positional index of the contact import input in the call to `app.bsky.contact.importContacts`, so clients can know which phone caused a particular match.", "type": "object", "required": [ - "image", - "alt", + "match", + "contactIndex", ], "properties": { - "image": { - "type": "blob", - "accept": [ - "image/*", - ], - "maxSize": 1000000, + "match": { + "description": "Profile of the matched user.", + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileView", }, - "alt": { - "type": "string", + "contactIndex": { "description": - "Alt text description of the image, for accessibility.", - }, - "aspectRatio": { - "type": "ref", - "ref": "lex:app.bsky.embed.defs#aspectRatio", + "The index of this match in the import contact input.", + "type": "integer", + "minimum": 0, + "maximum": 999, }, }, }, - "view": { + "syncStatus": { "type": "object", "required": [ - "images", + "syncedAt", + "matchesCount", ], "properties": { - "images": { - "type": "array", - "items": { - "type": "ref", - "ref": "lex:app.bsky.embed.images#viewImage", - }, - "maxLength": 4, + "syncedAt": { + "description": "Last date when contacts where imported.", + "type": "string", + "format": "datetime", + }, + "matchesCount": { + "description": + "Number of existing contact matches resulting of the user imports and of their imported contacts having imported the user. Matches stop being counted when the user either follows the matched contact or dismisses the match.", + "type": "integer", + "minimum": 0, }, }, }, - "viewImage": { + "notification": { + "description": + "A stash object to be sent via bsync representing a notification to be created.", "type": "object", "required": [ - "thumb", - "fullsize", - "alt", + "from", + "to", ], "properties": { - "thumb": { - "type": "string", - "format": "uri", - "description": - "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.", - }, - "fullsize": { + "from": { + "description": "The DID of who this notification comes from.", "type": "string", - "format": "uri", - "description": - "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.", + "format": "did", }, - "alt": { + "to": { + "description": "The DID of who this notification should go to.", "type": "string", - "description": - "Alt text description of the image, for accessibility.", - }, - "aspectRatio": { - "type": "ref", - "ref": "lex:app.bsky.embed.defs#aspectRatio", + "format": "did", }, }, }, }, }, - "AppBskyEmbedRecordWithMedia": { + "AppBskyContactSendNotification": { "lexicon": 1, - "id": "app.bsky.embed.recordWithMedia", - "description": - "A representation of a record embedded in a Bluesky record (eg, a post), alongside other compatible embeds. For example, a quote post and image, or a quote post and external URL card.", + "id": "app.bsky.contact.sendNotification", "defs": { "main": { - "type": "object", - "required": [ - "record", - "media", - ], - "properties": { - "record": { - "type": "ref", - "ref": "lex:app.bsky.embed.record", - }, - "media": { - "type": "union", - "refs": [ - "lex:app.bsky.embed.images", - "lex:app.bsky.embed.video", - "lex:app.bsky.embed.external", + "type": "procedure", + "description": + "System endpoint to send notifications related to contact imports. Requires role authentication.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "from", + "to", ], + "properties": { + "from": { + "description": "The DID of who this notification comes from.", + "type": "string", + "format": "did", + }, + "to": { + "description": "The DID of who this notification should go to.", + "type": "string", + "format": "did", + }, + }, }, }, - }, - "view": { - "type": "object", - "required": [ - "record", - "media", - ], - "properties": { - "record": { - "type": "ref", - "ref": "lex:app.bsky.embed.record#view", - }, - "media": { - "type": "union", - "refs": [ - "lex:app.bsky.embed.images#view", - "lex:app.bsky.embed.video#view", - "lex:app.bsky.embed.external#view", - ], + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "properties": {}, }, }, }, }, }, - "AppBskyEmbedVideo": { + "AppBskyContactGetSyncStatus": { "lexicon": 1, - "id": "app.bsky.embed.video", - "description": "A video embedded in a Bluesky record (eg, a post).", + "id": "app.bsky.contact.getSyncStatus", "defs": { "main": { - "type": "object", - "required": [ - "video", - ], - "properties": { - "video": { - "type": "blob", - "description": - "The mp4 video file. May be up to 100mb, formerly limited to 50mb.", - "accept": [ - "video/mp4", - ], - "maxSize": 100000000, - }, - "captions": { - "type": "array", - "items": { - "type": "ref", - "ref": "lex:app.bsky.embed.video#caption", + "type": "query", + "description": + "Gets the user's current contact import status. Requires authentication.", + "parameters": { + "type": "params", + "properties": {}, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "properties": { + "syncStatus": { + "description": + "If present, indicates the user has imported their contacts. If not present, indicates the user never used the feature or called `app.bsky.contact.removeData` and didn't import again since.", + "type": "ref", + "ref": "lex:app.bsky.contact.defs#syncStatus", + }, }, - "maxLength": 20, }, - "alt": { - "type": "string", - "description": - "Alt text description of the video, for accessibility.", - "maxGraphemes": 1000, - "maxLength": 10000, + }, + "errors": [ + { + "name": "InvalidDid", }, - "aspectRatio": { - "type": "ref", - "ref": "lex:app.bsky.embed.defs#aspectRatio", + { + "name": "InternalError", }, - }, - }, - "caption": { - "type": "object", - "required": [ - "lang", - "file", ], - "properties": { - "lang": { - "type": "string", - "format": "language", - }, - "file": { - "type": "blob", - "accept": [ - "text/vtt", + }, + }, + }, + "AppBskyContactStartPhoneVerification": { + "lexicon": 1, + "id": "app.bsky.contact.startPhoneVerification", + "defs": { + "main": { + "type": "procedure", + "description": + "Starts a phone verification flow. The phone passed will receive a code via SMS that should be passed to `app.bsky.contact.verifyPhone`. Requires authentication.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "phone", ], - "maxSize": 20000, + "properties": { + "phone": { + "description": "The phone number to receive the code via SMS.", + "type": "string", + }, + }, }, }, - }, - "view": { - "type": "object", - "required": [ - "cid", - "playlist", - ], - "properties": { - "cid": { - "type": "string", - "format": "cid", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "properties": {}, }, - "playlist": { - "type": "string", - "format": "uri", + }, + "errors": [ + { + "name": "RateLimitExceeded", }, - "thumbnail": { - "type": "string", - "format": "uri", + { + "name": "InvalidDid", }, - "alt": { - "type": "string", - "maxGraphemes": 1000, - "maxLength": 10000, + { + "name": "InvalidPhone", }, - "aspectRatio": { - "type": "ref", - "ref": "lex:app.bsky.embed.defs#aspectRatio", + { + "name": "InternalError", }, - }, + ], }, }, }, - "AppBskyEmbedExternal": { + "AppBskyContactGetMatches": { "lexicon": 1, - "id": "app.bsky.embed.external", + "id": "app.bsky.contact.getMatches", "defs": { "main": { - "type": "object", + "type": "query", "description": - "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).", - "required": [ - "external", - ], - "properties": { - "external": { - "type": "ref", - "ref": "lex:app.bsky.embed.external#external", + "Returns the matched contacts (contacts that were mutually imported). Excludes dismissed matches. Requires authentication.", + "parameters": { + "type": "params", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 50, + }, + "cursor": { + "type": "string", + }, }, }, - }, - "external": { - "type": "object", - "required": [ - "uri", - "title", - "description", - ], - "properties": { - "uri": { - "type": "string", - "format": "uri", - }, - "title": { - "type": "string", - }, - "description": { - "type": "string", - }, - "thumb": { - "type": "blob", - "accept": [ - "image/*", + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "matches", ], - "maxSize": 1000000, + "properties": { + "cursor": { + "type": "string", + }, + "matches": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileView", + }, + }, + }, }, }, - }, - "view": { - "type": "object", - "required": [ - "external", - ], - "properties": { - "external": { - "type": "ref", - "ref": "lex:app.bsky.embed.external#viewExternal", + "errors": [ + { + "name": "InvalidDid", }, - }, - }, - "viewExternal": { - "type": "object", - "required": [ - "uri", - "title", - "description", - ], - "properties": { - "uri": { - "type": "string", - "format": "uri", + { + "name": "InvalidLimit", }, - "title": { - "type": "string", + { + "name": "InvalidCursor", }, - "description": { - "type": "string", - }, - "thumb": { - "type": "string", - "format": "uri", - }, - }, - }, - }, - }, - "AppBskyNotificationDefs": { - "lexicon": 1, - "id": "app.bsky.notification.defs", - "defs": { - "recordDeleted": { - "type": "object", - "properties": {}, - }, - "chatPreference": { - "type": "object", - "required": [ - "include", - "push", - ], - "properties": { - "include": { - "type": "string", - "knownValues": [ - "all", - "accepted", - ], - }, - "push": { - "type": "boolean", - }, - }, - }, - "filterablePreference": { - "type": "object", - "required": [ - "include", - "list", - "push", - ], - "properties": { - "include": { - "type": "string", - "knownValues": [ - "all", - "follows", - ], - }, - "list": { - "type": "boolean", - }, - "push": { - "type": "boolean", - }, - }, - }, - "preference": { - "type": "object", - "required": [ - "list", - "push", - ], - "properties": { - "list": { - "type": "boolean", - }, - "push": { - "type": "boolean", - }, - }, - }, - "preferences": { - "type": "object", - "required": [ - "chat", - "follow", - "like", - "likeViaRepost", - "mention", - "quote", - "reply", - "repost", - "repostViaRepost", - "starterpackJoined", - "subscribedPost", - "unverified", - "verified", - ], - "properties": { - "chat": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#chatPreference", - }, - "follow": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "like": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "likeViaRepost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "mention": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "quote": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "reply": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "repost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "repostViaRepost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "starterpackJoined": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", - }, - "subscribedPost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", - }, - "unverified": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", - }, - "verified": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", - }, - }, - }, - "activitySubscription": { - "type": "object", - "required": [ - "post", - "reply", - ], - "properties": { - "post": { - "type": "boolean", - }, - "reply": { - "type": "boolean", + { + "name": "InternalError", }, - }, - }, - "subjectActivitySubscription": { - "description": - "Object used to store activity subscription data in stash.", - "type": "object", - "required": [ - "subject", - "activitySubscription", ], - "properties": { - "subject": { - "type": "string", - "format": "did", - }, - "activitySubscription": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#activitySubscription", - }, - }, }, }, }, - "AppBskyNotificationRegisterPush": { + "AppBskyContactImportContacts": { "lexicon": 1, - "id": "app.bsky.notification.registerPush", + "id": "app.bsky.contact.importContacts", "defs": { "main": { "type": "procedure", "description": - "Register to receive push notifications, via a specified service, for the requesting account. Requires auth.", + "Import contacts for securely matching with other users. This follows the protocol explained in https://docs.bsky.app/blog/contact-import-rfc. Requires authentication.", "input": { "encoding": "application/json", "schema": { "type": "object", "required": [ - "serviceDid", "token", - "platform", - "appId", + "contacts", ], "properties": { - "serviceDid": { - "type": "string", - "format": "did", - }, "token": { + "description": + "JWT to authenticate the call. Use the JWT received as a response to the call to `app.bsky.contact.verifyPhone`.", "type": "string", }, - "platform": { - "type": "string", - "knownValues": [ - "ios", - "android", - "web", - ], - }, - "appId": { - "type": "string", - }, - "ageRestricted": { - "type": "boolean", - "description": "Set to true when the actor is age restricted", + "contacts": { + "description": + "List of phone numbers in global E.164 format (e.g., '+12125550123'). Phone numbers that cannot be normalized into a valid phone number will be discarded. Should not repeat the 'phone' input used in `app.bsky.contact.verifyPhone`.", + "type": "array", + "items": { + "type": "string", + }, + "minLength": 1, + "maxLength": 1000, }, }, }, }, - }, - }, - }, - "AppBskyNotificationPutPreferences": { - "lexicon": 1, - "id": "app.bsky.notification.putPreferences", - "defs": { - "main": { - "type": "procedure", - "description": - "Set notification-related preferences for an account. Requires auth.", - "input": { + "output": { "encoding": "application/json", "schema": { "type": "object", "required": [ - "priority", + "matchesAndContactIndexes", ], "properties": { - "priority": { - "type": "boolean", + "matchesAndContactIndexes": { + "description": + "The users that matched during import and their indexes on the input contacts, so the client can correlate with its local list.", + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.contact.defs#matchAndContactIndex", + }, }, }, }, }, + "errors": [ + { + "name": "InvalidDid", + }, + { + "name": "InvalidContacts", + }, + { + "name": "TooManyContacts", + }, + { + "name": "InvalidToken", + }, + { + "name": "InternalError", + }, + ], }, }, }, - "AppBskyNotificationPutActivitySubscription": { + "AppBskyContactDismissMatch": { "lexicon": 1, - "id": "app.bsky.notification.putActivitySubscription", + "id": "app.bsky.contact.dismissMatch", "defs": { "main": { "type": "procedure", "description": - "Puts an activity subscription entry. The key should be omitted for creation and provided for updates. Requires auth.", + "Removes a match that was found via contact import. It shouldn't appear again if the same contact is re-imported. Requires authentication.", "input": { "encoding": "application/json", "schema": { "type": "object", "required": [ "subject", - "activitySubscription", ], "properties": { "subject": { + "description": "The subject's DID to dismiss the match with.", "type": "string", "format": "did", }, - "activitySubscription": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#activitySubscription", - }, }, }, }, @@ -6639,118 +6516,79 @@ export const schemaDict = { "encoding": "application/json", "schema": { "type": "object", - "required": [ - "subject", - ], - "properties": { - "subject": { - "type": "string", - "format": "did", - }, - "activitySubscription": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#activitySubscription", - }, - }, + "properties": {}, }, }, + "errors": [ + { + "name": "InvalidDid", + }, + { + "name": "InternalError", + }, + ], }, }, }, - "AppBskyNotificationDeclaration": { + "AppBskyContactRemoveData": { "lexicon": 1, - "id": "app.bsky.notification.declaration", + "id": "app.bsky.contact.removeData", "defs": { "main": { - "type": "record", + "type": "procedure", "description": - "A declaration of the user's choices related to notifications that can be produced by them.", - "key": "literal:self", - "record": { - "type": "object", - "required": [ - "allowSubscriptions", - ], - "properties": { - "allowSubscriptions": { - "type": "string", - "description": - "A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.", - "knownValues": [ - "followers", - "mutuals", - "none", - ], - }, + "Removes all stored hashes used for contact matching, existing matches, and sync status. Requires authentication.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "properties": {}, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "properties": {}, }, }, + "errors": [ + { + "name": "InvalidDid", + }, + { + "name": "InternalError", + }, + ], }, }, }, - "AppBskyNotificationPutPreferencesV2": { + "AppBskyContactVerifyPhone": { "lexicon": 1, - "id": "app.bsky.notification.putPreferencesV2", + "id": "app.bsky.contact.verifyPhone", "defs": { "main": { "type": "procedure", "description": - "Set notification-related preferences for an account. Requires auth.", + "Verifies control over a phone number with a code received via SMS and starts a contact import session. Requires authentication.", "input": { "encoding": "application/json", "schema": { "type": "object", + "required": [ + "phone", + "code", + ], "properties": { - "chat": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#chatPreference", - }, - "follow": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "like": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "likeViaRepost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "mention": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "quote": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "reply": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "repost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "repostViaRepost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#filterablePreference", - }, - "starterpackJoined": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", - }, - "subscribedPost": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", - }, - "unverified": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", + "phone": { + "description": + "The phone number to verify. Should be the same as the one passed to `app.bsky.contact.startPhoneVerification`.", + "type": "string", }, - "verified": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preference", + "code": { + "description": + "The code received via SMS as a result of the call to `app.bsky.contact.startPhoneVerification`.", + "type": "string", }, }, }, @@ -6760,53 +6598,157 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "preferences", + "token", ], "properties": { - "preferences": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preferences", + "token": { + "description": + "JWT to be used in a call to `app.bsky.contact.importContacts`. It is only valid for a single call.", + "type": "string", }, }, }, }, + "errors": [ + { + "name": "RateLimitExceeded", + }, + { + "name": "InvalidDid", + }, + { + "name": "InvalidPhone", + }, + { + "name": "InvalidCode", + }, + { + "name": "InternalError", + }, + ], + }, + }, + }, + "AppBskyAuthManageNotifications": { + "lexicon": 1, + "id": "app.bsky.authManageNotifications", + "defs": { + "main": { + "type": "permission-set", + "title": "Manage Bluesky Notifications", + "title:lang": {}, + "detail": "View and configure notifications for the Bluesky app.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "rpc", + "inheritAud": true, + "lxm": [ + "app.bsky.notification.getPreferences", + "app.bsky.notification.getUnreadCount", + "app.bsky.notification.listActivitySubscriptions", + "app.bsky.notification.listNotifications", + "app.bsky.notification.putActivitySubscription", + "app.bsky.notification.putPreferences", + "app.bsky.notification.putPreferencesV2", + "app.bsky.notification.registerPush", + "app.bsky.notification.unregisterPush", + "app.bsky.notification.updateSeen", + ], + }, + ], + }, + }, + }, + "AppBskyBookmarkDefs": { + "lexicon": 1, + "id": "app.bsky.bookmark.defs", + "defs": { + "bookmark": { + "description": "Object used to store bookmark data in stash.", + "type": "object", + "required": [ + "subject", + ], + "properties": { + "subject": { + "description": + "A strong ref to the record to be bookmarked. Currently, only `app.bsky.feed.post` records are supported.", + "type": "ref", + "ref": "lex:com.atproto.repo.strongRef", + }, + }, + }, + "bookmarkView": { + "type": "object", + "required": [ + "subject", + "item", + ], + "properties": { + "subject": { + "description": "A strong ref to the bookmarked record.", + "type": "ref", + "ref": "lex:com.atproto.repo.strongRef", + }, + "createdAt": { + "type": "string", + "format": "datetime", + }, + "item": { + "type": "union", + "refs": [ + "lex:app.bsky.feed.defs#blockedPost", + "lex:app.bsky.feed.defs#notFoundPost", + "lex:app.bsky.feed.defs#postView", + ], + }, + }, }, }, }, - "AppBskyNotificationUpdateSeen": { + "AppBskyBookmarkDeleteBookmark": { "lexicon": 1, - "id": "app.bsky.notification.updateSeen", + "id": "app.bsky.bookmark.deleteBookmark", "defs": { "main": { "type": "procedure", "description": - "Notify server that the requesting account has seen notifications. Requires auth.", + "Deletes a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", "input": { "encoding": "application/json", "schema": { "type": "object", "required": [ - "seenAt", + "uri", ], "properties": { - "seenAt": { + "uri": { "type": "string", - "format": "datetime", + "format": "at-uri", }, }, }, }, + "errors": [ + { + "name": "UnsupportedCollection", + "description": + "The URI to be bookmarked is for an unsupported collection.", + }, + ], }, }, }, - "AppBskyNotificationListActivitySubscriptions": { + "AppBskyBookmarkGetBookmarks": { "lexicon": 1, - "id": "app.bsky.notification.listActivitySubscriptions", + "id": "app.bsky.bookmark.getBookmarks", "defs": { "main": { "type": "query", "description": - "Enumerate all accounts to which the requesting account is subscribed to receive notifications for. Requires auth.", + "Gets views of records bookmarked by the authenticated user. Requires authentication.", "parameters": { "type": "params", "properties": { @@ -6826,17 +6768,17 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "subscriptions", + "bookmarks", ], "properties": { "cursor": { "type": "string", }, - "subscriptions": { + "bookmarks": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.actor.defs#profileView", + "ref": "lex:app.bsky.bookmark.defs#bookmarkView", }, }, }, @@ -6845,156 +6787,115 @@ export const schemaDict = { }, }, }, - "AppBskyNotificationUnregisterPush": { + "AppBskyBookmarkCreateBookmark": { "lexicon": 1, - "id": "app.bsky.notification.unregisterPush", + "id": "app.bsky.bookmark.createBookmark", "defs": { "main": { "type": "procedure", "description": - "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.", + "Creates a private bookmark for the specified record. Currently, only `app.bsky.feed.post` records are supported. Requires authentication.", "input": { "encoding": "application/json", "schema": { "type": "object", "required": [ - "serviceDid", - "token", - "platform", - "appId", + "uri", + "cid", ], "properties": { - "serviceDid": { - "type": "string", - "format": "did", - }, - "token": { - "type": "string", - }, - "platform": { + "uri": { "type": "string", - "knownValues": [ - "ios", - "android", - "web", - ], + "format": "at-uri", }, - "appId": { + "cid": { "type": "string", + "format": "cid", }, }, }, }, - }, + "errors": [ + { + "name": "UnsupportedCollection", + "description": + "The URI to be bookmarked is for an unsupported collection.", + }, + ], + }, }, }, - "AppBskyNotificationGetPreferences": { + "AppBskyEmbedDefs": { "lexicon": 1, - "id": "app.bsky.notification.getPreferences", + "id": "app.bsky.embed.defs", "defs": { - "main": { - "type": "query", + "aspectRatio": { + "type": "object", "description": - "Get notification-related preferences for an account. Requires auth.", - "parameters": { - "type": "params", - "properties": {}, - }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "preferences", - ], - "properties": { - "preferences": { - "type": "ref", - "ref": "lex:app.bsky.notification.defs#preferences", - }, - }, + "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.", + "required": [ + "width", + "height", + ], + "properties": { + "width": { + "type": "integer", + "minimum": 1, + }, + "height": { + "type": "integer", + "minimum": 1, }, }, }, }, }, - "AppBskyNotificationListNotifications": { + "AppBskyEmbedRecord": { "lexicon": 1, - "id": "app.bsky.notification.listNotifications", + "id": "app.bsky.embed.record", + "description": + "A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.", "defs": { "main": { - "type": "query", - "description": - "Enumerate notifications for the requesting account. Requires auth.", - "parameters": { - "type": "params", - "properties": { - "reasons": { - "description": "Notification reasons to include in response.", - "type": "array", - "items": { - "type": "string", - "description": - "A reason that matches the reason property of #notification.", - }, - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "default": 50, - }, - "priority": { - "type": "boolean", - }, - "cursor": { - "type": "string", - }, - "seenAt": { - "type": "string", - "format": "datetime", - }, + "type": "object", + "required": [ + "record", + ], + "properties": { + "record": { + "type": "ref", + "ref": "lex:com.atproto.repo.strongRef", }, }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "notifications", + }, + "view": { + "type": "object", + "required": [ + "record", + ], + "properties": { + "record": { + "type": "union", + "refs": [ + "lex:app.bsky.embed.record#viewRecord", + "lex:app.bsky.embed.record#viewNotFound", + "lex:app.bsky.embed.record#viewBlocked", + "lex:app.bsky.embed.record#viewDetached", + "lex:app.bsky.feed.defs#generatorView", + "lex:app.bsky.graph.defs#listView", + "lex:app.bsky.labeler.defs#labelerView", + "lex:app.bsky.graph.defs#starterPackViewBasic", ], - "properties": { - "cursor": { - "type": "string", - }, - "notifications": { - "type": "array", - "items": { - "type": "ref", - "ref": - "lex:app.bsky.notification.listNotifications#notification", - }, - }, - "priority": { - "type": "boolean", - }, - "seenAt": { - "type": "string", - "format": "datetime", - }, - }, }, }, }, - "notification": { + "viewRecord": { "type": "object", "required": [ "uri", "cid", "author", - "reason", - "record", - "isRead", + "value", "indexedAt", ], "properties": { @@ -7008,40 +6909,11 @@ export const schemaDict = { }, "author": { "type": "ref", - "ref": "lex:app.bsky.actor.defs#profileView", - }, - "reason": { - "type": "string", - "description": - "The reason why this notification was delivered - e.g. your post was liked, or you received a new follower.", - "knownValues": [ - "like", - "repost", - "follow", - "mention", - "reply", - "quote", - "starterpack-joined", - "verified", - "unverified", - "like-via-repost", - "repost-via-repost", - "subscribed-post", - ], - }, - "reasonSubject": { - "type": "string", - "format": "at-uri", + "ref": "lex:app.bsky.actor.defs#profileViewBasic", }, - "record": { + "value": { "type": "unknown", - }, - "isRead": { - "type": "boolean", - }, - "indexedAt": { - "type": "string", - "format": "datetime", + "description": "The record data itself.", }, "labels": { "type": "array", @@ -7050,472 +6922,2219 @@ export const schemaDict = { "ref": "lex:com.atproto.label.defs#label", }, }, - }, - }, - }, - }, - "AppBskyNotificationGetUnreadCount": { - "lexicon": 1, - "id": "app.bsky.notification.getUnreadCount", - "defs": { - "main": { - "type": "query", - "description": - "Count the number of unread notifications for the requesting account. Requires auth.", - "parameters": { - "type": "params", - "properties": { - "priority": { - "type": "boolean", - }, - "seenAt": { - "type": "string", - "format": "datetime", + "replyCount": { + "type": "integer", + }, + "repostCount": { + "type": "integer", + }, + "likeCount": { + "type": "integer", + }, + "quoteCount": { + "type": "integer", + }, + "embeds": { + "type": "array", + "items": { + "type": "union", + "refs": [ + "lex:app.bsky.embed.images#view", + "lex:app.bsky.embed.video#view", + "lex:app.bsky.embed.external#view", + "lex:app.bsky.embed.record#view", + "lex:app.bsky.embed.recordWithMedia#view", + ], }, }, + "indexedAt": { + "type": "string", + "format": "datetime", + }, }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "count", - ], - "properties": { - "count": { - "type": "integer", - }, - }, + }, + "viewNotFound": { + "type": "object", + "required": [ + "uri", + "notFound", + ], + "properties": { + "uri": { + "type": "string", + "format": "at-uri", + }, + "notFound": { + "type": "boolean", + "const": true, }, }, }, - }, - }, - "AppBskyUnspeccedGetSuggestedFeedsSkeleton": { - "lexicon": 1, - "id": "app.bsky.unspecced.getSuggestedFeedsSkeleton", - "defs": { - "main": { - "type": "query", - "description": - "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds", - "parameters": { - "type": "params", - "properties": { - "viewer": { - "type": "string", - "format": "did", - "description": - "DID of the account making the request (not included for public/unauthenticated queries).", - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 25, - "default": 10, - }, - }, - }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "feeds", - ], - "properties": { - "feeds": { - "type": "array", - "items": { - "type": "string", - "format": "at-uri", - }, - }, - }, - }, - }, - }, - }, - }, - "AppBskyUnspeccedSearchStarterPacksSkeleton": { - "lexicon": 1, - "id": "app.bsky.unspecced.searchStarterPacksSkeleton", - "defs": { - "main": { - "type": "query", - "description": "Backend Starter Pack search, returns only skeleton.", - "parameters": { - "type": "params", - "required": [ - "q", - ], - "properties": { - "q": { - "type": "string", - "description": - "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", - }, - "viewer": { - "type": "string", - "format": "did", - "description": - "DID of the account making the request (not included for public/unauthenticated queries).", - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "default": 25, - }, - "cursor": { - "type": "string", - "description": - "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", - }, - }, - }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "starterPacks", - ], - "properties": { - "cursor": { - "type": "string", - }, - "hitsTotal": { - "type": "integer", - "description": - "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.", - }, - "starterPacks": { - "type": "array", - "items": { - "type": "ref", - "ref": - "lex:app.bsky.unspecced.defs#skeletonSearchStarterPack", - }, - }, - }, - }, - }, - "errors": [ - { - "name": "BadQueryString", - }, - ], - }, - }, - }, - "AppBskyUnspeccedDefs": { - "lexicon": 1, - "id": "app.bsky.unspecced.defs", - "defs": { - "skeletonSearchPost": { + "viewBlocked": { "type": "object", "required": [ "uri", + "blocked", + "author", ], "properties": { "uri": { "type": "string", "format": "at-uri", }, + "blocked": { + "type": "boolean", + "const": true, + }, + "author": { + "type": "ref", + "ref": "lex:app.bsky.feed.defs#blockedAuthor", + }, }, }, - "skeletonSearchActor": { + "viewDetached": { "type": "object", "required": [ - "did", + "uri", + "detached", ], "properties": { - "did": { + "uri": { "type": "string", - "format": "did", + "format": "at-uri", + }, + "detached": { + "type": "boolean", + "const": true, }, }, }, - "skeletonSearchStarterPack": { + }, + }, + "AppBskyEmbedImages": { + "lexicon": 1, + "id": "app.bsky.embed.images", + "description": "A set of images embedded in a Bluesky record (eg, a post).", + "defs": { + "main": { "type": "object", "required": [ - "uri", + "images", ], "properties": { - "uri": { - "type": "string", - "format": "at-uri", + "images": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.embed.images#image", + }, + "maxLength": 4, }, }, }, - "trendingTopic": { + "image": { "type": "object", "required": [ - "topic", - "link", + "image", + "alt", ], "properties": { - "topic": { - "type": "string", - }, - "displayName": { - "type": "string", + "image": { + "type": "blob", + "description": + "The raw image file. May be up to 2 MB, formerly limited to 1 MB.", + "accept": [ + "image/*", + ], + "maxSize": 2000000, }, - "description": { + "alt": { "type": "string", + "description": + "Alt text description of the image, for accessibility.", }, - "link": { - "type": "string", + "aspectRatio": { + "type": "ref", + "ref": "lex:app.bsky.embed.defs#aspectRatio", }, }, }, - "skeletonTrend": { + "view": { "type": "object", "required": [ - "topic", - "displayName", - "link", - "startedAt", - "postCount", - "dids", + "images", ], "properties": { - "topic": { - "type": "string", - }, - "displayName": { - "type": "string", - }, - "link": { - "type": "string", - }, - "startedAt": { - "type": "string", - "format": "datetime", - }, - "postCount": { - "type": "integer", - }, - "status": { - "type": "string", - "knownValues": [ - "hot", - ], - }, - "category": { - "type": "string", - }, - "dids": { + "images": { "type": "array", "items": { - "type": "string", - "format": "did", + "type": "ref", + "ref": "lex:app.bsky.embed.images#viewImage", }, + "maxLength": 4, }, }, }, - "trendView": { + "viewImage": { "type": "object", "required": [ - "topic", - "displayName", - "link", - "startedAt", - "postCount", - "actors", + "thumb", + "fullsize", + "alt", ], "properties": { - "topic": { + "thumb": { "type": "string", + "format": "uri", + "description": + "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.", }, - "displayName": { + "fullsize": { "type": "string", + "format": "uri", + "description": + "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.", }, - "link": { + "alt": { "type": "string", + "description": + "Alt text description of the image, for accessibility.", }, - "startedAt": { - "type": "string", - "format": "datetime", + "aspectRatio": { + "type": "ref", + "ref": "lex:app.bsky.embed.defs#aspectRatio", }, - "postCount": { - "type": "integer", + }, + }, + }, + }, + "AppBskyEmbedRecordWithMedia": { + "lexicon": 1, + "id": "app.bsky.embed.recordWithMedia", + "description": + "A representation of a record embedded in a Bluesky record (eg, a post), alongside other compatible embeds. For example, a quote post and image, or a quote post and external URL card.", + "defs": { + "main": { + "type": "object", + "required": [ + "record", + "media", + ], + "properties": { + "record": { + "type": "ref", + "ref": "lex:app.bsky.embed.record", }, - "status": { - "type": "string", - "knownValues": [ - "hot", + "media": { + "type": "union", + "refs": [ + "lex:app.bsky.embed.images", + "lex:app.bsky.embed.video", + "lex:app.bsky.embed.external", ], }, - "category": { - "type": "string", - }, - "actors": { - "type": "array", - "items": { - "type": "ref", - "ref": "lex:app.bsky.actor.defs#profileViewBasic", - }, - }, }, }, - "threadItemPost": { + "view": { "type": "object", "required": [ - "post", - "moreParents", - "moreReplies", - "opThread", - "hiddenByThreadgate", - "mutedByViewer", + "record", + "media", ], "properties": { - "post": { + "record": { "type": "ref", - "ref": "lex:app.bsky.feed.defs#postView", + "ref": "lex:app.bsky.embed.record#view", }, - "moreParents": { - "type": "boolean", - "description": - "This post has more parents that were not present in the response. This is just a boolean, without the number of parents.", + "media": { + "type": "union", + "refs": [ + "lex:app.bsky.embed.images#view", + "lex:app.bsky.embed.video#view", + "lex:app.bsky.embed.external#view", + ], }, - "moreReplies": { - "type": "integer", + }, + }, + }, + }, + "AppBskyEmbedVideo": { + "lexicon": 1, + "id": "app.bsky.embed.video", + "description": "A video embedded in a Bluesky record (eg, a post).", + "defs": { + "main": { + "type": "object", + "required": [ + "video", + ], + "properties": { + "video": { + "type": "blob", "description": - "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.", + "The mp4 video file. May be up to 100mb, formerly limited to 50mb.", + "accept": [ + "video/mp4", + ], + "maxSize": 100000000, }, - "opThread": { - "type": "boolean", - "description": - "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.", + "captions": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.embed.video#caption", + }, + "maxLength": 20, }, - "hiddenByThreadgate": { - "type": "boolean", + "alt": { + "type": "string", "description": - "The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread.", + "Alt text description of the video, for accessibility.", + "maxGraphemes": 1000, + "maxLength": 10000, }, - "mutedByViewer": { - "type": "boolean", + "aspectRatio": { + "type": "ref", + "ref": "lex:app.bsky.embed.defs#aspectRatio", + }, + "presentation": { + "type": "string", "description": - "This is by an account muted by the viewer requesting it.", + "A hint to the client about how to present the video.", + "knownValues": [ + "default", + "gif", + ], }, }, }, - "threadItemNoUnauthenticated": { - "type": "object", - "properties": {}, - }, - "threadItemNotFound": { - "type": "object", - "properties": {}, - }, - "threadItemBlocked": { + "caption": { "type": "object", "required": [ - "author", + "lang", + "file", ], "properties": { - "author": { - "type": "ref", - "ref": "lex:app.bsky.feed.defs#blockedAuthor", + "lang": { + "type": "string", + "format": "language", + }, + "file": { + "type": "blob", + "accept": [ + "text/vtt", + ], + "maxSize": 20000, }, }, }, - "ageAssuranceState": { + "view": { "type": "object", - "description": - "The computed state of the age assurance process, returned to the user in question on certain authenticated requests.", "required": [ - "status", + "cid", + "playlist", ], "properties": { - "lastInitiatedAt": { + "cid": { "type": "string", - "format": "datetime", - "description": "The timestamp when this state was last updated.", + "format": "cid", }, - "status": { + "playlist": { "type": "string", - "description": "The status of the age assurance process.", + "format": "uri", + }, + "thumbnail": { + "type": "string", + "format": "uri", + }, + "alt": { + "type": "string", + "maxGraphemes": 1000, + "maxLength": 10000, + }, + "aspectRatio": { + "type": "ref", + "ref": "lex:app.bsky.embed.defs#aspectRatio", + }, + "presentation": { + "type": "string", + "description": + "A hint to the client about how to present the video.", "knownValues": [ - "unknown", - "pending", - "assured", - "blocked", + "default", + "gif", ], }, }, }, - "ageAssuranceEvent": { + }, + }, + "AppBskyEmbedExternal": { + "lexicon": 1, + "id": "app.bsky.embed.external", + "defs": { + "main": { "type": "object", - "description": "Object used to store age assurance data in stash.", + "description": + "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).", "required": [ - "createdAt", - "status", - "attemptId", + "external", ], "properties": { - "createdAt": { - "type": "string", - "format": "datetime", - "description": "The date and time of this write operation.", - }, - "status": { - "type": "string", - "description": "The status of the age assurance process.", - "knownValues": [ - "unknown", - "pending", - "assured", - ], + "external": { + "type": "ref", + "ref": "lex:app.bsky.embed.external#external", }, - "attemptId": { + }, + }, + "external": { + "type": "object", + "required": [ + "uri", + "title", + "description", + ], + "properties": { + "uri": { "type": "string", - "description": - "The unique identifier for this instance of the age assurance flow, in UUID format.", + "format": "uri", }, - "email": { + "title": { "type": "string", - "description": "The email used for AA.", }, - "initIp": { + "description": { "type": "string", - "description": "The IP address used when initiating the AA flow.", }, - "initUa": { - "type": "string", - "description": "The user agent used when initiating the AA flow.", + "thumb": { + "type": "blob", + "accept": [ + "image/*", + ], + "maxSize": 1000000, }, - "completeIp": { - "type": "string", - "description": "The IP address used when completing the AA flow.", + }, + }, + "view": { + "type": "object", + "required": [ + "external", + ], + "properties": { + "external": { + "type": "ref", + "ref": "lex:app.bsky.embed.external#viewExternal", + }, + }, + }, + "viewExternal": { + "type": "object", + "required": [ + "uri", + "title", + "description", + ], + "properties": { + "uri": { + "type": "string", + "format": "uri", + }, + "title": { + "type": "string", + }, + "description": { + "type": "string", + }, + "thumb": { + "type": "string", + "format": "uri", + }, + }, + }, + }, + }, + "AppBskyAuthDeleteContent": { + "lexicon": 1, + "id": "app.bsky.authDeleteContent", + "defs": { + "main": { + "type": "permission-set", + "title": "Delete Bluesky Content", + "title:lang": {}, + "detail": "Clean up public account history: posts, reposts, and likes.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "repo", + "action": [ + "delete", + ], + "collection": [ + "app.bsky.feed.like", + "app.bsky.feed.post", + "app.bsky.feed.postgate", + "app.bsky.feed.repost", + "app.bsky.feed.threadgate", + ], + }, + ], + }, + }, + }, + "AppBskyAuthCreatePosts": { + "lexicon": 1, + "id": "app.bsky.authCreatePosts", + "defs": { + "main": { + "type": "permission-set", + "title": "Create Bluesky Posts", + "title:lang": {}, + "detail": "Can not update or delete posts.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "rpc", + "inheritAud": true, + "lxm": [ + "app.bsky.video.uploadVideo", + "app.bsky.video.getJobStatus", + "app.bsky.video.getUploadLimits", + ], + }, + { + "type": "permission", + "resource": "repo", + "action": [ + "create", + ], + "collection": [ + "app.bsky.feed.post", + "app.bsky.feed.postgate", + "app.bsky.feed.threadgate", + ], + }, + ], + }, + }, + }, + "AppBskyNotificationDefs": { + "lexicon": 1, + "id": "app.bsky.notification.defs", + "defs": { + "recordDeleted": { + "type": "object", + "properties": {}, + }, + "chatPreference": { + "type": "object", + "required": [ + "include", + "push", + ], + "properties": { + "include": { + "type": "string", + "knownValues": [ + "all", + "accepted", + ], + }, + "push": { + "type": "boolean", + }, + }, + }, + "filterablePreference": { + "type": "object", + "required": [ + "include", + "list", + "push", + ], + "properties": { + "include": { + "type": "string", + "knownValues": [ + "all", + "follows", + ], + }, + "list": { + "type": "boolean", + }, + "push": { + "type": "boolean", + }, + }, + }, + "preference": { + "type": "object", + "required": [ + "list", + "push", + ], + "properties": { + "list": { + "type": "boolean", + }, + "push": { + "type": "boolean", + }, + }, + }, + "preferences": { + "type": "object", + "required": [ + "chat", + "follow", + "like", + "likeViaRepost", + "mention", + "quote", + "reply", + "repost", + "repostViaRepost", + "starterpackJoined", + "subscribedPost", + "unverified", + "verified", + ], + "properties": { + "chat": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#chatPreference", + }, + "follow": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "like": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "likeViaRepost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "mention": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "quote": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "reply": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "repost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "repostViaRepost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "starterpackJoined": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + "subscribedPost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + "unverified": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + "verified": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + }, + }, + "activitySubscription": { + "type": "object", + "required": [ + "post", + "reply", + ], + "properties": { + "post": { + "type": "boolean", + }, + "reply": { + "type": "boolean", + }, + }, + }, + "subjectActivitySubscription": { + "description": + "Object used to store activity subscription data in stash.", + "type": "object", + "required": [ + "subject", + "activitySubscription", + ], + "properties": { + "subject": { + "type": "string", + "format": "did", + }, + "activitySubscription": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#activitySubscription", + }, + }, + }, + }, + }, + "AppBskyNotificationRegisterPush": { + "lexicon": 1, + "id": "app.bsky.notification.registerPush", + "defs": { + "main": { + "type": "procedure", + "description": + "Register to receive push notifications, via a specified service, for the requesting account. Requires auth.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "serviceDid", + "token", + "platform", + "appId", + ], + "properties": { + "serviceDid": { + "type": "string", + "format": "did", + }, + "token": { + "type": "string", + }, + "platform": { + "type": "string", + "knownValues": [ + "ios", + "android", + "web", + ], + }, + "appId": { + "type": "string", + }, + "ageRestricted": { + "type": "boolean", + "description": "Set to true when the actor is age restricted", + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationPutPreferences": { + "lexicon": 1, + "id": "app.bsky.notification.putPreferences", + "defs": { + "main": { + "type": "procedure", + "description": + "Set notification-related preferences for an account. Requires auth.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "priority", + ], + "properties": { + "priority": { + "type": "boolean", + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationPutActivitySubscription": { + "lexicon": 1, + "id": "app.bsky.notification.putActivitySubscription", + "defs": { + "main": { + "type": "procedure", + "description": + "Puts an activity subscription entry. The key should be omitted for creation and provided for updates. Requires auth.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "subject", + "activitySubscription", + ], + "properties": { + "subject": { + "type": "string", + "format": "did", + }, + "activitySubscription": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#activitySubscription", + }, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "subject", + ], + "properties": { + "subject": { + "type": "string", + "format": "did", + }, + "activitySubscription": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#activitySubscription", + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationDeclaration": { + "lexicon": 1, + "id": "app.bsky.notification.declaration", + "defs": { + "main": { + "type": "record", + "description": + "A declaration of the user's choices related to notifications that can be produced by them.", + "key": "literal:self", + "record": { + "type": "object", + "required": [ + "allowSubscriptions", + ], + "properties": { + "allowSubscriptions": { + "type": "string", + "description": + "A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.", + "knownValues": [ + "followers", + "mutuals", + "none", + ], + }, + }, + }, + }, + }, + }, + "AppBskyNotificationPutPreferencesV2": { + "lexicon": 1, + "id": "app.bsky.notification.putPreferencesV2", + "defs": { + "main": { + "type": "procedure", + "description": + "Set notification-related preferences for an account. Requires auth.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "properties": { + "chat": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#chatPreference", + }, + "follow": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "like": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "likeViaRepost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "mention": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "quote": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "reply": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "repost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "repostViaRepost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#filterablePreference", + }, + "starterpackJoined": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + "subscribedPost": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + "unverified": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + "verified": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preference", + }, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "preferences", + ], + "properties": { + "preferences": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preferences", + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationUpdateSeen": { + "lexicon": 1, + "id": "app.bsky.notification.updateSeen", + "defs": { + "main": { + "type": "procedure", + "description": + "Notify server that the requesting account has seen notifications. Requires auth.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "seenAt", + ], + "properties": { + "seenAt": { + "type": "string", + "format": "datetime", + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationListActivitySubscriptions": { + "lexicon": 1, + "id": "app.bsky.notification.listActivitySubscriptions", + "defs": { + "main": { + "type": "query", + "description": + "Enumerate all accounts to which the requesting account is subscribed to receive notifications for. Requires auth.", + "parameters": { + "type": "params", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 50, + }, + "cursor": { + "type": "string", + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "subscriptions", + ], + "properties": { + "cursor": { + "type": "string", + }, + "subscriptions": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileView", + }, + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationUnregisterPush": { + "lexicon": 1, + "id": "app.bsky.notification.unregisterPush", + "defs": { + "main": { + "type": "procedure", + "description": + "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.", + "input": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "serviceDid", + "token", + "platform", + "appId", + ], + "properties": { + "serviceDid": { + "type": "string", + "format": "did", + }, + "token": { + "type": "string", + }, + "platform": { + "type": "string", + "knownValues": [ + "ios", + "android", + "web", + ], + }, + "appId": { + "type": "string", + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationGetPreferences": { + "lexicon": 1, + "id": "app.bsky.notification.getPreferences", + "defs": { + "main": { + "type": "query", + "description": + "Get notification-related preferences for an account. Requires auth.", + "parameters": { + "type": "params", + "properties": {}, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "preferences", + ], + "properties": { + "preferences": { + "type": "ref", + "ref": "lex:app.bsky.notification.defs#preferences", + }, + }, + }, + }, + }, + }, + }, + "AppBskyNotificationListNotifications": { + "lexicon": 1, + "id": "app.bsky.notification.listNotifications", + "defs": { + "main": { + "type": "query", + "description": + "Enumerate notifications for the requesting account. Requires auth.", + "parameters": { + "type": "params", + "properties": { + "reasons": { + "description": "Notification reasons to include in response.", + "type": "array", + "items": { + "type": "string", + "description": + "A reason that matches the reason property of #notification.", + }, + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 50, + }, + "priority": { + "type": "boolean", + }, + "cursor": { + "type": "string", + }, + "seenAt": { + "type": "string", + "format": "datetime", + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "notifications", + ], + "properties": { + "cursor": { + "type": "string", + }, + "notifications": { + "type": "array", + "items": { + "type": "ref", + "ref": + "lex:app.bsky.notification.listNotifications#notification", + }, + }, + "priority": { + "type": "boolean", + }, + "seenAt": { + "type": "string", + "format": "datetime", + }, + }, + }, + }, + }, + "notification": { + "type": "object", + "required": [ + "uri", + "cid", + "author", + "reason", + "record", + "isRead", + "indexedAt", + ], + "properties": { + "uri": { + "type": "string", + "format": "at-uri", + }, + "cid": { + "type": "string", + "format": "cid", + }, + "author": { + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileView", + }, + "reason": { + "type": "string", + "description": + "The reason why this notification was delivered - e.g. your post was liked, or you received a new follower.", + "knownValues": [ + "like", + "repost", + "follow", + "mention", + "reply", + "quote", + "starterpack-joined", + "verified", + "unverified", + "like-via-repost", + "repost-via-repost", + "subscribed-post", + "contact-match", + ], + }, + "reasonSubject": { + "type": "string", + "format": "at-uri", + }, + "record": { + "type": "unknown", + }, + "isRead": { + "type": "boolean", + }, + "indexedAt": { + "type": "string", + "format": "datetime", + }, + "labels": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:com.atproto.label.defs#label", + }, + }, + }, + }, + }, + }, + "AppBskyNotificationGetUnreadCount": { + "lexicon": 1, + "id": "app.bsky.notification.getUnreadCount", + "defs": { + "main": { + "type": "query", + "description": + "Count the number of unread notifications for the requesting account. Requires auth.", + "parameters": { + "type": "params", + "properties": { + "priority": { + "type": "boolean", + }, + "seenAt": { + "type": "string", + "format": "datetime", + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "count", + ], + "properties": { + "count": { + "type": "integer", + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetSuggestedFeedsSkeleton": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedFeedsSkeleton", + "defs": { + "main": { + "type": "query", + "description": + "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds", + "parameters": { + "type": "params", + "properties": { + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries).", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 25, + "default": 10, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "feeds", + ], + "properties": { + "feeds": { + "type": "array", + "items": { + "type": "string", + "format": "at-uri", + }, + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedSearchStarterPacksSkeleton": { + "lexicon": 1, + "id": "app.bsky.unspecced.searchStarterPacksSkeleton", + "defs": { + "main": { + "type": "query", + "description": "Backend Starter Pack search, returns only skeleton.", + "parameters": { + "type": "params", + "required": [ + "q", + ], + "properties": { + "q": { + "type": "string", + "description": + "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", + }, + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries).", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 25, + }, + "cursor": { + "type": "string", + "description": + "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "starterPacks", + ], + "properties": { + "cursor": { + "type": "string", + }, + "hitsTotal": { + "type": "integer", + "description": + "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.", + }, + "starterPacks": { + "type": "array", + "items": { + "type": "ref", + "ref": + "lex:app.bsky.unspecced.defs#skeletonSearchStarterPack", + }, + }, + }, + }, + }, + "errors": [ + { + "name": "BadQueryString", + }, + ], + }, + }, + }, + "AppBskyUnspeccedGetSuggestedUsersForExplore": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedUsersForExplore", + "defs": { + "main": { + "type": "query", + "description": "Get a list of suggested users for the Explore page", + "parameters": { + "type": "params", + "properties": { + "category": { + "type": "string", + "description": "Category of users to get suggestions for.", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 50, + "default": 25, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "actors", + ], + "properties": { + "actors": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileView", + }, + }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedDefs": { + "lexicon": 1, + "id": "app.bsky.unspecced.defs", + "defs": { + "skeletonSearchPost": { + "type": "object", + "required": [ + "uri", + ], + "properties": { + "uri": { + "type": "string", + "format": "at-uri", + }, + }, + }, + "skeletonSearchActor": { + "type": "object", + "required": [ + "did", + ], + "properties": { + "did": { + "type": "string", + "format": "did", + }, + }, + }, + "skeletonSearchStarterPack": { + "type": "object", + "required": [ + "uri", + ], + "properties": { + "uri": { + "type": "string", + "format": "at-uri", + }, + }, + }, + "trendingTopic": { + "type": "object", + "required": [ + "topic", + "link", + ], + "properties": { + "topic": { + "type": "string", + }, + "displayName": { + "type": "string", + }, + "description": { + "type": "string", + }, + "link": { + "type": "string", + }, + }, + }, + "skeletonTrend": { + "type": "object", + "required": [ + "topic", + "displayName", + "link", + "startedAt", + "postCount", + "dids", + ], + "properties": { + "topic": { + "type": "string", + }, + "displayName": { + "type": "string", + }, + "link": { + "type": "string", + }, + "startedAt": { + "type": "string", + "format": "datetime", + }, + "postCount": { + "type": "integer", + }, + "status": { + "type": "string", + "knownValues": [ + "hot", + ], + }, + "category": { + "type": "string", + }, + "dids": { + "type": "array", + "items": { + "type": "string", + "format": "did", + }, + }, + }, + }, + "trendView": { + "type": "object", + "required": [ + "topic", + "displayName", + "link", + "startedAt", + "postCount", + "actors", + ], + "properties": { + "topic": { + "type": "string", + }, + "displayName": { + "type": "string", + }, + "link": { + "type": "string", + }, + "startedAt": { + "type": "string", + "format": "datetime", + }, + "postCount": { + "type": "integer", + }, + "status": { + "type": "string", + "knownValues": [ + "hot", + ], + }, + "category": { + "type": "string", + }, + "actors": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileViewBasic", + }, + }, + }, + }, + "threadItemPost": { + "type": "object", + "required": [ + "post", + "moreParents", + "moreReplies", + "opThread", + "hiddenByThreadgate", + "mutedByViewer", + ], + "properties": { + "post": { + "type": "ref", + "ref": "lex:app.bsky.feed.defs#postView", + }, + "moreParents": { + "type": "boolean", + "description": + "This post has more parents that were not present in the response. This is just a boolean, without the number of parents.", + }, + "moreReplies": { + "type": "integer", + "description": + "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.", + }, + "opThread": { + "type": "boolean", + "description": + "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.", + }, + "hiddenByThreadgate": { + "type": "boolean", + "description": + "The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread.", + }, + "mutedByViewer": { + "type": "boolean", + "description": + "This is by an account muted by the viewer requesting it.", + }, + }, + }, + "threadItemNoUnauthenticated": { + "type": "object", + "properties": {}, + }, + "threadItemNotFound": { + "type": "object", + "properties": {}, + }, + "threadItemBlocked": { + "type": "object", + "required": [ + "author", + ], + "properties": { + "author": { + "type": "ref", + "ref": "lex:app.bsky.feed.defs#blockedAuthor", + }, + }, + }, + "ageAssuranceState": { + "type": "object", + "description": + "The computed state of the age assurance process, returned to the user in question on certain authenticated requests.", + "required": [ + "status", + ], + "properties": { + "lastInitiatedAt": { + "type": "string", + "format": "datetime", + "description": "The timestamp when this state was last updated.", + }, + "status": { + "type": "string", + "description": "The status of the age assurance process.", + "knownValues": [ + "unknown", + "pending", + "assured", + "blocked", + ], + }, + }, + }, + "ageAssuranceEvent": { + "type": "object", + "description": "Object used to store age assurance data in stash.", + "required": [ + "createdAt", + "status", + "attemptId", + ], + "properties": { + "createdAt": { + "type": "string", + "format": "datetime", + "description": "The date and time of this write operation.", + }, + "status": { + "type": "string", + "description": "The status of the age assurance process.", + "knownValues": [ + "unknown", + "pending", + "assured", + ], + }, + "attemptId": { + "type": "string", + "description": + "The unique identifier for this instance of the age assurance flow, in UUID format.", + }, + "email": { + "type": "string", + "description": "The email used for AA.", + }, + "initIp": { + "type": "string", + "description": "The IP address used when initiating the AA flow.", + }, + "initUa": { + "type": "string", + "description": "The user agent used when initiating the AA flow.", + }, + "completeIp": { + "type": "string", + "description": "The IP address used when completing the AA flow.", + }, + "completeUa": { + "type": "string", + "description": "The user agent used when completing the AA flow.", + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton": { + "lexicon": 1, + "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton", + "defs": { + "main": { + "type": "query", + "description": + "Get a skeleton of suggested starterpacks for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getOnboardingSuggestedStarterPacks", + "parameters": { + "type": "params", + "properties": { + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries).", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 25, + "default": 10, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "starterPacks", + ], + "properties": { + "starterPacks": { + "type": "array", + "items": { + "type": "string", + "format": "at-uri", + }, + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetSuggestedUsersForExploreSkeleton": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedUsersForExploreSkeleton", + "defs": { + "main": { + "type": "query", + "description": + "Get a skeleton of suggested users for the Explore page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForExplore", + "parameters": { + "type": "params", + "properties": { + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries).", + }, + "category": { + "type": "string", + "description": "Category of users to get suggestions for.", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 50, + "default": 25, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "dids", + ], + "properties": { + "dids": { + "type": "array", + "items": { + "type": "string", + "format": "did", + }, + }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetSuggestedUsers": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedUsers", + "defs": { + "main": { + "type": "query", + "description": "Get a list of suggested users", + "parameters": { + "type": "params", + "properties": { + "category": { + "type": "string", + "description": "Category of users to get suggestions for.", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 50, + "default": 25, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "actors", + ], + "properties": { + "actors": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileView", + }, + }, + "recId": { + "type": "string", + "description": "DEPRECATED: use recIdStr instead.", + }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetPostThreadOtherV2": { + "lexicon": 1, + "id": "app.bsky.unspecced.getPostThreadOtherV2", + "defs": { + "main": { + "type": "query", + "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.", + "parameters": { + "type": "params", + "required": [ + "anchor", + ], + "properties": { + "anchor": { + "type": "string", + "format": "at-uri", + "description": + "Reference (AT-URI) to post record. This is the anchor post.", + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "thread", + ], + "properties": { + "thread": { + "type": "array", + "description": + "A flat list of other thread items. The depth of each item is indicated by the depth property inside the item.", + "items": { + "type": "ref", + "ref": + "lex:app.bsky.unspecced.getPostThreadOtherV2#threadItem", + }, + }, + }, + }, + }, + }, + "threadItem": { + "type": "object", + "required": [ + "uri", + "depth", + "value", + ], + "properties": { + "uri": { + "type": "string", + "format": "at-uri", + }, + "depth": { + "type": "integer", + "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.", + }, + "value": { + "type": "union", + "refs": [ + "lex:app.bsky.unspecced.defs#threadItemPost", + ], + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetSuggestedStarterPacks": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedStarterPacks", + "defs": { + "main": { + "type": "query", + "description": "Get a list of suggested starterpacks", + "parameters": { + "type": "params", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 25, + "default": 10, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "starterPacks", + ], + "properties": { + "starterPacks": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.graph.defs#starterPackView", + }, + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetSuggestedStarterPacksSkeleton": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", + "defs": { + "main": { + "type": "query", + "description": + "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks", + "parameters": { + "type": "params", + "properties": { + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries).", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 25, + "default": 10, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "starterPacks", + ], + "properties": { + "starterPacks": { + "type": "array", + "items": { + "type": "string", + "format": "at-uri", + }, + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetOnboardingSuggestedStarterPacks": { + "lexicon": 1, + "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", + "defs": { + "main": { + "type": "query", + "description": "Get a list of suggested starterpacks for onboarding", + "parameters": { + "type": "params", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 25, + "default": 10, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "starterPacks", + ], + "properties": { + "starterPacks": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:app.bsky.graph.defs#starterPackView", + }, + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetSuggestedUsersSkeleton": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedUsersSkeleton", + "defs": { + "main": { + "type": "query", + "description": + "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers", + "parameters": { + "type": "params", + "properties": { + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries).", + }, + "category": { + "type": "string", + "description": "Category of users to get suggestions for.", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 50, + "default": 25, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "dids", + ], + "properties": { + "dids": { + "type": "array", + "items": { + "type": "string", + "format": "did", + }, + }, + "recId": { + "type": "string", + "description": "DEPRECATED: use recIdStr instead.", + }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, + }, + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetPostThreadV2": { + "lexicon": 1, + "id": "app.bsky.unspecced.getPostThreadV2", + "defs": { + "main": { + "type": "query", + "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.", + "parameters": { + "type": "params", + "required": [ + "anchor", + ], + "properties": { + "anchor": { + "type": "string", + "format": "at-uri", + "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.", + }, + "above": { + "type": "boolean", + "description": "Whether to include parents above the anchor.", + "default": true, + }, + "below": { + "type": "integer", + "description": + "How many levels of replies to include below the anchor.", + "default": 6, + "minimum": 0, + "maximum": 20, + }, + "branchingFactor": { + "type": "integer", + "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).", + "default": 10, + "minimum": 0, + "maximum": 100, + }, + "sort": { + "type": "string", + "description": "Sorting for the thread replies.", + "knownValues": [ + "newest", + "oldest", + "top", + ], + "default": "oldest", + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "thread", + "hasOtherReplies", + ], + "properties": { + "thread": { + "type": "array", + "description": + "A flat list of thread items. The depth of each item is indicated by the depth property inside the item.", + "items": { + "type": "ref", + "ref": "lex:app.bsky.unspecced.getPostThreadV2#threadItem", + }, + }, + "threadgate": { + "type": "ref", + "ref": "lex:app.bsky.feed.defs#threadgateView", + }, + "hasOtherReplies": { + "type": "boolean", + "description": + "Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them.", + }, + }, + }, + }, + }, + "threadItem": { + "type": "object", + "required": [ + "uri", + "depth", + "value", + ], + "properties": { + "uri": { + "type": "string", + "format": "at-uri", + }, + "depth": { + "type": "integer", + "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.", }, - "completeUa": { - "type": "string", - "description": "The user agent used when completing the AA flow.", + "value": { + "type": "union", + "refs": [ + "lex:app.bsky.unspecced.defs#threadItemPost", + "lex:app.bsky.unspecced.defs#threadItemNoUnauthenticated", + "lex:app.bsky.unspecced.defs#threadItemNotFound", + "lex:app.bsky.unspecced.defs#threadItemBlocked", + ], }, }, }, }, }, - "AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton": { + "AppBskyUnspeccedGetTrends": { "lexicon": 1, - "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton", + "id": "app.bsky.unspecced.getTrends", "defs": { "main": { "type": "query", - "description": - "Get a skeleton of suggested starterpacks for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getOnboardingSuggestedStarterPacks", + "description": "Get the current trends on the network", "parameters": { "type": "params", "properties": { - "viewer": { - "type": "string", - "format": "did", - "description": - "DID of the account making the request (not included for public/unauthenticated queries).", - }, "limit": { "type": "integer", "minimum": 1, @@ -7529,14 +9148,14 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "starterPacks", + "trends", ], "properties": { - "starterPacks": { + "trends": { "type": "array", "items": { - "type": "string", - "format": "at-uri", + "type": "ref", + "ref": "lex:app.bsky.unspecced.defs#trendView", }, }, }, @@ -7545,26 +9164,46 @@ export const schemaDict = { }, }, }, - "AppBskyUnspeccedGetSuggestedUsers": { + "AppBskyUnspeccedSearchActorsSkeleton": { "lexicon": 1, - "id": "app.bsky.unspecced.getSuggestedUsers", + "id": "app.bsky.unspecced.searchActorsSkeleton", "defs": { "main": { "type": "query", - "description": "Get a list of suggested users", + "description": + "Backend Actors (profile) search, returns only skeleton.", "parameters": { "type": "params", + "required": [ + "q", + ], "properties": { - "category": { + "q": { "type": "string", - "description": "Category of users to get suggestions for.", + "description": + "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax.", + }, + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", + }, + "typeahead": { + "type": "boolean", + "description": "If true, acts as fast/simple 'typeahead' query.", }, "limit": { "type": "integer", "minimum": 1, - "maximum": 50, + "maximum": 100, "default": 25, }, + "cursor": { + "type": "string", + "description": + "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", + }, }, }, "output": { @@ -7575,105 +9214,63 @@ export const schemaDict = { "actors", ], "properties": { + "cursor": { + "type": "string", + }, + "hitsTotal": { + "type": "integer", + "description": + "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.", + }, "actors": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.actor.defs#profileView", + "ref": "lex:app.bsky.unspecced.defs#skeletonSearchActor", }, }, }, }, }, + "errors": [ + { + "name": "BadQueryString", + }, + ], }, }, }, - "AppBskyUnspeccedGetPostThreadOtherV2": { + "AppBskyUnspeccedGetSuggestionsSkeleton": { "lexicon": 1, - "id": "app.bsky.unspecced.getPostThreadOtherV2", + "id": "app.bsky.unspecced.getSuggestionsSkeleton", "defs": { "main": { "type": "query", "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.", + "Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions", "parameters": { "type": "params", - "required": [ - "anchor", - ], "properties": { - "anchor": { + "viewer": { "type": "string", - "format": "at-uri", + "format": "did", "description": - "Reference (AT-URI) to post record. This is the anchor post.", - }, - }, - }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "thread", - ], - "properties": { - "thread": { - "type": "array", - "description": - "A flat list of other thread items. The depth of each item is indicated by the depth property inside the item.", - "items": { - "type": "ref", - "ref": - "lex:app.bsky.unspecced.getPostThreadOtherV2#threadItem", - }, - }, + "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", }, - }, - }, - }, - "threadItem": { - "type": "object", - "required": [ - "uri", - "depth", - "value", - ], - "properties": { - "uri": { - "type": "string", - "format": "at-uri", - }, - "depth": { - "type": "integer", - "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.", - }, - "value": { - "type": "union", - "refs": [ - "lex:app.bsky.unspecced.defs#threadItemPost", - ], - }, - }, - }, - }, - }, - "AppBskyUnspeccedGetSuggestedStarterPacks": { - "lexicon": 1, - "id": "app.bsky.unspecced.getSuggestedStarterPacks", - "defs": { - "main": { - "type": "query", - "description": "Get a list of suggested starterpacks", - "parameters": { - "type": "params", - "properties": { "limit": { "type": "integer", "minimum": 1, - "maximum": 25, - "default": 10, + "maximum": 100, + "default": 50, + }, + "cursor": { + "type": "string", + }, + "relativeToDid": { + "type": "string", + "format": "did", + "description": + "DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.", }, }, }, @@ -7682,83 +9279,132 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "starterPacks", + "actors", ], "properties": { - "starterPacks": { + "cursor": { + "type": "string", + }, + "actors": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.graph.defs#starterPackView", + "ref": "lex:app.bsky.unspecced.defs#skeletonSearchActor", }, }, + "relativeToDid": { + "type": "string", + "format": "did", + "description": + "DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer.", + }, + "recId": { + "type": "integer", + "description": "DEPRECATED: use recIdStr instead.", + }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, }, }, }, }, }, }, - "AppBskyUnspeccedGetSuggestedStarterPacksSkeleton": { + "AppBskyUnspeccedSearchPostsSkeleton": { "lexicon": 1, - "id": "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", + "id": "app.bsky.unspecced.searchPostsSkeleton", "defs": { "main": { "type": "query", - "description": - "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks", + "description": "Backend Posts search, returns only skeleton", "parameters": { "type": "params", + "required": [ + "q", + ], "properties": { + "q": { + "type": "string", + "description": + "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", + }, + "sort": { + "type": "string", + "knownValues": [ + "top", + "latest", + ], + "default": "latest", + "description": "Specifies the ranking order of results.", + }, + "since": { + "type": "string", + "description": + "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).", + }, + "until": { + "type": "string", + "description": + "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).", + }, + "mentions": { + "type": "string", + "format": "at-identifier", + "description": + "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.", + }, + "author": { + "type": "string", + "format": "at-identifier", + "description": + "Filter to posts by the given account. Handles are resolved to DID before query-time.", + }, + "lang": { + "type": "string", + "format": "language", + "description": + "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.", + }, + "domain": { + "type": "string", + "description": + "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.", + }, + "url": { + "type": "string", + "format": "uri", + "description": + "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.", + }, + "tag": { + "type": "array", + "items": { + "type": "string", + "maxLength": 640, + "maxGraphemes": 64, + }, + "description": + "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.", + }, "viewer": { "type": "string", "format": "did", "description": - "DID of the account making the request (not included for public/unauthenticated queries).", + "DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.", }, "limit": { "type": "integer", "minimum": 1, - "maximum": 25, - "default": 10, - }, - }, - }, - "output": { - "encoding": "application/json", - "schema": { - "type": "object", - "required": [ - "starterPacks", - ], - "properties": { - "starterPacks": { - "type": "array", - "items": { - "type": "string", - "format": "at-uri", - }, - }, + "maximum": 100, + "default": 25, }, - }, - }, - }, - }, - }, - "AppBskyUnspeccedGetOnboardingSuggestedStarterPacks": { - "lexicon": 1, - "id": "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", - "defs": { - "main": { - "type": "query", - "description": "Get a list of suggested starterpacks for onboarding", - "parameters": { - "type": "params", - "properties": { - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 25, - "default": 10, + "cursor": { + "type": "string", + "description": + "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", }, }, }, @@ -7767,30 +9413,43 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "starterPacks", + "posts", ], "properties": { - "starterPacks": { + "cursor": { + "type": "string", + }, + "hitsTotal": { + "type": "integer", + "description": + "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.", + }, + "posts": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.graph.defs#starterPackView", + "ref": "lex:app.bsky.unspecced.defs#skeletonSearchPost", }, }, }, }, }, + "errors": [ + { + "name": "BadQueryString", + }, + ], }, }, }, - "AppBskyUnspeccedGetSuggestedUsersSkeleton": { + "AppBskyUnspeccedGetOnboardingSuggestedUsersSkeleton": { "lexicon": 1, - "id": "app.bsky.unspecced.getSuggestedUsersSkeleton", + "id": "app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton", "defs": { "main": { "type": "query", "description": - "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers", + "Get a skeleton of suggested users for onboarding. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedOnboardingUsers", "parameters": { "type": "params", "properties": { @@ -7827,62 +9486,43 @@ export const schemaDict = { "format": "did", }, }, + "recId": { + "type": "string", + "description": "DEPRECATED: use recIdStr instead.", + }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, }, }, }, }, }, }, - "AppBskyUnspeccedGetPostThreadV2": { + "AppBskyUnspeccedGetSuggestedUsersForDiscoverSkeleton": { "lexicon": 1, - "id": "app.bsky.unspecced.getPostThreadV2", + "id": "app.bsky.unspecced.getSuggestedUsersForDiscoverSkeleton", "defs": { "main": { "type": "query", "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.", + "Get a skeleton of suggested users for the Discover page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForDiscover", "parameters": { "type": "params", - "required": [ - "anchor", - ], "properties": { - "anchor": { + "viewer": { "type": "string", - "format": "at-uri", - "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.", - }, - "above": { - "type": "boolean", - "description": "Whether to include parents above the anchor.", - "default": true, - }, - "below": { - "type": "integer", + "format": "did", "description": - "How many levels of replies to include below the anchor.", - "default": 6, - "minimum": 0, - "maximum": 20, + "DID of the account making the request (not included for public/unauthenticated queries).", }, - "branchingFactor": { + "limit": { "type": "integer", - "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).", - "default": 10, - "minimum": 0, - "maximum": 100, - }, - "sort": { - "type": "string", - "description": "Sorting for the thread replies.", - "knownValues": [ - "newest", - "oldest", - "top", - ], - "default": "oldest", + "minimum": 1, + "maximum": 50, + "default": 25, }, }, }, @@ -7891,77 +9531,42 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "thread", - "hasOtherReplies", + "dids", ], "properties": { - "thread": { + "dids": { "type": "array", - "description": - "A flat list of thread items. The depth of each item is indicated by the depth property inside the item.", "items": { - "type": "ref", - "ref": "lex:app.bsky.unspecced.getPostThreadV2#threadItem", + "type": "string", + "format": "did", }, }, - "threadgate": { - "type": "ref", - "ref": "lex:app.bsky.feed.defs#threadgateView", - }, - "hasOtherReplies": { - "type": "boolean", + "recIdStr": { + "type": "string", "description": - "Whether this thread has additional replies. If true, a call can be made to the `getPostThreadOtherV2` endpoint to retrieve them.", + "Snowflake for this recommendation, use when submitting recommendation events.", }, }, }, }, }, - "threadItem": { - "type": "object", - "required": [ - "uri", - "depth", - "value", - ], - "properties": { - "uri": { - "type": "string", - "format": "at-uri", - }, - "depth": { - "type": "integer", - "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.", - }, - "value": { - "type": "union", - "refs": [ - "lex:app.bsky.unspecced.defs#threadItemPost", - "lex:app.bsky.unspecced.defs#threadItemNoUnauthenticated", - "lex:app.bsky.unspecced.defs#threadItemNotFound", - "lex:app.bsky.unspecced.defs#threadItemBlocked", - ], - }, - }, - }, }, }, - "AppBskyUnspeccedGetTrends": { + "AppBskyUnspeccedGetSuggestedUsersForDiscover": { "lexicon": 1, - "id": "app.bsky.unspecced.getTrends", + "id": "app.bsky.unspecced.getSuggestedUsersForDiscover", "defs": { "main": { "type": "query", - "description": "Get the current trends on the network", + "description": "Get a list of suggested users for the Discover page", "parameters": { "type": "params", "properties": { "limit": { "type": "integer", "minimum": 1, - "maximum": 25, - "default": 10, + "maximum": 50, + "default": 25, }, }, }, @@ -7970,115 +9575,55 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "trends", + "actors", ], "properties": { - "trends": { + "actors": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.unspecced.defs#trendView", + "ref": "lex:app.bsky.actor.defs#profileView", }, }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, }, }, }, }, }, }, - "AppBskyUnspeccedSearchActorsSkeleton": { + "AppBskyUnspeccedGetAgeAssuranceState": { "lexicon": 1, - "id": "app.bsky.unspecced.searchActorsSkeleton", + "id": "app.bsky.unspecced.getAgeAssuranceState", "defs": { "main": { "type": "query", "description": - "Backend Actors (profile) search, returns only skeleton.", - "parameters": { - "type": "params", - "required": [ - "q", - ], - "properties": { - "q": { - "type": "string", - "description": - "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax.", - }, - "viewer": { - "type": "string", - "format": "did", - "description": - "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", - }, - "typeahead": { - "type": "boolean", - "description": "If true, acts as fast/simple 'typeahead' query.", - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "default": 25, - }, - "cursor": { - "type": "string", - "description": - "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", - }, - }, - }, + "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.", "output": { "encoding": "application/json", "schema": { - "type": "object", - "required": [ - "actors", - ], - "properties": { - "cursor": { - "type": "string", - }, - "hitsTotal": { - "type": "integer", - "description": - "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.", - }, - "actors": { - "type": "array", - "items": { - "type": "ref", - "ref": "lex:app.bsky.unspecced.defs#skeletonSearchActor", - }, - }, - }, + "type": "ref", + "ref": "lex:app.bsky.unspecced.defs#ageAssuranceState", }, }, - "errors": [ - { - "name": "BadQueryString", - }, - ], }, }, }, - "AppBskyUnspeccedGetSuggestionsSkeleton": { + "AppBskyUnspeccedGetPopularFeedGenerators": { "lexicon": 1, - "id": "app.bsky.unspecced.getSuggestionsSkeleton", + "id": "app.bsky.unspecced.getPopularFeedGenerators", "defs": { "main": { "type": "query", - "description": - "Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions", + "description": "An unspecced view of globally popular feed generators.", "parameters": { "type": "params", "properties": { - "viewer": { - "type": "string", - "format": "did", - "description": - "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking.", - }, "limit": { "type": "integer", "minimum": 1, @@ -8088,11 +9633,8 @@ export const schemaDict = { "cursor": { "type": "string", }, - "relativeToDid": { + "query": { "type": "string", - "format": "did", - "description": - "DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer.", }, }, }, @@ -8101,129 +9643,45 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "actors", + "feeds", ], "properties": { "cursor": { "type": "string", }, - "actors": { + "feeds": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.unspecced.defs#skeletonSearchActor", + "ref": "lex:app.bsky.feed.defs#generatorView", }, }, - "relativeToDid": { - "type": "string", - "format": "did", - "description": - "DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer.", - }, - "recId": { - "type": "integer", - "description": - "Snowflake for this recommendation, use when submitting recommendation events.", - }, }, }, }, }, }, }, - "AppBskyUnspeccedSearchPostsSkeleton": { + "AppBskyUnspeccedGetSuggestedOnboardingUsers": { "lexicon": 1, - "id": "app.bsky.unspecced.searchPostsSkeleton", + "id": "app.bsky.unspecced.getSuggestedOnboardingUsers", "defs": { "main": { "type": "query", - "description": "Backend Posts search, returns only skeleton", + "description": "Get a list of suggested users for onboarding", "parameters": { "type": "params", - "required": [ - "q", - ], "properties": { - "q": { - "type": "string", - "description": - "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended.", - }, - "sort": { - "type": "string", - "knownValues": [ - "top", - "latest", - ], - "default": "latest", - "description": "Specifies the ranking order of results.", - }, - "since": { - "type": "string", - "description": - "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD).", - }, - "until": { - "type": "string", - "description": - "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD).", - }, - "mentions": { - "type": "string", - "format": "at-identifier", - "description": - "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions.", - }, - "author": { - "type": "string", - "format": "at-identifier", - "description": - "Filter to posts by the given account. Handles are resolved to DID before query-time.", - }, - "lang": { - "type": "string", - "format": "language", - "description": - "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection.", - }, - "domain": { - "type": "string", - "description": - "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization.", - }, - "url": { - "type": "string", - "format": "uri", - "description": - "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching.", - }, - "tag": { - "type": "array", - "items": { - "type": "string", - "maxLength": 640, - "maxGraphemes": 64, - }, - "description": - "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching.", - }, - "viewer": { + "category": { "type": "string", - "format": "did", - "description": - "DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries.", + "description": "Category of users to get suggestions for.", }, "limit": { "type": "integer", "minimum": 1, - "maximum": 100, + "maximum": 50, "default": 25, }, - "cursor": { - "type": "string", - "description": - "Optional pagination mechanism; may not necessarily allow scrolling through entire result set.", - }, }, }, "output": { @@ -8231,74 +9689,50 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "posts", + "actors", ], "properties": { - "cursor": { - "type": "string", - }, - "hitsTotal": { - "type": "integer", - "description": - "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.", - }, - "posts": { + "actors": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.unspecced.defs#skeletonSearchPost", + "ref": "lex:app.bsky.actor.defs#profileView", }, }, + "recId": { + "type": "string", + "description": "DEPRECATED: use recIdStr instead.", + }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, }, }, }, - "errors": [ - { - "name": "BadQueryString", - }, - ], - }, - }, - }, - "AppBskyUnspeccedGetAgeAssuranceState": { - "lexicon": 1, - "id": "app.bsky.unspecced.getAgeAssuranceState", - "defs": { - "main": { - "type": "query", - "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.", - "output": { - "encoding": "application/json", - "schema": { - "type": "ref", - "ref": "lex:app.bsky.unspecced.defs#ageAssuranceState", - }, - }, }, }, }, - "AppBskyUnspeccedGetPopularFeedGenerators": { + "AppBskyUnspeccedGetSuggestedUsersForSeeMore": { "lexicon": 1, - "id": "app.bsky.unspecced.getPopularFeedGenerators", + "id": "app.bsky.unspecced.getSuggestedUsersForSeeMore", "defs": { "main": { "type": "query", - "description": "An unspecced view of globally popular feed generators.", + "description": "Get a list of suggested users for the See More page", "parameters": { "type": "params", "properties": { + "category": { + "type": "string", + "description": "Category of users to get suggestions for.", + }, "limit": { "type": "integer", "minimum": 1, - "maximum": 100, - "default": 50, - }, - "cursor": { - "type": "string", - }, - "query": { - "type": "string", + "maximum": 50, + "default": 25, }, }, }, @@ -8307,19 +9741,21 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "feeds", + "actors", ], "properties": { - "cursor": { - "type": "string", - }, - "feeds": { + "actors": { "type": "array", "items": { "type": "ref", - "ref": "lex:app.bsky.feed.defs#generatorView", + "ref": "lex:app.bsky.actor.defs#profileView", }, }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, }, }, }, @@ -8453,45 +9889,100 @@ export const schemaDict = { "schema": { "type": "object", "required": [ - "suggestions", + "suggestions", + ], + "properties": { + "suggestions": { + "type": "array", + "items": { + "type": "ref", + "ref": + "lex:app.bsky.unspecced.getTaggedSuggestions#suggestion", + }, + }, + }, + }, + }, + }, + "suggestion": { + "type": "object", + "required": [ + "tag", + "subjectType", + "subject", + ], + "properties": { + "tag": { + "type": "string", + }, + "subjectType": { + "type": "string", + "knownValues": [ + "actor", + "feed", + ], + }, + "subject": { + "type": "string", + "format": "uri", + }, + }, + }, + }, + }, + "AppBskyUnspeccedGetSuggestedUsersForSeeMoreSkeleton": { + "lexicon": 1, + "id": "app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeleton", + "defs": { + "main": { + "type": "query", + "description": + "Get a skeleton of suggested users for the See More page. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsersForSeeMore", + "parameters": { + "type": "params", + "properties": { + "viewer": { + "type": "string", + "format": "did", + "description": + "DID of the account making the request (not included for public/unauthenticated queries).", + }, + "category": { + "type": "string", + "description": "Category of users to get suggestions for.", + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 50, + "default": 25, + }, + }, + }, + "output": { + "encoding": "application/json", + "schema": { + "type": "object", + "required": [ + "dids", ], "properties": { - "suggestions": { + "dids": { "type": "array", "items": { - "type": "ref", - "ref": - "lex:app.bsky.unspecced.getTaggedSuggestions#suggestion", + "type": "string", + "format": "did", }, }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, }, }, }, }, - "suggestion": { - "type": "object", - "required": [ - "tag", - "subjectType", - "subject", - ], - "properties": { - "tag": { - "type": "string", - }, - "subjectType": { - "type": "string", - "knownValues": [ - "actor", - "feed", - ], - }, - "subject": { - "type": "string", - "format": "uri", - }, - }, - }, }, }, "AppBskyUnspeccedGetSuggestedFeeds": { @@ -8706,16 +10197,20 @@ export const schemaDict = { "ref": "lex:app.bsky.actor.defs#profileView", }, }, + "recIdStr": { + "type": "string", + "description": + "Snowflake for this recommendation, use when submitting recommendation events.", + }, "isFallback": { "type": "boolean", "description": - "If true, response has fallen-back to generic results, and is not scoped using relativeToDid", + "DEPRECATED, unused. Previously: if true, response has fallen-back to generic results, and is not scoped using relativeToDid", "default": false, }, "recId": { "type": "integer", - "description": - "Snowflake for this recommendation, use when submitting recommendation events.", + "description": "DEPRECATED: use recIdStr instead.", }, }, }, @@ -9193,6 +10688,30 @@ export const schemaDict = { "description": "if the actor is followed by this DID, contains the AT-URI of the follow record", }, + "blocking": { + "type": "string", + "format": "at-uri", + "description": + "if the actor blocks this DID, this is the AT-URI of the block record", + }, + "blockedBy": { + "type": "string", + "format": "at-uri", + "description": + "if the actor is blocked by this DID, contains the AT-URI of the block record", + }, + "blockingByList": { + "type": "string", + "format": "at-uri", + "description": + "if the actor blocks this DID via a block list, this is the AT-URI of the listblock record", + }, + "blockedByList": { + "type": "string", + "format": "at-uri", + "description": + "if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record", + }, }, }, }, @@ -10374,6 +11893,191 @@ export const schemaDict = { }, }, }, + "AppBskyAuthFullApp": { + "lexicon": 1, + "id": "app.bsky.authFullApp", + "defs": { + "main": { + "type": "permission-set", + "title": "Full Bluesky Social App Permissions", + "title:lang": {}, + "detail": + "Manage all public content and interactions, private preferences and subscriptions, and other Bluesky-specific app features and data.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "rpc", + "inheritAud": true, + "lxm": [ + "app.bsky.actor.getPreferences", + "app.bsky.actor.getProfile", + "app.bsky.actor.getProfiles", + "app.bsky.actor.getSuggestions", + "app.bsky.actor.putPreferences", + "app.bsky.actor.searchActors", + "app.bsky.actor.searchActorsTypeahead", + "app.bsky.bookmark.createBookmark", + "app.bsky.bookmark.deleteBookmark", + "app.bsky.bookmark.getBookmarks", + "app.bsky.contact.dismissMatch", + "app.bsky.contact.getMatches", + "app.bsky.contact.getSyncStatus", + "app.bsky.contact.importContacts", + "app.bsky.contact.removeData", + "app.bsky.contact.startPhoneVerification", + "app.bsky.contact.verifyPhone", + "app.bsky.feed.describeFeedGenerator", + "app.bsky.feed.getActorFeeds", + "app.bsky.feed.getActorLikes", + "app.bsky.feed.getAuthorFeed", + "app.bsky.feed.getFeed", + "app.bsky.feed.getFeedGenerator", + "app.bsky.feed.getFeedGenerators", + "app.bsky.feed.getFeedSkeleton", + "app.bsky.feed.getLikes", + "app.bsky.feed.getListFeed", + "app.bsky.feed.getPostThread", + "app.bsky.feed.getPosts", + "app.bsky.feed.getQuotes", + "app.bsky.feed.getRepostedBy", + "app.bsky.feed.getSuggestedFeeds", + "app.bsky.feed.getTimeline", + "app.bsky.feed.searchPosts", + "app.bsky.feed.sendInteractions", + "app.bsky.graph.getActorStarterPacks", + "app.bsky.graph.getBlocks", + "app.bsky.graph.getFollowers", + "app.bsky.graph.getFollows", + "app.bsky.graph.getKnownFollowers", + "app.bsky.graph.getList", + "app.bsky.graph.getListBlocks", + "app.bsky.graph.getListMutes", + "app.bsky.graph.getLists", + "app.bsky.graph.getListsWithMembership", + "app.bsky.graph.getMutes", + "app.bsky.graph.getRelationships", + "app.bsky.graph.getStarterPack", + "app.bsky.graph.getStarterPacks", + "app.bsky.graph.getStarterPacksWithMembership", + "app.bsky.graph.getSuggestedFollowsByActor", + "app.bsky.graph.muteActor", + "app.bsky.graph.muteActorList", + "app.bsky.graph.muteThread", + "app.bsky.graph.searchStarterPacks", + "app.bsky.graph.unmuteActor", + "app.bsky.graph.unmuteActorList", + "app.bsky.graph.unmuteThread", + "app.bsky.labeler.getServices", + "app.bsky.notification.getPreferences", + "app.bsky.notification.getUnreadCount", + "app.bsky.notification.listActivitySubscriptions", + "app.bsky.notification.listNotifications", + "app.bsky.notification.putActivitySubscription", + "app.bsky.notification.putPreferences", + "app.bsky.notification.putPreferencesV2", + "app.bsky.notification.registerPush", + "app.bsky.notification.unregisterPush", + "app.bsky.notification.updateSeen", + "app.bsky.unspecced.getAgeAssuranceState", + "app.bsky.unspecced.getConfig", + "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", + "app.bsky.unspecced.getPopularFeedGenerators", + "app.bsky.unspecced.getPostThreadOtherV2", + "app.bsky.unspecced.getPostThreadV2", + "app.bsky.unspecced.getSuggestedFeeds", + "app.bsky.unspecced.getSuggestedFeedsSkeleton", + "app.bsky.unspecced.getSuggestedStarterPacks", + "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", + "app.bsky.unspecced.getSuggestedUsers", + "app.bsky.unspecced.getSuggestedUsersSkeleton", + "app.bsky.unspecced.getSuggestionsSkeleton", + "app.bsky.unspecced.getTaggedSuggestions", + "app.bsky.unspecced.getTrendingTopics", + "app.bsky.unspecced.getTrends", + "app.bsky.unspecced.getTrendsSkeleton", + "app.bsky.unspecced.initAgeAssurance", + "app.bsky.unspecced.searchActorsSkeleton", + "app.bsky.unspecced.searchPostsSkeleton", + "app.bsky.unspecced.searchStarterPacksSkeleton", + "app.bsky.video.getJobStatus", + "app.bsky.video.getUploadLimits", + "app.bsky.video.uploadVideo", + ], + }, + { + "type": "permission", + "resource": "repo", + "action": [ + "create", + "update", + "delete", + ], + "collection": [ + "app.bsky.actor.profile", + "app.bsky.actor.status", + "app.bsky.feed.like", + "app.bsky.feed.post", + "app.bsky.feed.postgate", + "app.bsky.feed.repost", + "app.bsky.feed.threadgate", + "app.bsky.graph.block", + "app.bsky.graph.follow", + "app.bsky.graph.list", + "app.bsky.graph.listblock", + "app.bsky.graph.listitem", + "app.bsky.graph.starterpack", + "app.bsky.notification.declaration", + ], + }, + ], + }, + }, + }, + "AppBskyAuthManageModeration": { + "lexicon": 1, + "id": "app.bsky.authManageModeration", + "defs": { + "main": { + "type": "permission-set", + "title": "Manage Personal Moderation", + "title:lang": {}, + "detail": + "Control over blocks, mutes, mod lists, mod services, and preferences.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "rpc", + "inheritAud": true, + "lxm": [ + "app.bsky.actor.getPreferences", + "app.bsky.actor.putPreferences", + "app.bsky.graph.muteActor", + "app.bsky.graph.muteActorList", + "app.bsky.graph.muteThread", + "app.bsky.graph.unmuteActor", + "app.bsky.graph.unmuteActorList", + "app.bsky.graph.unmuteThread", + ], + }, + { + "type": "permission", + "resource": "repo", + "action": [ + "create", + "update", + "delete", + ], + "collection": [ + "app.bsky.graph.block", + "app.bsky.graph.listblock", + ], + }, + ], + }, + }, + }, "AppBskyFeedGenerator": { "lexicon": 1, "id": "app.bsky.feed.generator", @@ -10464,6 +12168,10 @@ export const schemaDict = { "interactions", ], "properties": { + "feed": { + "type": "string", + "format": "at-uri", + }, "interactions": { "type": "array", "items": { @@ -12582,6 +14290,123 @@ export const schemaDict = { }, }, }, + "AppBskyAuthViewAll": { + "lexicon": 1, + "id": "app.bsky.authViewAll", + "defs": { + "main": { + "type": "permission-set", + "title": "Read-only access to all content", + "title:lang": {}, + "detail": + "View Bluesky network content from account perspective, and read all notifications and preferences.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "rpc", + "inheritAud": true, + "lxm": [ + "app.bsky.actor.getPreferences", + "app.bsky.actor.getProfile", + "app.bsky.actor.getProfiles", + "app.bsky.actor.getSuggestions", + "app.bsky.actor.searchActors", + "app.bsky.actor.searchActorsTypeahead", + "app.bsky.bookmark.getBookmarks", + "app.bsky.feed.describeFeedGenerator", + "app.bsky.feed.getActorFeeds", + "app.bsky.feed.getActorLikes", + "app.bsky.feed.getAuthorFeed", + "app.bsky.feed.getFeed", + "app.bsky.feed.getFeedGenerator", + "app.bsky.feed.getFeedGenerators", + "app.bsky.feed.getFeedSkeleton", + "app.bsky.feed.getLikes", + "app.bsky.feed.getListFeed", + "app.bsky.feed.getPostThread", + "app.bsky.feed.getPosts", + "app.bsky.feed.getQuotes", + "app.bsky.feed.getRepostedBy", + "app.bsky.feed.getSuggestedFeeds", + "app.bsky.feed.getTimeline", + "app.bsky.feed.searchPosts", + "app.bsky.graph.getActorStarterPacks", + "app.bsky.graph.getBlocks", + "app.bsky.graph.getFollowers", + "app.bsky.graph.getFollows", + "app.bsky.graph.getKnownFollowers", + "app.bsky.graph.getListBlocks", + "app.bsky.graph.getListMutes", + "app.bsky.graph.getLists", + "app.bsky.graph.getListsWithMembership", + "app.bsky.graph.getMutes", + "app.bsky.graph.getRelationships", + "app.bsky.graph.getStarterPack", + "app.bsky.graph.getStarterPacks", + "app.bsky.graph.getStarterPacksWithMembership", + "app.bsky.graph.getSuggestedFollowsByActor", + "app.bsky.graph.searchStarterPacks", + "app.bsky.labeler.getServices", + "app.bsky.notification.getPreferences", + "app.bsky.notification.getUnreadCount", + "app.bsky.notification.listActivitySubscriptions", + "app.bsky.notification.listNotifications", + "app.bsky.notification.updateSeen", + "app.bsky.unspecced.getAgeAssuranceState", + "app.bsky.unspecced.getConfig", + "app.bsky.unspecced.getOnboardingSuggestedStarterPacks", + "app.bsky.unspecced.getPopularFeedGenerators", + "app.bsky.unspecced.getPostThreadOtherV2", + "app.bsky.unspecced.getPostThreadV2", + "app.bsky.unspecced.getSuggestedFeeds", + "app.bsky.unspecced.getSuggestedFeedsSkeleton", + "app.bsky.unspecced.getSuggestedStarterPacks", + "app.bsky.unspecced.getSuggestedStarterPacksSkeleton", + "app.bsky.unspecced.getSuggestedUsers", + "app.bsky.unspecced.getSuggestedUsersSkeleton", + "app.bsky.unspecced.getSuggestionsSkeleton", + "app.bsky.unspecced.getTaggedSuggestions", + "app.bsky.unspecced.getTrendingTopics", + "app.bsky.unspecced.getTrends", + "app.bsky.unspecced.getTrendsSkeleton", + "app.bsky.unspecced.searchActorsSkeleton", + "app.bsky.unspecced.searchPostsSkeleton", + "app.bsky.unspecced.searchStarterPacksSkeleton", + "app.bsky.video.getUploadLimits", + ], + }, + ], + }, + }, + }, + "AppBskyAuthManageFeedDeclarations": { + "lexicon": 1, + "id": "app.bsky.authManageFeedDeclarations", + "defs": { + "main": { + "type": "permission-set", + "title": "Manage Hosted Feeds", + "title:lang": {}, + "detail": "Configure feed generator declaration records.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "repo", + "action": [ + "create", + "update", + "delete", + ], + "collection": [ + "app.bsky.feed.generator", + ], + }, + ], + }, + }, + }, "AppBskyAgeassuranceBegin": { "lexicon": 1, "id": "app.bsky.ageassurance.begin", @@ -12729,6 +14554,7 @@ export const schemaDict = { "description": "The Age Assurance configuration for a specific region.", "required": [ "countryCode", + "minAccessAge", "rules", ], "properties": { @@ -12742,6 +14568,11 @@ export const schemaDict = { "description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country.", }, + "minAccessAge": { + "type": "integer", + "description": + "The minimum age (as a whole integer) required to use Bluesky in this region.", + }, "rules": { "type": "array", "description": @@ -13033,6 +14864,36 @@ export const schemaDict = { }, }, }, + "AppBskyAuthManageProfile": { + "lexicon": 1, + "id": "app.bsky.authManageProfile", + "defs": { + "main": { + "type": "permission-set", + "title": "Manage Bluesky Profile", + "title:lang": {}, + "detail": + "Update profile data, as well as status and public chat visibility.", + "detail:lang": {}, + "permissions": [ + { + "type": "permission", + "resource": "repo", + "action": [ + "create", + "update", + "delete", + ], + "collection": [ + "app.bsky.actor.profile", + "app.bsky.actor.status", + "app.bsky.notification.declaration", + ], + }, + ], + }, + }, + }, "AppBskyActorSearchActorsTypeahead": { "lexicon": 1, "id": "app.bsky.actor.searchActorsTypeahead", @@ -13332,6 +15193,10 @@ export const schemaDict = { "ref": "lex:app.bsky.actor.defs#profileAssociatedActivitySubscription", }, + "germ": { + "type": "ref", + "ref": "lex:app.bsky.actor.defs#profileAssociatedGerm", + }, }, }, "profileAssociatedChat": { @@ -13350,6 +15215,26 @@ export const schemaDict = { }, }, }, + "profileAssociatedGerm": { + "type": "object", + "required": [ + "showButtonTo", + "messageMeUrl", + ], + "properties": { + "messageMeUrl": { + "type": "string", + "format": "uri", + }, + "showButtonTo": { + "type": "string", + "knownValues": [ + "usersIFollow", + "everyone", + ], + }, + }, + }, "profileAssociatedActivitySubscription": { "type": "object", "required": [ @@ -13514,6 +15399,7 @@ export const schemaDict = { "lex:app.bsky.actor.defs#savedFeedsPref", "lex:app.bsky.actor.defs#savedFeedsPrefV2", "lex:app.bsky.actor.defs#personalDetailsPref", + "lex:app.bsky.actor.defs#declaredAgePref", "lex:app.bsky.actor.defs#feedViewPref", "lex:app.bsky.actor.defs#threadViewPref", "lex:app.bsky.actor.defs#interestsPref", @@ -13523,6 +15409,7 @@ export const schemaDict = { "lex:app.bsky.actor.defs#labelersPref", "lex:app.bsky.actor.defs#postInteractionSettingsPref", "lex:app.bsky.actor.defs#verificationPrefs", + "lex:app.bsky.actor.defs#liveEventPreferences", ], }, }, @@ -13644,6 +15531,28 @@ export const schemaDict = { }, }, }, + "declaredAgePref": { + "type": "object", + "description": + "Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration.", + "properties": { + "isOverAge13": { + "type": "boolean", + "description": + "Indicates if the user has declared that they are over 13 years of age.", + }, + "isOverAge16": { + "type": "boolean", + "description": + "Indicates if the user has declared that they are over 16 years of age.", + }, + "isOverAge18": { + "type": "boolean", + "description": + "Indicates if the user has declared that they are over 18 years of age.", + }, + }, + }, "feedViewPref": { "type": "object", "required": [ @@ -13916,6 +15825,25 @@ export const schemaDict = { }, }, }, + "liveEventPreferences": { + "type": "object", + "description": "Preferences for live events.", + "properties": { + "hiddenFeedIds": { + "description": + "A list of feed IDs that the user has hidden from live events.", + "type": "array", + "items": { + "type": "string", + }, + }, + "hideAllFeeds": { + "description": "Whether to hide all feeds from live events.", + "type": "boolean", + "default": false, + }, + }, + }, "postInteractionSettingsPref": { "type": "object", "description": @@ -13958,6 +15886,14 @@ export const schemaDict = { "record", ], "properties": { + "uri": { + "type": "string", + "format": "at-uri", + }, + "cid": { + "type": "string", + "format": "cid", + }, "status": { "type": "string", "description": "The status for the account.", @@ -13975,6 +15911,13 @@ export const schemaDict = { "lex:app.bsky.embed.external#view", ], }, + "labels": { + "type": "array", + "items": { + "type": "ref", + "ref": "lex:com.atproto.label.defs#label", + }, + }, "expiresAt": { "type": "string", "description": @@ -13986,6 +15929,11 @@ export const schemaDict = { "description": "True if the status is not expired, false if it is expired. Only present if expiration was set.", }, + "isDisabled": { + "type": "boolean", + "description": + "True if the user's go-live access has been disabled by a moderator, false otherwise.", + }, }, }, }, @@ -14088,6 +16036,10 @@ export const schemaDict = { }, "recId": { "type": "integer", + "description": "DEPRECATED: use recIdStr instead.", + }, + "recIdStr": { + "type": "string", "description": "Snowflake for this recommendation, use when submitting recommendation events.", }, @@ -15957,6 +17909,62 @@ export const schemaDict = { }, }, }, + "ChatBskyAuthFullChatClient": { + "lexicon": 1, + "id": "chat.bsky.authFullChatClient", + "defs": { + "main": { + "type": "permission-set", + "title": "Full Chat Client (All Conversations)", + "title:lang": {}, + "detail": + "Control of all chat conversations and configuration management.", + "detail:lang": { + "en": "All Chat Conversations", + }, + "permissions": [ + { + "type": "permission", + "resource": "rpc", + "inheritAud": true, + "lxm": [ + "chat.bsky.actor.deleteAccount", + "chat.bsky.actor.exportAccountData", + "chat.bsky.convo.acceptConvo", + "chat.bsky.convo.addReaction", + "chat.bsky.convo.deleteMessageForSelf", + "chat.bsky.convo.getConvo", + "chat.bsky.convo.getConvoAvailability", + "chat.bsky.convo.getConvoForMembers", + "chat.bsky.convo.getLog", + "chat.bsky.convo.getMessages", + "chat.bsky.convo.leaveConvo", + "chat.bsky.convo.listConvos", + "chat.bsky.convo.muteConvo", + "chat.bsky.convo.removeReaction", + "chat.bsky.convo.sendMessage", + "chat.bsky.convo.sendMessageBatch", + "chat.bsky.convo.unmuteConvo", + "chat.bsky.convo.updateAllRead", + "chat.bsky.convo.updateRead", + ], + }, + { + "type": "permission", + "resource": "repo", + "action": [ + "create", + "update", + "delete", + ], + "collection": [ + "chat.bsky.actor.declaration", + ], + }, + ], + }, + }, + }, "ChatBskyModerationGetActorMetadata": { "lexicon": 1, "id": "chat.bsky.moderation.getActorMetadata", @@ -23256,16 +25264,13 @@ export const schemaDict = { "type": "string", "knownValues": [ "!hide", - "!no-promote", "!warn", "!no-unauthenticated", - "dmca-violation", - "doxxing", "porn", "sexual", "nudity", - "nsfl", - "gore", + "graphic-media", + "bot", ], }, }, @@ -23786,7 +25791,16 @@ export const schemaDict = { "defs": { "main": { "type": "procedure", - "description": "Delete the current session. Requires auth.", + "description": + "Delete the current session. Requires auth using the 'refreshJwt' (not the 'accessJwt').", + "errors": [ + { + "name": "InvalidToken", + }, + { + "name": "ExpiredToken", + }, + ], }, }, }, @@ -24035,6 +26049,9 @@ export const schemaDict = { "type": "string", "format": "did", }, + "didDoc": { + "type": "unknown", + }, "email": { "type": "string", }, @@ -24044,9 +26061,6 @@ export const schemaDict = { "emailAuthFactor": { "type": "boolean", }, - "didDoc": { - "type": "unknown", - }, "active": { "type": "boolean", }, @@ -24102,6 +26116,15 @@ export const schemaDict = { "didDoc": { "type": "unknown", }, + "email": { + "type": "string", + }, + "emailConfirmed": { + "type": "boolean", + }, + "emailAuthFactor": { + "type": "boolean", + }, "active": { "type": "boolean", }, @@ -24122,6 +26145,12 @@ export const schemaDict = { { "name": "AccountTakedown", }, + { + "name": "InvalidToken", + }, + { + "name": "ExpiredToken", + }, ], }, }, @@ -26910,10 +28939,27 @@ export const ids = { ToolsOzoneModerationGetAccountTimeline: "tools.ozone.moderation.getAccountTimeline", ToolsOzoneModerationGetRepos: "tools.ozone.moderation.getRepos", + AppBskyDraftDefs: "app.bsky.draft.defs", + AppBskyDraftCreateDraft: "app.bsky.draft.createDraft", + AppBskyDraftUpdateDraft: "app.bsky.draft.updateDraft", + AppBskyDraftGetDrafts: "app.bsky.draft.getDrafts", + AppBskyDraftDeleteDraft: "app.bsky.draft.deleteDraft", + AppBskyAuthManageLabelerService: "app.bsky.authManageLabelerService", AppBskyVideoUploadVideo: "app.bsky.video.uploadVideo", AppBskyVideoDefs: "app.bsky.video.defs", AppBskyVideoGetJobStatus: "app.bsky.video.getJobStatus", AppBskyVideoGetUploadLimits: "app.bsky.video.getUploadLimits", + AppBskyContactDefs: "app.bsky.contact.defs", + AppBskyContactSendNotification: "app.bsky.contact.sendNotification", + AppBskyContactGetSyncStatus: "app.bsky.contact.getSyncStatus", + AppBskyContactStartPhoneVerification: + "app.bsky.contact.startPhoneVerification", + AppBskyContactGetMatches: "app.bsky.contact.getMatches", + AppBskyContactImportContacts: "app.bsky.contact.importContacts", + AppBskyContactDismissMatch: "app.bsky.contact.dismissMatch", + AppBskyContactRemoveData: "app.bsky.contact.removeData", + AppBskyContactVerifyPhone: "app.bsky.contact.verifyPhone", + AppBskyAuthManageNotifications: "app.bsky.authManageNotifications", AppBskyBookmarkDefs: "app.bsky.bookmark.defs", AppBskyBookmarkDeleteBookmark: "app.bsky.bookmark.deleteBookmark", AppBskyBookmarkGetBookmarks: "app.bsky.bookmark.getBookmarks", @@ -26924,6 +28970,8 @@ export const ids = { AppBskyEmbedRecordWithMedia: "app.bsky.embed.recordWithMedia", AppBskyEmbedVideo: "app.bsky.embed.video", AppBskyEmbedExternal: "app.bsky.embed.external", + AppBskyAuthDeleteContent: "app.bsky.authDeleteContent", + AppBskyAuthCreatePosts: "app.bsky.authCreatePosts", AppBskyNotificationDefs: "app.bsky.notification.defs", AppBskyNotificationRegisterPush: "app.bsky.notification.registerPush", AppBskyNotificationPutPreferences: "app.bsky.notification.putPreferences", @@ -26943,9 +28991,13 @@ export const ids = { "app.bsky.unspecced.getSuggestedFeedsSkeleton", AppBskyUnspeccedSearchStarterPacksSkeleton: "app.bsky.unspecced.searchStarterPacksSkeleton", + AppBskyUnspeccedGetSuggestedUsersForExplore: + "app.bsky.unspecced.getSuggestedUsersForExplore", AppBskyUnspeccedDefs: "app.bsky.unspecced.defs", AppBskyUnspeccedGetOnboardingSuggestedStarterPacksSkeleton: "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton", + AppBskyUnspeccedGetSuggestedUsersForExploreSkeleton: + "app.bsky.unspecced.getSuggestedUsersForExploreSkeleton", AppBskyUnspeccedGetSuggestedUsers: "app.bsky.unspecced.getSuggestedUsers", AppBskyUnspeccedGetPostThreadOtherV2: "app.bsky.unspecced.getPostThreadOtherV2", @@ -26964,14 +29016,26 @@ export const ids = { AppBskyUnspeccedGetSuggestionsSkeleton: "app.bsky.unspecced.getSuggestionsSkeleton", AppBskyUnspeccedSearchPostsSkeleton: "app.bsky.unspecced.searchPostsSkeleton", + AppBskyUnspeccedGetOnboardingSuggestedUsersSkeleton: + "app.bsky.unspecced.getOnboardingSuggestedUsersSkeleton", + AppBskyUnspeccedGetSuggestedUsersForDiscoverSkeleton: + "app.bsky.unspecced.getSuggestedUsersForDiscoverSkeleton", + AppBskyUnspeccedGetSuggestedUsersForDiscover: + "app.bsky.unspecced.getSuggestedUsersForDiscover", AppBskyUnspeccedGetAgeAssuranceState: "app.bsky.unspecced.getAgeAssuranceState", AppBskyUnspeccedGetPopularFeedGenerators: "app.bsky.unspecced.getPopularFeedGenerators", + AppBskyUnspeccedGetSuggestedOnboardingUsers: + "app.bsky.unspecced.getSuggestedOnboardingUsers", + AppBskyUnspeccedGetSuggestedUsersForSeeMore: + "app.bsky.unspecced.getSuggestedUsersForSeeMore", AppBskyUnspeccedInitAgeAssurance: "app.bsky.unspecced.initAgeAssurance", AppBskyUnspeccedGetTrendingTopics: "app.bsky.unspecced.getTrendingTopics", AppBskyUnspeccedGetTaggedSuggestions: "app.bsky.unspecced.getTaggedSuggestions", + AppBskyUnspeccedGetSuggestedUsersForSeeMoreSkeleton: + "app.bsky.unspecced.getSuggestedUsersForSeeMoreSkeleton", AppBskyUnspeccedGetSuggestedFeeds: "app.bsky.unspecced.getSuggestedFeeds", AppBskyUnspeccedGetTrendsSkeleton: "app.bsky.unspecced.getTrendsSkeleton", AppBskyUnspeccedGetConfig: "app.bsky.unspecced.getConfig", @@ -27008,6 +29072,8 @@ export const ids = { AppBskyGraphGetRelationships: "app.bsky.graph.getRelationships", AppBskyGraphUnmuteActor: "app.bsky.graph.unmuteActor", AppBskyGraphGetList: "app.bsky.graph.getList", + AppBskyAuthFullApp: "app.bsky.authFullApp", + AppBskyAuthManageModeration: "app.bsky.authManageModeration", AppBskyFeedGenerator: "app.bsky.feed.generator", AppBskyFeedSendInteractions: "app.bsky.feed.sendInteractions", AppBskyFeedDefs: "app.bsky.feed.defs", @@ -27034,10 +29100,13 @@ export const ids = { AppBskyFeedGetActorFeeds: "app.bsky.feed.getActorFeeds", AppBskyFeedPost: "app.bsky.feed.post", AppBskyRichtextFacet: "app.bsky.richtext.facet", + AppBskyAuthViewAll: "app.bsky.authViewAll", + AppBskyAuthManageFeedDeclarations: "app.bsky.authManageFeedDeclarations", AppBskyAgeassuranceBegin: "app.bsky.ageassurance.begin", AppBskyAgeassuranceDefs: "app.bsky.ageassurance.defs", AppBskyAgeassuranceGetState: "app.bsky.ageassurance.getState", AppBskyAgeassuranceGetConfig: "app.bsky.ageassurance.getConfig", + AppBskyAuthManageProfile: "app.bsky.authManageProfile", AppBskyActorSearchActorsTypeahead: "app.bsky.actor.searchActorsTypeahead", AppBskyActorDefs: "app.bsky.actor.defs", AppBskyActorPutPreferences: "app.bsky.actor.putPreferences", @@ -27073,6 +29142,7 @@ export const ids = { ChatBskyActorDeclaration: "chat.bsky.actor.declaration", ChatBskyActorExportAccountData: "chat.bsky.actor.exportAccountData", ChatBskyActorDeleteAccount: "chat.bsky.actor.deleteAccount", + ChatBskyAuthFullChatClient: "chat.bsky.authFullChatClient", ChatBskyModerationGetActorMetadata: "chat.bsky.moderation.getActorMetadata", ChatBskyModerationGetMessageContext: "chat.bsky.moderation.getMessageContext", ChatBskyModerationUpdateActorAccess: "chat.bsky.moderation.updateActorAccess", diff --git a/lex/types/app/bsky/actor/defs.ts b/lex/types/app/bsky/actor/defs.ts index efeb816..8b04eff 100644 --- a/lex/types/app/bsky/actor/defs.ts +++ b/lex/types/app/bsky/actor/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; import type * as AppBskyGraphDefs from "../graph/defs.ts"; @@ -33,11 +34,13 @@ export interface ProfileViewBasic { const hashProfileViewBasic = "profileViewBasic"; -export function isProfileViewBasic(v: V) { +export function isProfileViewBasic(v: V): v is ProfileViewBasic & V { return is$typed(v, id, hashProfileViewBasic); } -export function validateProfileViewBasic(v: V) { +export function validateProfileViewBasic( + v: V, +): ValidationResult { return validate(v, id, hashProfileViewBasic); } @@ -62,11 +65,13 @@ export interface ProfileView { const hashProfileView = "profileView"; -export function isProfileView(v: V) { +export function isProfileView(v: V): v is ProfileView & V { return is$typed(v, id, hashProfileView); } -export function validateProfileView(v: V) { +export function validateProfileView( + v: V, +): ValidationResult { return validate(v, id, hashProfileView); } @@ -98,11 +103,13 @@ export interface ProfileViewDetailed { const hashProfileViewDetailed = "profileViewDetailed"; -export function isProfileViewDetailed(v: V) { +export function isProfileViewDetailed(v: V): v is ProfileViewDetailed & V { return is$typed(v, id, hashProfileViewDetailed); } -export function validateProfileViewDetailed(v: V) { +export function validateProfileViewDetailed( + v: V, +): ValidationResult { return validate(v, id, hashProfileViewDetailed); } @@ -114,15 +121,18 @@ export interface ProfileAssociated { labeler?: boolean; chat?: ProfileAssociatedChat; activitySubscription?: ProfileAssociatedActivitySubscription; + germ?: ProfileAssociatedGerm; } const hashProfileAssociated = "profileAssociated"; -export function isProfileAssociated(v: V) { +export function isProfileAssociated(v: V): v is ProfileAssociated & V { return is$typed(v, id, hashProfileAssociated); } -export function validateProfileAssociated(v: V) { +export function validateProfileAssociated( + v: V, +): ValidationResult { return validate(v, id, hashProfileAssociated); } @@ -137,14 +147,41 @@ export interface ProfileAssociatedChat { const hashProfileAssociatedChat = "profileAssociatedChat"; -export function isProfileAssociatedChat(v: V) { +export function isProfileAssociatedChat( + v: V, +): v is ProfileAssociatedChat & V { return is$typed(v, id, hashProfileAssociatedChat); } -export function validateProfileAssociatedChat(v: V) { +export function validateProfileAssociatedChat( + v: V, +): ValidationResult { return validate(v, id, hashProfileAssociatedChat); } +export interface ProfileAssociatedGerm { + $type?: "app.bsky.actor.defs#profileAssociatedGerm"; + messageMeUrl: string; + showButtonTo: + | "usersIFollow" + | "everyone" + | (string & globalThis.Record); +} + +const hashProfileAssociatedGerm = "profileAssociatedGerm"; + +export function isProfileAssociatedGerm( + v: V, +): v is ProfileAssociatedGerm & V { + return is$typed(v, id, hashProfileAssociatedGerm); +} + +export function validateProfileAssociatedGerm( + v: V, +): ValidationResult { + return validate(v, id, hashProfileAssociatedGerm); +} + export interface ProfileAssociatedActivitySubscription { $type?: "app.bsky.actor.defs#profileAssociatedActivitySubscription"; allowSubscriptions: @@ -157,11 +194,15 @@ export interface ProfileAssociatedActivitySubscription { const hashProfileAssociatedActivitySubscription = "profileAssociatedActivitySubscription"; -export function isProfileAssociatedActivitySubscription(v: V) { +export function isProfileAssociatedActivitySubscription( + v: V, +): v is ProfileAssociatedActivitySubscription & V { return is$typed(v, id, hashProfileAssociatedActivitySubscription); } -export function validateProfileAssociatedActivitySubscription(v: V) { +export function validateProfileAssociatedActivitySubscription( + v: V, +): ValidationResult { return validate( v, id, @@ -185,11 +226,13 @@ export interface ViewerState { const hashViewerState = "viewerState"; -export function isViewerState(v: V) { +export function isViewerState(v: V): v is ViewerState & V { return is$typed(v, id, hashViewerState); } -export function validateViewerState(v: V) { +export function validateViewerState( + v: V, +): ValidationResult { return validate(v, id, hashViewerState); } @@ -202,11 +245,13 @@ export interface KnownFollowers { const hashKnownFollowers = "knownFollowers"; -export function isKnownFollowers(v: V) { +export function isKnownFollowers(v: V): v is KnownFollowers & V { return is$typed(v, id, hashKnownFollowers); } -export function validateKnownFollowers(v: V) { +export function validateKnownFollowers( + v: V, +): ValidationResult { return validate(v, id, hashKnownFollowers); } @@ -231,11 +276,13 @@ export interface VerificationState { const hashVerificationState = "verificationState"; -export function isVerificationState(v: V) { +export function isVerificationState(v: V): v is VerificationState & V { return is$typed(v, id, hashVerificationState); } -export function validateVerificationState(v: V) { +export function validateVerificationState( + v: V, +): ValidationResult { return validate(v, id, hashVerificationState); } @@ -254,11 +301,13 @@ export interface VerificationView { const hashVerificationView = "verificationView"; -export function isVerificationView(v: V) { +export function isVerificationView(v: V): v is VerificationView & V { return is$typed(v, id, hashVerificationView); } -export function validateVerificationView(v: V) { +export function validateVerificationView( + v: V, +): ValidationResult { return validate(v, id, hashVerificationView); } @@ -268,6 +317,7 @@ export type Preferences = ( | $Typed | $Typed | $Typed + | $Typed | $Typed | $Typed | $Typed @@ -277,6 +327,7 @@ export type Preferences = ( | $Typed | $Typed | $Typed + | $Typed | { $type: string } )[]; @@ -287,11 +338,13 @@ export interface AdultContentPref { const hashAdultContentPref = "adultContentPref"; -export function isAdultContentPref(v: V) { +export function isAdultContentPref(v: V): v is AdultContentPref & V { return is$typed(v, id, hashAdultContentPref); } -export function validateAdultContentPref(v: V) { +export function validateAdultContentPref( + v: V, +): ValidationResult { return validate(v, id, hashAdultContentPref); } @@ -310,11 +363,13 @@ export interface ContentLabelPref { const hashContentLabelPref = "contentLabelPref"; -export function isContentLabelPref(v: V) { +export function isContentLabelPref(v: V): v is ContentLabelPref & V { return is$typed(v, id, hashContentLabelPref); } -export function validateContentLabelPref(v: V) { +export function validateContentLabelPref( + v: V, +): ValidationResult { return validate(v, id, hashContentLabelPref); } @@ -332,11 +387,11 @@ export interface SavedFeed { const hashSavedFeed = "savedFeed"; -export function isSavedFeed(v: V) { +export function isSavedFeed(v: V): v is SavedFeed & V { return is$typed(v, id, hashSavedFeed); } -export function validateSavedFeed(v: V) { +export function validateSavedFeed(v: V): ValidationResult { return validate(v, id, hashSavedFeed); } @@ -347,11 +402,13 @@ export interface SavedFeedsPrefV2 { const hashSavedFeedsPrefV2 = "savedFeedsPrefV2"; -export function isSavedFeedsPrefV2(v: V) { +export function isSavedFeedsPrefV2(v: V): v is SavedFeedsPrefV2 & V { return is$typed(v, id, hashSavedFeedsPrefV2); } -export function validateSavedFeedsPrefV2(v: V) { +export function validateSavedFeedsPrefV2( + v: V, +): ValidationResult { return validate(v, id, hashSavedFeedsPrefV2); } @@ -364,11 +421,13 @@ export interface SavedFeedsPref { const hashSavedFeedsPref = "savedFeedsPref"; -export function isSavedFeedsPref(v: V) { +export function isSavedFeedsPref(v: V): v is SavedFeedsPref & V { return is$typed(v, id, hashSavedFeedsPref); } -export function validateSavedFeedsPref(v: V) { +export function validateSavedFeedsPref( + v: V, +): ValidationResult { return validate(v, id, hashSavedFeedsPref); } @@ -380,14 +439,39 @@ export interface PersonalDetailsPref { const hashPersonalDetailsPref = "personalDetailsPref"; -export function isPersonalDetailsPref(v: V) { +export function isPersonalDetailsPref(v: V): v is PersonalDetailsPref & V { return is$typed(v, id, hashPersonalDetailsPref); } -export function validatePersonalDetailsPref(v: V) { +export function validatePersonalDetailsPref( + v: V, +): ValidationResult { return validate(v, id, hashPersonalDetailsPref); } +/** Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration. */ +export interface DeclaredAgePref { + $type?: "app.bsky.actor.defs#declaredAgePref"; + /** Indicates if the user has declared that they are over 13 years of age. */ + isOverAge13?: boolean; + /** Indicates if the user has declared that they are over 16 years of age. */ + isOverAge16?: boolean; + /** Indicates if the user has declared that they are over 18 years of age. */ + isOverAge18?: boolean; +} + +const hashDeclaredAgePref = "declaredAgePref"; + +export function isDeclaredAgePref(v: V): v is DeclaredAgePref & V { + return is$typed(v, id, hashDeclaredAgePref); +} + +export function validateDeclaredAgePref( + v: V, +): ValidationResult { + return validate(v, id, hashDeclaredAgePref); +} + export interface FeedViewPref { $type?: "app.bsky.actor.defs#feedViewPref"; /** The URI of the feed, or an identifier which describes the feed. */ @@ -406,11 +490,13 @@ export interface FeedViewPref { const hashFeedViewPref = "feedViewPref"; -export function isFeedViewPref(v: V) { +export function isFeedViewPref(v: V): v is FeedViewPref & V { return is$typed(v, id, hashFeedViewPref); } -export function validateFeedViewPref(v: V) { +export function validateFeedViewPref( + v: V, +): ValidationResult { return validate(v, id, hashFeedViewPref); } @@ -428,11 +514,13 @@ export interface ThreadViewPref { const hashThreadViewPref = "threadViewPref"; -export function isThreadViewPref(v: V) { +export function isThreadViewPref(v: V): v is ThreadViewPref & V { return is$typed(v, id, hashThreadViewPref); } -export function validateThreadViewPref(v: V) { +export function validateThreadViewPref( + v: V, +): ValidationResult { return validate(v, id, hashThreadViewPref); } @@ -444,11 +532,13 @@ export interface InterestsPref { const hashInterestsPref = "interestsPref"; -export function isInterestsPref(v: V) { +export function isInterestsPref(v: V): v is InterestsPref & V { return is$typed(v, id, hashInterestsPref); } -export function validateInterestsPref(v: V) { +export function validateInterestsPref( + v: V, +): ValidationResult { return validate(v, id, hashInterestsPref); } @@ -476,11 +566,11 @@ export interface MutedWord { const hashMutedWord = "mutedWord"; -export function isMutedWord(v: V) { +export function isMutedWord(v: V): v is MutedWord & V { return is$typed(v, id, hashMutedWord); } -export function validateMutedWord(v: V) { +export function validateMutedWord(v: V): ValidationResult { return validate(v, id, hashMutedWord); } @@ -492,11 +582,13 @@ export interface MutedWordsPref { const hashMutedWordsPref = "mutedWordsPref"; -export function isMutedWordsPref(v: V) { +export function isMutedWordsPref(v: V): v is MutedWordsPref & V { return is$typed(v, id, hashMutedWordsPref); } -export function validateMutedWordsPref(v: V) { +export function validateMutedWordsPref( + v: V, +): ValidationResult { return validate(v, id, hashMutedWordsPref); } @@ -508,11 +600,13 @@ export interface HiddenPostsPref { const hashHiddenPostsPref = "hiddenPostsPref"; -export function isHiddenPostsPref(v: V) { +export function isHiddenPostsPref(v: V): v is HiddenPostsPref & V { return is$typed(v, id, hashHiddenPostsPref); } -export function validateHiddenPostsPref(v: V) { +export function validateHiddenPostsPref( + v: V, +): ValidationResult { return validate(v, id, hashHiddenPostsPref); } @@ -523,11 +617,13 @@ export interface LabelersPref { const hashLabelersPref = "labelersPref"; -export function isLabelersPref(v: V) { +export function isLabelersPref(v: V): v is LabelersPref & V { return is$typed(v, id, hashLabelersPref); } -export function validateLabelersPref(v: V) { +export function validateLabelersPref( + v: V, +): ValidationResult { return validate(v, id, hashLabelersPref); } @@ -538,11 +634,13 @@ export interface LabelerPrefItem { const hashLabelerPrefItem = "labelerPrefItem"; -export function isLabelerPrefItem(v: V) { +export function isLabelerPrefItem(v: V): v is LabelerPrefItem & V { return is$typed(v, id, hashLabelerPrefItem); } -export function validateLabelerPrefItem(v: V) { +export function validateLabelerPrefItem( + v: V, +): ValidationResult { return validate(v, id, hashLabelerPrefItem); } @@ -558,11 +656,13 @@ export interface BskyAppStatePref { const hashBskyAppStatePref = "bskyAppStatePref"; -export function isBskyAppStatePref(v: V) { +export function isBskyAppStatePref(v: V): v is BskyAppStatePref & V { return is$typed(v, id, hashBskyAppStatePref); } -export function validateBskyAppStatePref(v: V) { +export function validateBskyAppStatePref( + v: V, +): ValidationResult { return validate(v, id, hashBskyAppStatePref); } @@ -574,11 +674,13 @@ export interface BskyAppProgressGuide { const hashBskyAppProgressGuide = "bskyAppProgressGuide"; -export function isBskyAppProgressGuide(v: V) { +export function isBskyAppProgressGuide(v: V): v is BskyAppProgressGuide & V { return is$typed(v, id, hashBskyAppProgressGuide); } -export function validateBskyAppProgressGuide(v: V) { +export function validateBskyAppProgressGuide( + v: V, +): ValidationResult { return validate(v, id, hashBskyAppProgressGuide); } @@ -595,11 +697,11 @@ export interface Nux { const hashNux = "nux"; -export function isNux(v: V) { +export function isNux(v: V): v is Nux & V { return is$typed(v, id, hashNux); } -export function validateNux(v: V) { +export function validateNux(v: V): ValidationResult { return validate(v, id, hashNux); } @@ -612,14 +714,37 @@ export interface VerificationPrefs { const hashVerificationPrefs = "verificationPrefs"; -export function isVerificationPrefs(v: V) { +export function isVerificationPrefs(v: V): v is VerificationPrefs & V { return is$typed(v, id, hashVerificationPrefs); } -export function validateVerificationPrefs(v: V) { +export function validateVerificationPrefs( + v: V, +): ValidationResult { return validate(v, id, hashVerificationPrefs); } +/** Preferences for live events. */ +export interface LiveEventPreferences { + $type?: "app.bsky.actor.defs#liveEventPreferences"; + /** A list of feed IDs that the user has hidden from live events. */ + hiddenFeedIds?: (string)[]; + /** Whether to hide all feeds from live events. */ + hideAllFeeds: boolean; +} + +const hashLiveEventPreferences = "liveEventPreferences"; + +export function isLiveEventPreferences(v: V): v is LiveEventPreferences & V { + return is$typed(v, id, hashLiveEventPreferences); +} + +export function validateLiveEventPreferences( + v: V, +): ValidationResult { + return validate(v, id, hashLiveEventPreferences); +} + /** 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. */ export interface PostInteractionSettingsPref { $type?: "app.bsky.actor.defs#postInteractionSettingsPref"; @@ -638,11 +763,15 @@ export interface PostInteractionSettingsPref { const hashPostInteractionSettingsPref = "postInteractionSettingsPref"; -export function isPostInteractionSettingsPref(v: V) { +export function isPostInteractionSettingsPref( + v: V, +): v is PostInteractionSettingsPref & V { return is$typed(v, id, hashPostInteractionSettingsPref); } -export function validatePostInteractionSettingsPref(v: V) { +export function validatePostInteractionSettingsPref( + v: V, +): ValidationResult { return validate( v, id, @@ -652,24 +781,29 @@ export function validatePostInteractionSettingsPref(v: V) { export interface StatusView { $type?: "app.bsky.actor.defs#statusView"; + uri?: string; + cid?: string; /** The status for the account. */ status: | "app.bsky.actor.status#live" | (string & globalThis.Record); record: { [_ in string]: unknown }; embed?: $Typed | { $type: string }; + labels?: (ComAtprotoLabelDefs.Label)[]; /** The date when this status will expire. The application might choose to no longer return the status after expiration. */ expiresAt?: string; /** True if the status is not expired, false if it is expired. Only present if expiration was set. */ isActive?: boolean; + /** True if the user's go-live access has been disabled by a moderator, false otherwise. */ + isDisabled?: boolean; } const hashStatusView = "statusView"; -export function isStatusView(v: V) { +export function isStatusView(v: V): v is StatusView & V { return is$typed(v, id, hashStatusView); } -export function validateStatusView(v: V) { +export function validateStatusView(v: V): ValidationResult { return validate(v, id, hashStatusView); } diff --git a/lex/types/app/bsky/actor/getSuggestions.ts b/lex/types/app/bsky/actor/getSuggestions.ts index cc816c4..7c7c592 100644 --- a/lex/types/app/bsky/actor/getSuggestions.ts +++ b/lex/types/app/bsky/actor/getSuggestions.ts @@ -12,8 +12,10 @@ export type InputSchema = undefined; export interface OutputSchema { cursor?: string; actors: (AppBskyActorDefs.ProfileView)[]; - /** Snowflake for this recommendation, use when submitting recommendation events. */ + /** DEPRECATED: use recIdStr instead. */ recId?: number; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; } export type HandlerInput = void; diff --git a/lex/types/app/bsky/actor/profile.ts b/lex/types/app/bsky/actor/profile.ts index 874b304..c3da286 100644 --- a/lex/types/app/bsky/actor/profile.ts +++ b/lex/types/app/bsky/actor/profile.ts @@ -3,6 +3,7 @@ */ import type { BlobRef } from "@atp/lexicon"; import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; @@ -31,11 +32,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/actor/status.ts b/lex/types/app/bsky/actor/status.ts index d45238f..099bfe6 100644 --- a/lex/types/app/bsky/actor/status.ts +++ b/lex/types/app/bsky/actor/status.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyEmbedExternal from "../embed/external.ts"; @@ -23,15 +24,15 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } export type Main = Record; /** Advertises an account as currently offering live content. */ -export const LIVE = `${id}#live`; +export const LIVE: string = `${id}#live`; diff --git a/lex/types/app/bsky/ageassurance/defs.ts b/lex/types/app/bsky/ageassurance/defs.ts index 169529b..0fa0b3b 100644 --- a/lex/types/app/bsky/ageassurance/defs.ts +++ b/lex/types/app/bsky/ageassurance/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -33,11 +34,11 @@ export interface State { const hashState = "state"; -export function isState(v: V) { +export function isState(v: V): v is State & V { return is$typed(v, id, hashState); } -export function validateState(v: V) { +export function validateState(v: V): ValidationResult { return validate(v, id, hashState); } @@ -50,11 +51,13 @@ export interface StateMetadata { const hashStateMetadata = "stateMetadata"; -export function isStateMetadata(v: V) { +export function isStateMetadata(v: V): v is StateMetadata & V { return is$typed(v, id, hashStateMetadata); } -export function validateStateMetadata(v: V) { +export function validateStateMetadata( + v: V, +): ValidationResult { return validate(v, id, hashStateMetadata); } @@ -66,11 +69,11 @@ export interface Config { const hashConfig = "config"; -export function isConfig(v: V) { +export function isConfig(v: V): v is Config & V { return is$typed(v, id, hashConfig); } -export function validateConfig(v: V) { +export function validateConfig(v: V): ValidationResult { return validate(v, id, hashConfig); } @@ -81,6 +84,8 @@ export interface ConfigRegion { countryCode: string; /** The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country. */ regionCode?: string; + /** The minimum age (as a whole integer) required to use Bluesky in this region. */ + minAccessAge: number; /** 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. */ rules: ( | $Typed @@ -96,11 +101,13 @@ export interface ConfigRegion { const hashConfigRegion = "configRegion"; -export function isConfigRegion(v: V) { +export function isConfigRegion(v: V): v is ConfigRegion & V { return is$typed(v, id, hashConfigRegion); } -export function validateConfigRegion(v: V) { +export function validateConfigRegion( + v: V, +): ValidationResult { return validate(v, id, hashConfigRegion); } @@ -112,11 +119,15 @@ export interface ConfigRegionRuleDefault { const hashConfigRegionRuleDefault = "configRegionRuleDefault"; -export function isConfigRegionRuleDefault(v: V) { +export function isConfigRegionRuleDefault( + v: V, +): v is ConfigRegionRuleDefault & V { return is$typed(v, id, hashConfigRegionRuleDefault); } -export function validateConfigRegionRuleDefault(v: V) { +export function validateConfigRegionRuleDefault( + v: V, +): ValidationResult { return validate( v, id, @@ -135,11 +146,15 @@ export interface ConfigRegionRuleIfDeclaredOverAge { const hashConfigRegionRuleIfDeclaredOverAge = "configRegionRuleIfDeclaredOverAge"; -export function isConfigRegionRuleIfDeclaredOverAge(v: V) { +export function isConfigRegionRuleIfDeclaredOverAge( + v: V, +): v is ConfigRegionRuleIfDeclaredOverAge & V { return is$typed(v, id, hashConfigRegionRuleIfDeclaredOverAge); } -export function validateConfigRegionRuleIfDeclaredOverAge(v: V) { +export function validateConfigRegionRuleIfDeclaredOverAge( + v: V, +): ValidationResult { return validate( v, id, @@ -158,11 +173,15 @@ export interface ConfigRegionRuleIfDeclaredUnderAge { const hashConfigRegionRuleIfDeclaredUnderAge = "configRegionRuleIfDeclaredUnderAge"; -export function isConfigRegionRuleIfDeclaredUnderAge(v: V) { +export function isConfigRegionRuleIfDeclaredUnderAge( + v: V, +): v is ConfigRegionRuleIfDeclaredUnderAge & V { return is$typed(v, id, hashConfigRegionRuleIfDeclaredUnderAge); } -export function validateConfigRegionRuleIfDeclaredUnderAge(v: V) { +export function validateConfigRegionRuleIfDeclaredUnderAge( + v: V, +): ValidationResult { return validate( v, id, @@ -180,11 +199,15 @@ export interface ConfigRegionRuleIfAssuredOverAge { const hashConfigRegionRuleIfAssuredOverAge = "configRegionRuleIfAssuredOverAge"; -export function isConfigRegionRuleIfAssuredOverAge(v: V) { +export function isConfigRegionRuleIfAssuredOverAge( + v: V, +): v is ConfigRegionRuleIfAssuredOverAge & V { return is$typed(v, id, hashConfigRegionRuleIfAssuredOverAge); } -export function validateConfigRegionRuleIfAssuredOverAge(v: V) { +export function validateConfigRegionRuleIfAssuredOverAge( + v: V, +): ValidationResult { return validate( v, id, @@ -203,11 +226,15 @@ export interface ConfigRegionRuleIfAssuredUnderAge { const hashConfigRegionRuleIfAssuredUnderAge = "configRegionRuleIfAssuredUnderAge"; -export function isConfigRegionRuleIfAssuredUnderAge(v: V) { +export function isConfigRegionRuleIfAssuredUnderAge( + v: V, +): v is ConfigRegionRuleIfAssuredUnderAge & V { return is$typed(v, id, hashConfigRegionRuleIfAssuredUnderAge); } -export function validateConfigRegionRuleIfAssuredUnderAge(v: V) { +export function validateConfigRegionRuleIfAssuredUnderAge( + v: V, +): ValidationResult { return validate( v, id, @@ -226,11 +253,15 @@ export interface ConfigRegionRuleIfAccountNewerThan { const hashConfigRegionRuleIfAccountNewerThan = "configRegionRuleIfAccountNewerThan"; -export function isConfigRegionRuleIfAccountNewerThan(v: V) { +export function isConfigRegionRuleIfAccountNewerThan( + v: V, +): v is ConfigRegionRuleIfAccountNewerThan & V { return is$typed(v, id, hashConfigRegionRuleIfAccountNewerThan); } -export function validateConfigRegionRuleIfAccountNewerThan(v: V) { +export function validateConfigRegionRuleIfAccountNewerThan( + v: V, +): ValidationResult { return validate( v, id, @@ -249,11 +280,15 @@ export interface ConfigRegionRuleIfAccountOlderThan { const hashConfigRegionRuleIfAccountOlderThan = "configRegionRuleIfAccountOlderThan"; -export function isConfigRegionRuleIfAccountOlderThan(v: V) { +export function isConfigRegionRuleIfAccountOlderThan( + v: V, +): v is ConfigRegionRuleIfAccountOlderThan & V { return is$typed(v, id, hashConfigRegionRuleIfAccountOlderThan); } -export function validateConfigRegionRuleIfAccountOlderThan(v: V) { +export function validateConfigRegionRuleIfAccountOlderThan( + v: V, +): ValidationResult { return validate( v, id, @@ -300,10 +335,10 @@ export interface Event { const hashEvent = "event"; -export function isEvent(v: V) { +export function isEvent(v: V): v is Event & V { return is$typed(v, id, hashEvent); } -export function validateEvent(v: V) { +export function validateEvent(v: V): ValidationResult { return validate(v, id, hashEvent); } diff --git a/lex/types/app/bsky/authCreatePosts.ts b/lex/types/app/bsky/authCreatePosts.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authCreatePosts.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authDeleteContent.ts b/lex/types/app/bsky/authDeleteContent.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authDeleteContent.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authFullApp.ts b/lex/types/app/bsky/authFullApp.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authFullApp.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authManageFeedDeclarations.ts b/lex/types/app/bsky/authManageFeedDeclarations.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authManageFeedDeclarations.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authManageLabelerService.ts b/lex/types/app/bsky/authManageLabelerService.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authManageLabelerService.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authManageModeration.ts b/lex/types/app/bsky/authManageModeration.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authManageModeration.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authManageNotifications.ts b/lex/types/app/bsky/authManageNotifications.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authManageNotifications.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authManageProfile.ts b/lex/types/app/bsky/authManageProfile.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authManageProfile.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/authViewAll.ts b/lex/types/app/bsky/authViewAll.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/app/bsky/authViewAll.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/app/bsky/bookmark/defs.ts b/lex/types/app/bsky/bookmark/defs.ts index a8a50f4..5a68ab1 100644 --- a/lex/types/app/bsky/bookmark/defs.ts +++ b/lex/types/app/bsky/bookmark/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; import type * as AppBskyFeedDefs from "../feed/defs.ts"; @@ -17,11 +18,11 @@ export interface Bookmark { const hashBookmark = "bookmark"; -export function isBookmark(v: V) { +export function isBookmark(v: V): v is Bookmark & V { return is$typed(v, id, hashBookmark); } -export function validateBookmark(v: V) { +export function validateBookmark(v: V): ValidationResult { return validate(v, id, hashBookmark); } @@ -38,10 +39,12 @@ export interface BookmarkView { const hashBookmarkView = "bookmarkView"; -export function isBookmarkView(v: V) { +export function isBookmarkView(v: V): v is BookmarkView & V { return is$typed(v, id, hashBookmarkView); } -export function validateBookmarkView(v: V) { +export function validateBookmarkView( + v: V, +): ValidationResult { return validate(v, id, hashBookmarkView); } diff --git a/lex/types/app/bsky/contact/defs.ts b/lex/types/app/bsky/contact/defs.ts new file mode 100644 index 0000000..475efbf --- /dev/null +++ b/lex/types/app/bsky/contact/defs.ts @@ -0,0 +1,69 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; +import { is$typed as _is$typed } from "../../../../util.ts"; +import type * as AppBskyActorDefs from "../actor/defs.ts"; + +const is$typed = _is$typed, validate = _validate; +const id = "app.bsky.contact.defs"; + +/** Associates a profile with the positional index of the contact import input in the call to `app.bsky.contact.importContacts`, so clients can know which phone caused a particular match. */ +export interface MatchAndContactIndex { + $type?: "app.bsky.contact.defs#matchAndContactIndex"; + match: AppBskyActorDefs.ProfileView; + /** The index of this match in the import contact input. */ + contactIndex: number; +} + +const hashMatchAndContactIndex = "matchAndContactIndex"; + +export function isMatchAndContactIndex(v: V): v is MatchAndContactIndex & V { + return is$typed(v, id, hashMatchAndContactIndex); +} + +export function validateMatchAndContactIndex( + v: V, +): ValidationResult { + return validate(v, id, hashMatchAndContactIndex); +} + +export interface SyncStatus { + $type?: "app.bsky.contact.defs#syncStatus"; + /** Last date when contacts where imported. */ + syncedAt: string; + /** Number of existing contact matches resulting of the user imports and of their imported contacts having imported the user. Matches stop being counted when the user either follows the matched contact or dismisses the match. */ + matchesCount: number; +} + +const hashSyncStatus = "syncStatus"; + +export function isSyncStatus(v: V): v is SyncStatus & V { + return is$typed(v, id, hashSyncStatus); +} + +export function validateSyncStatus(v: V): ValidationResult { + return validate(v, id, hashSyncStatus); +} + +/** A stash object to be sent via bsync representing a notification to be created. */ +export interface Notification { + $type?: "app.bsky.contact.defs#notification"; + /** The DID of who this notification comes from. */ + from: string; + /** The DID of who this notification should go to. */ + to: string; +} + +const hashNotification = "notification"; + +export function isNotification(v: V): v is Notification & V { + return is$typed(v, id, hashNotification); +} + +export function validateNotification( + v: V, +): ValidationResult { + return validate(v, id, hashNotification); +} diff --git a/lex/types/app/bsky/contact/dismissMatch.ts b/lex/types/app/bsky/contact/dismissMatch.ts new file mode 100644 index 0000000..a266a49 --- /dev/null +++ b/lex/types/app/bsky/contact/dismissMatch.ts @@ -0,0 +1,30 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = globalThis.Record; + +export interface InputSchema { + /** The subject's DID to dismiss the match with. */ + subject: string; +} + +export type OutputSchema = globalThis.Record; + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: "InvalidDid" | "InternalError"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/contact/getMatches.ts b/lex/types/app/bsky/contact/getMatches.ts new file mode 100644 index 0000000..baabcfb --- /dev/null +++ b/lex/types/app/bsky/contact/getMatches.ts @@ -0,0 +1,31 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyActorDefs from "../actor/defs.ts"; + +export type QueryParams = { + limit: number; + cursor?: string; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + cursor?: string; + matches: (AppBskyActorDefs.ProfileView)[]; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: "InvalidDid" | "InvalidLimit" | "InvalidCursor" | "InternalError"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/contact/getSyncStatus.ts b/lex/types/app/bsky/contact/getSyncStatus.ts new file mode 100644 index 0000000..03b1ac6 --- /dev/null +++ b/lex/types/app/bsky/contact/getSyncStatus.ts @@ -0,0 +1,27 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyContactDefs from "./defs.ts"; + +export type QueryParams = globalThis.Record; +export type InputSchema = undefined; + +export interface OutputSchema { + syncStatus?: AppBskyContactDefs.SyncStatus; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: "InvalidDid" | "InternalError"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/contact/importContacts.ts b/lex/types/app/bsky/contact/importContacts.ts new file mode 100644 index 0000000..d2ade81 --- /dev/null +++ b/lex/types/app/bsky/contact/importContacts.ts @@ -0,0 +1,42 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyContactDefs from "./defs.ts"; + +export type QueryParams = globalThis.Record; + +export interface InputSchema { + /** JWT to authenticate the call. Use the JWT received as a response to the call to `app.bsky.contact.verifyPhone`. */ + token: string; + /** List of phone numbers in global E.164 format (e.g., '+12125550123'). Phone numbers that cannot be normalized into a valid phone number will be discarded. Should not repeat the 'phone' input used in `app.bsky.contact.verifyPhone`. */ + contacts: (string)[]; +} + +export interface OutputSchema { + /** The users that matched during import and their indexes on the input contacts, so the client can correlate with its local list. */ + matchesAndContactIndexes: (AppBskyContactDefs.MatchAndContactIndex)[]; +} + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: + | "InvalidDid" + | "InvalidContacts" + | "TooManyContacts" + | "InvalidToken" + | "InternalError"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/contact/removeData.ts b/lex/types/app/bsky/contact/removeData.ts new file mode 100644 index 0000000..a13f562 --- /dev/null +++ b/lex/types/app/bsky/contact/removeData.ts @@ -0,0 +1,25 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = globalThis.Record; +export type InputSchema = globalThis.Record; +export type OutputSchema = globalThis.Record; + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: "InvalidDid" | "InternalError"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/contact/sendNotification.ts b/lex/types/app/bsky/contact/sendNotification.ts new file mode 100644 index 0000000..44e9583 --- /dev/null +++ b/lex/types/app/bsky/contact/sendNotification.ts @@ -0,0 +1,31 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = globalThis.Record; + +export interface InputSchema { + /** The DID of who this notification comes from. */ + from: string; + /** The DID of who this notification should go to. */ + to: string; +} + +export type OutputSchema = globalThis.Record; + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/contact/startPhoneVerification.ts b/lex/types/app/bsky/contact/startPhoneVerification.ts new file mode 100644 index 0000000..e614f04 --- /dev/null +++ b/lex/types/app/bsky/contact/startPhoneVerification.ts @@ -0,0 +1,30 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = globalThis.Record; + +export interface InputSchema { + /** The phone number to receive the code via SMS. */ + phone: string; +} + +export type OutputSchema = globalThis.Record; + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: "RateLimitExceeded" | "InvalidDid" | "InvalidPhone" | "InternalError"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/contact/verifyPhone.ts b/lex/types/app/bsky/contact/verifyPhone.ts new file mode 100644 index 0000000..9079f82 --- /dev/null +++ b/lex/types/app/bsky/contact/verifyPhone.ts @@ -0,0 +1,40 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = globalThis.Record; + +export interface InputSchema { + /** The phone number to verify. Should be the same as the one passed to `app.bsky.contact.startPhoneVerification`. */ + phone: string; + /** The code received via SMS as a result of the call to `app.bsky.contact.startPhoneVerification`. */ + code: string; +} + +export interface OutputSchema { + /** JWT to be used in a call to `app.bsky.contact.importContacts`. It is only valid for a single call. */ + token: string; +} + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: + | "RateLimitExceeded" + | "InvalidDid" + | "InvalidPhone" + | "InvalidCode" + | "InternalError"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/draft/createDraft.ts b/lex/types/app/bsky/draft/createDraft.ts new file mode 100644 index 0000000..29054e5 --- /dev/null +++ b/lex/types/app/bsky/draft/createDraft.ts @@ -0,0 +1,34 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyDraftDefs from "./defs.ts"; + +export type QueryParams = globalThis.Record; + +export interface InputSchema { + draft: AppBskyDraftDefs.Draft; +} + +export interface OutputSchema { + /** The ID of the created draft. */ + id: string; +} + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; + error?: "DraftLimitReached"; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/draft/defs.ts b/lex/types/app/bsky/draft/defs.ts new file mode 100644 index 0000000..4319025 --- /dev/null +++ b/lex/types/app/bsky/draft/defs.ts @@ -0,0 +1,218 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; +import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; +import type * as AppBskyFeedPostgate from "../feed/postgate.ts"; +import type * as AppBskyFeedThreadgate from "../feed/threadgate.ts"; +import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; +import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; + +const is$typed = _is$typed, validate = _validate; +const id = "app.bsky.draft.defs"; + +/** A draft with an identifier, used to store drafts in private storage (stash). */ +export interface DraftWithId { + $type?: "app.bsky.draft.defs#draftWithId"; + /** A TID to be used as a draft identifier. */ + id: string; + draft: Draft; +} + +const hashDraftWithId = "draftWithId"; + +export function isDraftWithId(v: V): v is DraftWithId & V { + return is$typed(v, id, hashDraftWithId); +} + +export function validateDraftWithId( + v: V, +): ValidationResult { + return validate(v, id, hashDraftWithId); +} + +/** A draft containing an array of draft posts. */ +export interface Draft { + $type?: "app.bsky.draft.defs#draft"; + /** UUIDv4 identifier of the device that created this draft. */ + deviceId?: string; + /** The device and/or platform on which the draft was created. */ + deviceName?: string; + /** Array of draft posts that compose this draft. */ + posts: (DraftPost)[]; + /** Indicates human language of posts primary text content. */ + langs?: (string)[]; + /** Embedding rules for the postgates to be created when this draft is published. */ + postgateEmbeddingRules?: + ($Typed | { $type: string })[]; + /** Allow-rules for the threadgate to be created when this draft is published. */ + threadgateAllow?: ( + | $Typed + | $Typed + | $Typed + | $Typed + | { $type: string } + )[]; +} + +const hashDraft = "draft"; + +export function isDraft(v: V): v is Draft & V { + return is$typed(v, id, hashDraft); +} + +export function validateDraft(v: V): ValidationResult { + return validate(v, id, hashDraft); +} + +/** One of the posts that compose a draft. */ +export interface DraftPost { + $type?: "app.bsky.draft.defs#draftPost"; + /** The primary post content. It has a higher limit than post contents to allow storing a larger text that can later be refined into smaller posts. */ + text: string; + labels?: $Typed | { $type: string }; + embedImages?: (DraftEmbedImage)[]; + embedVideos?: (DraftEmbedVideo)[]; + embedExternals?: (DraftEmbedExternal)[]; + embedRecords?: (DraftEmbedRecord)[]; +} + +const hashDraftPost = "draftPost"; + +export function isDraftPost(v: V): v is DraftPost & V { + return is$typed(v, id, hashDraftPost); +} + +export function validateDraftPost(v: V): ValidationResult { + return validate(v, id, hashDraftPost); +} + +/** View to present drafts data to users. */ +export interface DraftView { + $type?: "app.bsky.draft.defs#draftView"; + /** A TID to be used as a draft identifier. */ + id: string; + draft: Draft; + /** The time the draft was created. */ + createdAt: string; + /** The time the draft was last updated. */ + updatedAt: string; +} + +const hashDraftView = "draftView"; + +export function isDraftView(v: V): v is DraftView & V { + return is$typed(v, id, hashDraftView); +} + +export function validateDraftView(v: V): ValidationResult { + return validate(v, id, hashDraftView); +} + +export interface DraftEmbedLocalRef { + $type?: "app.bsky.draft.defs#draftEmbedLocalRef"; + /** Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts. */ + path: string; +} + +const hashDraftEmbedLocalRef = "draftEmbedLocalRef"; + +export function isDraftEmbedLocalRef(v: V): v is DraftEmbedLocalRef & V { + return is$typed(v, id, hashDraftEmbedLocalRef); +} + +export function validateDraftEmbedLocalRef( + v: V, +): ValidationResult { + return validate(v, id, hashDraftEmbedLocalRef); +} + +export interface DraftEmbedCaption { + $type?: "app.bsky.draft.defs#draftEmbedCaption"; + lang: string; + content: string; +} + +const hashDraftEmbedCaption = "draftEmbedCaption"; + +export function isDraftEmbedCaption(v: V): v is DraftEmbedCaption & V { + return is$typed(v, id, hashDraftEmbedCaption); +} + +export function validateDraftEmbedCaption( + v: V, +): ValidationResult { + return validate(v, id, hashDraftEmbedCaption); +} + +export interface DraftEmbedImage { + $type?: "app.bsky.draft.defs#draftEmbedImage"; + localRef: DraftEmbedLocalRef; + alt?: string; +} + +const hashDraftEmbedImage = "draftEmbedImage"; + +export function isDraftEmbedImage(v: V): v is DraftEmbedImage & V { + return is$typed(v, id, hashDraftEmbedImage); +} + +export function validateDraftEmbedImage( + v: V, +): ValidationResult { + return validate(v, id, hashDraftEmbedImage); +} + +export interface DraftEmbedVideo { + $type?: "app.bsky.draft.defs#draftEmbedVideo"; + localRef: DraftEmbedLocalRef; + alt?: string; + captions?: (DraftEmbedCaption)[]; +} + +const hashDraftEmbedVideo = "draftEmbedVideo"; + +export function isDraftEmbedVideo(v: V): v is DraftEmbedVideo & V { + return is$typed(v, id, hashDraftEmbedVideo); +} + +export function validateDraftEmbedVideo( + v: V, +): ValidationResult { + return validate(v, id, hashDraftEmbedVideo); +} + +export interface DraftEmbedExternal { + $type?: "app.bsky.draft.defs#draftEmbedExternal"; + uri: string; +} + +const hashDraftEmbedExternal = "draftEmbedExternal"; + +export function isDraftEmbedExternal(v: V): v is DraftEmbedExternal & V { + return is$typed(v, id, hashDraftEmbedExternal); +} + +export function validateDraftEmbedExternal( + v: V, +): ValidationResult { + return validate(v, id, hashDraftEmbedExternal); +} + +export interface DraftEmbedRecord { + $type?: "app.bsky.draft.defs#draftEmbedRecord"; + record: ComAtprotoRepoStrongRef.Main; +} + +const hashDraftEmbedRecord = "draftEmbedRecord"; + +export function isDraftEmbedRecord(v: V): v is DraftEmbedRecord & V { + return is$typed(v, id, hashDraftEmbedRecord); +} + +export function validateDraftEmbedRecord( + v: V, +): ValidationResult { + return validate(v, id, hashDraftEmbedRecord); +} diff --git a/lex/types/app/bsky/draft/deleteDraft.ts b/lex/types/app/bsky/draft/deleteDraft.ts new file mode 100644 index 0000000..b8b00ff --- /dev/null +++ b/lex/types/app/bsky/draft/deleteDraft.ts @@ -0,0 +1,20 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = globalThis.Record; + +export interface InputSchema { + id: string; +} + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | void; diff --git a/lex/types/app/bsky/draft/getDrafts.ts b/lex/types/app/bsky/draft/getDrafts.ts new file mode 100644 index 0000000..970aa40 --- /dev/null +++ b/lex/types/app/bsky/draft/getDrafts.ts @@ -0,0 +1,30 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyDraftDefs from "./defs.ts"; + +export type QueryParams = { + limit: number; + cursor?: string; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + cursor?: string; + drafts: (AppBskyDraftDefs.DraftView)[]; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/draft/updateDraft.ts b/lex/types/app/bsky/draft/updateDraft.ts new file mode 100644 index 0000000..ac17602 --- /dev/null +++ b/lex/types/app/bsky/draft/updateDraft.ts @@ -0,0 +1,22 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyDraftDefs from "./defs.ts"; + +export type QueryParams = globalThis.Record; + +export interface InputSchema { + draft: AppBskyDraftDefs.DraftWithId; +} + +export interface HandlerInput { + encoding: "application/json"; + body: InputSchema; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | void; diff --git a/lex/types/app/bsky/embed/defs.ts b/lex/types/app/bsky/embed/defs.ts index 47abd26..74e9432 100644 --- a/lex/types/app/bsky/embed/defs.ts +++ b/lex/types/app/bsky/embed/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -16,10 +17,12 @@ export interface AspectRatio { const hashAspectRatio = "aspectRatio"; -export function isAspectRatio(v: V) { +export function isAspectRatio(v: V): v is AspectRatio & V { return is$typed(v, id, hashAspectRatio); } -export function validateAspectRatio(v: V) { +export function validateAspectRatio( + v: V, +): ValidationResult { return validate(v, id, hashAspectRatio); } diff --git a/lex/types/app/bsky/embed/external.ts b/lex/types/app/bsky/embed/external.ts index af89f69..850e8a8 100644 --- a/lex/types/app/bsky/embed/external.ts +++ b/lex/types/app/bsky/embed/external.ts @@ -3,6 +3,7 @@ */ import type { BlobRef } from "@atp/lexicon"; import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -16,11 +17,11 @@ export interface Main { const hashMain = "main"; -export function isMain(v: V) { +export function isMain(v: V): v is Main & V { return is$typed(v, id, hashMain); } -export function validateMain(v: V) { +export function validateMain(v: V): ValidationResult
{ return validate
(v, id, hashMain); } @@ -34,11 +35,11 @@ export interface External { const hashExternal = "external"; -export function isExternal(v: V) { +export function isExternal(v: V): v is External & V { return is$typed(v, id, hashExternal); } -export function validateExternal(v: V) { +export function validateExternal(v: V): ValidationResult { return validate(v, id, hashExternal); } @@ -49,11 +50,11 @@ export interface View { const hashView = "view"; -export function isView(v: V) { +export function isView(v: V): v is View & V { return is$typed(v, id, hashView); } -export function validateView(v: V) { +export function validateView(v: V): ValidationResult { return validate(v, id, hashView); } @@ -67,10 +68,12 @@ export interface ViewExternal { const hashViewExternal = "viewExternal"; -export function isViewExternal(v: V) { +export function isViewExternal(v: V): v is ViewExternal & V { return is$typed(v, id, hashViewExternal); } -export function validateViewExternal(v: V) { +export function validateViewExternal( + v: V, +): ValidationResult { return validate(v, id, hashViewExternal); } diff --git a/lex/types/app/bsky/embed/images.ts b/lex/types/app/bsky/embed/images.ts index de85c7c..5c210c5 100644 --- a/lex/types/app/bsky/embed/images.ts +++ b/lex/types/app/bsky/embed/images.ts @@ -3,6 +3,7 @@ */ import type { BlobRef } from "@atp/lexicon"; import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyEmbedDefs from "./defs.ts"; @@ -16,16 +17,17 @@ export interface Main { const hashMain = "main"; -export function isMain(v: V) { +export function isMain(v: V): v is Main & V { return is$typed(v, id, hashMain); } -export function validateMain(v: V) { +export function validateMain(v: V): ValidationResult
{ return validate
(v, id, hashMain); } export interface Image { $type?: "app.bsky.embed.images#image"; + /** The raw image file. May be up to 2 MB, formerly limited to 1 MB. */ image: BlobRef; /** Alt text description of the image, for accessibility. */ alt: string; @@ -34,11 +36,11 @@ export interface Image { const hashImage = "image"; -export function isImage(v: V) { +export function isImage(v: V): v is Image & V { return is$typed(v, id, hashImage); } -export function validateImage(v: V) { +export function validateImage(v: V): ValidationResult { return validate(v, id, hashImage); } @@ -49,11 +51,11 @@ export interface View { const hashView = "view"; -export function isView(v: V) { +export function isView(v: V): v is View & V { return is$typed(v, id, hashView); } -export function validateView(v: V) { +export function validateView(v: V): ValidationResult { return validate(v, id, hashView); } @@ -70,10 +72,10 @@ export interface ViewImage { const hashViewImage = "viewImage"; -export function isViewImage(v: V) { +export function isViewImage(v: V): v is ViewImage & V { return is$typed(v, id, hashViewImage); } -export function validateViewImage(v: V) { +export function validateViewImage(v: V): ValidationResult { return validate(v, id, hashViewImage); } diff --git a/lex/types/app/bsky/embed/record.ts b/lex/types/app/bsky/embed/record.ts index ff66829..b926272 100644 --- a/lex/types/app/bsky/embed/record.ts +++ b/lex/types/app/bsky/embed/record.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; import type * as AppBskyFeedDefs from "../feed/defs.ts"; @@ -24,11 +25,11 @@ export interface Main { const hashMain = "main"; -export function isMain(v: V) { +export function isMain(v: V): v is Main & V { return is$typed(v, id, hashMain); } -export function validateMain(v: V) { +export function validateMain(v: V): ValidationResult
{ return validate
(v, id, hashMain); } @@ -48,11 +49,11 @@ export interface View { const hashView = "view"; -export function isView(v: V) { +export function isView(v: V): v is View & V { return is$typed(v, id, hashView); } -export function validateView(v: V) { +export function validateView(v: V): ValidationResult { return validate(v, id, hashView); } @@ -81,11 +82,11 @@ export interface ViewRecord { const hashViewRecord = "viewRecord"; -export function isViewRecord(v: V) { +export function isViewRecord(v: V): v is ViewRecord & V { return is$typed(v, id, hashViewRecord); } -export function validateViewRecord(v: V) { +export function validateViewRecord(v: V): ValidationResult { return validate(v, id, hashViewRecord); } @@ -97,11 +98,13 @@ export interface ViewNotFound { const hashViewNotFound = "viewNotFound"; -export function isViewNotFound(v: V) { +export function isViewNotFound(v: V): v is ViewNotFound & V { return is$typed(v, id, hashViewNotFound); } -export function validateViewNotFound(v: V) { +export function validateViewNotFound( + v: V, +): ValidationResult { return validate(v, id, hashViewNotFound); } @@ -114,11 +117,13 @@ export interface ViewBlocked { const hashViewBlocked = "viewBlocked"; -export function isViewBlocked(v: V) { +export function isViewBlocked(v: V): v is ViewBlocked & V { return is$typed(v, id, hashViewBlocked); } -export function validateViewBlocked(v: V) { +export function validateViewBlocked( + v: V, +): ValidationResult { return validate(v, id, hashViewBlocked); } @@ -130,10 +135,12 @@ export interface ViewDetached { const hashViewDetached = "viewDetached"; -export function isViewDetached(v: V) { +export function isViewDetached(v: V): v is ViewDetached & V { return is$typed(v, id, hashViewDetached); } -export function validateViewDetached(v: V) { +export function validateViewDetached( + v: V, +): ValidationResult { return validate(v, id, hashViewDetached); } diff --git a/lex/types/app/bsky/embed/recordWithMedia.ts b/lex/types/app/bsky/embed/recordWithMedia.ts index ec50656..16240cd 100644 --- a/lex/types/app/bsky/embed/recordWithMedia.ts +++ b/lex/types/app/bsky/embed/recordWithMedia.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyEmbedRecord from "./record.ts"; import type * as AppBskyEmbedImages from "./images.ts"; @@ -23,11 +24,11 @@ export interface Main { const hashMain = "main"; -export function isMain(v: V) { +export function isMain(v: V): v is Main & V { return is$typed(v, id, hashMain); } -export function validateMain(v: V) { +export function validateMain(v: V): ValidationResult
{ return validate
(v, id, hashMain); } @@ -43,10 +44,10 @@ export interface View { const hashView = "view"; -export function isView(v: V) { +export function isView(v: V): v is View & V { return is$typed(v, id, hashView); } -export function validateView(v: V) { +export function validateView(v: V): ValidationResult { return validate(v, id, hashView); } diff --git a/lex/types/app/bsky/embed/video.ts b/lex/types/app/bsky/embed/video.ts index e0bad5b..64a7c42 100644 --- a/lex/types/app/bsky/embed/video.ts +++ b/lex/types/app/bsky/embed/video.ts @@ -3,6 +3,7 @@ */ import type { BlobRef } from "@atp/lexicon"; import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyEmbedDefs from "./defs.ts"; @@ -17,15 +18,20 @@ export interface Main { /** Alt text description of the video, for accessibility. */ alt?: string; aspectRatio?: AppBskyEmbedDefs.AspectRatio; + /** A hint to the client about how to present the video. */ + presentation?: + | "default" + | "gif" + | (string & globalThis.Record); } const hashMain = "main"; -export function isMain(v: V) { +export function isMain(v: V): v is Main & V { return is$typed(v, id, hashMain); } -export function validateMain(v: V) { +export function validateMain(v: V): ValidationResult
{ return validate
(v, id, hashMain); } @@ -37,11 +43,11 @@ export interface Caption { const hashCaption = "caption"; -export function isCaption(v: V) { +export function isCaption(v: V): v is Caption & V { return is$typed(v, id, hashCaption); } -export function validateCaption(v: V) { +export function validateCaption(v: V): ValidationResult { return validate(v, id, hashCaption); } @@ -52,14 +58,19 @@ export interface View { thumbnail?: string; alt?: string; aspectRatio?: AppBskyEmbedDefs.AspectRatio; + /** A hint to the client about how to present the video. */ + presentation?: + | "default" + | "gif" + | (string & globalThis.Record); } const hashView = "view"; -export function isView(v: V) { +export function isView(v: V): v is View & V { return is$typed(v, id, hashView); } -export function validateView(v: V) { +export function validateView(v: V): ValidationResult { return validate(v, id, hashView); } diff --git a/lex/types/app/bsky/feed/defs.ts b/lex/types/app/bsky/feed/defs.ts index e9977e8..a67a40f 100644 --- a/lex/types/app/bsky/feed/defs.ts +++ b/lex/types/app/bsky/feed/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyActorDefs from "../actor/defs.ts"; import type * as AppBskyEmbedImages from "../embed/images.ts"; @@ -44,11 +45,11 @@ export interface PostView { const hashPostView = "postView"; -export function isPostView(v: V) { +export function isPostView(v: V): v is PostView & V { return is$typed(v, id, hashPostView); } -export function validatePostView(v: V) { +export function validatePostView(v: V): ValidationResult { return validate(v, id, hashPostView); } @@ -66,11 +67,13 @@ export interface ViewerState { const hashViewerState = "viewerState"; -export function isViewerState(v: V) { +export function isViewerState(v: V): v is ViewerState & V { return is$typed(v, id, hashViewerState); } -export function validateViewerState(v: V) { +export function validateViewerState( + v: V, +): ValidationResult { return validate(v, id, hashViewerState); } @@ -82,11 +85,13 @@ export interface ThreadContext { const hashThreadContext = "threadContext"; -export function isThreadContext(v: V) { +export function isThreadContext(v: V): v is ThreadContext & V { return is$typed(v, id, hashThreadContext); } -export function validateThreadContext(v: V) { +export function validateThreadContext( + v: V, +): ValidationResult { return validate(v, id, hashThreadContext); } @@ -103,11 +108,13 @@ export interface FeedViewPost { const hashFeedViewPost = "feedViewPost"; -export function isFeedViewPost(v: V) { +export function isFeedViewPost(v: V): v is FeedViewPost & V { return is$typed(v, id, hashFeedViewPost); } -export function validateFeedViewPost(v: V) { +export function validateFeedViewPost( + v: V, +): ValidationResult { return validate(v, id, hashFeedViewPost); } @@ -124,11 +131,11 @@ export interface ReplyRef { const hashReplyRef = "replyRef"; -export function isReplyRef(v: V) { +export function isReplyRef(v: V): v is ReplyRef & V { return is$typed(v, id, hashReplyRef); } -export function validateReplyRef(v: V) { +export function validateReplyRef(v: V): ValidationResult { return validate(v, id, hashReplyRef); } @@ -142,11 +149,13 @@ export interface ReasonRepost { const hashReasonRepost = "reasonRepost"; -export function isReasonRepost(v: V) { +export function isReasonRepost(v: V): v is ReasonRepost & V { return is$typed(v, id, hashReasonRepost); } -export function validateReasonRepost(v: V) { +export function validateReasonRepost( + v: V, +): ValidationResult { return validate(v, id, hashReasonRepost); } @@ -156,11 +165,11 @@ export interface ReasonPin { const hashReasonPin = "reasonPin"; -export function isReasonPin(v: V) { +export function isReasonPin(v: V): v is ReasonPin & V { return is$typed(v, id, hashReasonPin); } -export function validateReasonPin(v: V) { +export function validateReasonPin(v: V): ValidationResult { return validate(v, id, hashReasonPin); } @@ -181,11 +190,13 @@ export interface ThreadViewPost { const hashThreadViewPost = "threadViewPost"; -export function isThreadViewPost(v: V) { +export function isThreadViewPost(v: V): v is ThreadViewPost & V { return is$typed(v, id, hashThreadViewPost); } -export function validateThreadViewPost(v: V) { +export function validateThreadViewPost( + v: V, +): ValidationResult { return validate(v, id, hashThreadViewPost); } @@ -197,11 +208,13 @@ export interface NotFoundPost { const hashNotFoundPost = "notFoundPost"; -export function isNotFoundPost(v: V) { +export function isNotFoundPost(v: V): v is NotFoundPost & V { return is$typed(v, id, hashNotFoundPost); } -export function validateNotFoundPost(v: V) { +export function validateNotFoundPost( + v: V, +): ValidationResult { return validate(v, id, hashNotFoundPost); } @@ -214,11 +227,13 @@ export interface BlockedPost { const hashBlockedPost = "blockedPost"; -export function isBlockedPost(v: V) { +export function isBlockedPost(v: V): v is BlockedPost & V { return is$typed(v, id, hashBlockedPost); } -export function validateBlockedPost(v: V) { +export function validateBlockedPost( + v: V, +): ValidationResult { return validate(v, id, hashBlockedPost); } @@ -230,11 +245,13 @@ export interface BlockedAuthor { const hashBlockedAuthor = "blockedAuthor"; -export function isBlockedAuthor(v: V) { +export function isBlockedAuthor(v: V): v is BlockedAuthor & V { return is$typed(v, id, hashBlockedAuthor); } -export function validateBlockedAuthor(v: V) { +export function validateBlockedAuthor( + v: V, +): ValidationResult { return validate(v, id, hashBlockedAuthor); } @@ -261,11 +278,13 @@ export interface GeneratorView { const hashGeneratorView = "generatorView"; -export function isGeneratorView(v: V) { +export function isGeneratorView(v: V): v is GeneratorView & V { return is$typed(v, id, hashGeneratorView); } -export function validateGeneratorView(v: V) { +export function validateGeneratorView( + v: V, +): ValidationResult { return validate(v, id, hashGeneratorView); } @@ -276,11 +295,13 @@ export interface GeneratorViewerState { const hashGeneratorViewerState = "generatorViewerState"; -export function isGeneratorViewerState(v: V) { +export function isGeneratorViewerState(v: V): v is GeneratorViewerState & V { return is$typed(v, id, hashGeneratorViewerState); } -export function validateGeneratorViewerState(v: V) { +export function validateGeneratorViewerState( + v: V, +): ValidationResult { return validate(v, id, hashGeneratorViewerState); } @@ -296,11 +317,13 @@ export interface SkeletonFeedPost { const hashSkeletonFeedPost = "skeletonFeedPost"; -export function isSkeletonFeedPost(v: V) { +export function isSkeletonFeedPost(v: V): v is SkeletonFeedPost & V { return is$typed(v, id, hashSkeletonFeedPost); } -export function validateSkeletonFeedPost(v: V) { +export function validateSkeletonFeedPost( + v: V, +): ValidationResult { return validate(v, id, hashSkeletonFeedPost); } @@ -311,11 +334,13 @@ export interface SkeletonReasonRepost { const hashSkeletonReasonRepost = "skeletonReasonRepost"; -export function isSkeletonReasonRepost(v: V) { +export function isSkeletonReasonRepost(v: V): v is SkeletonReasonRepost & V { return is$typed(v, id, hashSkeletonReasonRepost); } -export function validateSkeletonReasonRepost(v: V) { +export function validateSkeletonReasonRepost( + v: V, +): ValidationResult { return validate(v, id, hashSkeletonReasonRepost); } @@ -325,11 +350,13 @@ export interface SkeletonReasonPin { const hashSkeletonReasonPin = "skeletonReasonPin"; -export function isSkeletonReasonPin(v: V) { +export function isSkeletonReasonPin(v: V): v is SkeletonReasonPin & V { return is$typed(v, id, hashSkeletonReasonPin); } -export function validateSkeletonReasonPin(v: V) { +export function validateSkeletonReasonPin( + v: V, +): ValidationResult { return validate(v, id, hashSkeletonReasonPin); } @@ -343,11 +370,13 @@ export interface ThreadgateView { const hashThreadgateView = "threadgateView"; -export function isThreadgateView(v: V) { +export function isThreadgateView(v: V): v is ThreadgateView & V { return is$typed(v, id, hashThreadgateView); } -export function validateThreadgateView(v: V) { +export function validateThreadgateView( + v: V, +): ValidationResult { return validate(v, id, hashThreadgateView); } @@ -376,39 +405,41 @@ export interface Interaction { const hashInteraction = "interaction"; -export function isInteraction(v: V) { +export function isInteraction(v: V): v is Interaction & V { return is$typed(v, id, hashInteraction); } -export function validateInteraction(v: V) { +export function validateInteraction( + v: V, +): ValidationResult { return validate(v, id, hashInteraction); } /** Request that less content like the given feed item be shown in the feed */ -export const REQUESTLESS = `${id}#requestLess`; +export const REQUESTLESS: string = `${id}#requestLess`; /** Request that more content like the given feed item be shown in the feed */ -export const REQUESTMORE = `${id}#requestMore`; +export const REQUESTMORE: string = `${id}#requestMore`; /** User clicked through to the feed item */ -export const CLICKTHROUGHITEM = `${id}#clickthroughItem`; +export const CLICKTHROUGHITEM: string = `${id}#clickthroughItem`; /** User clicked through to the author of the feed item */ -export const CLICKTHROUGHAUTHOR = `${id}#clickthroughAuthor`; +export const CLICKTHROUGHAUTHOR: string = `${id}#clickthroughAuthor`; /** User clicked through to the reposter of the feed item */ -export const CLICKTHROUGHREPOSTER = `${id}#clickthroughReposter`; +export const CLICKTHROUGHREPOSTER: string = `${id}#clickthroughReposter`; /** User clicked through to the embedded content of the feed item */ -export const CLICKTHROUGHEMBED = `${id}#clickthroughEmbed`; +export const CLICKTHROUGHEMBED: string = `${id}#clickthroughEmbed`; /** Declares the feed generator returns any types of posts. */ -export const CONTENTMODEUNSPECIFIED = `${id}#contentModeUnspecified`; +export const CONTENTMODEUNSPECIFIED: string = `${id}#contentModeUnspecified`; /** Declares the feed generator returns posts containing app.bsky.embed.video embeds. */ -export const CONTENTMODEVIDEO = `${id}#contentModeVideo`; +export const CONTENTMODEVIDEO: string = `${id}#contentModeVideo`; /** Feed item was seen by user */ -export const INTERACTIONSEEN = `${id}#interactionSeen`; +export const INTERACTIONSEEN: string = `${id}#interactionSeen`; /** User liked the feed item */ -export const INTERACTIONLIKE = `${id}#interactionLike`; +export const INTERACTIONLIKE: string = `${id}#interactionLike`; /** User reposted the feed item */ -export const INTERACTIONREPOST = `${id}#interactionRepost`; +export const INTERACTIONREPOST: string = `${id}#interactionRepost`; /** User replied to the feed item */ -export const INTERACTIONREPLY = `${id}#interactionReply`; +export const INTERACTIONREPLY: string = `${id}#interactionReply`; /** User quoted the feed item */ -export const INTERACTIONQUOTE = `${id}#interactionQuote`; +export const INTERACTIONQUOTE: string = `${id}#interactionQuote`; /** User shared the feed item */ -export const INTERACTIONSHARE = `${id}#interactionShare`; +export const INTERACTIONSHARE: string = `${id}#interactionShare`; diff --git a/lex/types/app/bsky/feed/describeFeedGenerator.ts b/lex/types/app/bsky/feed/describeFeedGenerator.ts index 8e0b6bd..2c29079 100644 --- a/lex/types/app/bsky/feed/describeFeedGenerator.ts +++ b/lex/types/app/bsky/feed/describeFeedGenerator.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -38,11 +39,11 @@ export interface Feed { const hashFeed = "feed"; -export function isFeed(v: V) { +export function isFeed(v: V): v is Feed & V { return is$typed(v, id, hashFeed); } -export function validateFeed(v: V) { +export function validateFeed(v: V): ValidationResult { return validate(v, id, hashFeed); } @@ -54,10 +55,10 @@ export interface Links { const hashLinks = "links"; -export function isLinks(v: V) { +export function isLinks(v: V): v is Links & V { return is$typed(v, id, hashLinks); } -export function validateLinks(v: V) { +export function validateLinks(v: V): ValidationResult { return validate(v, id, hashLinks); } diff --git a/lex/types/app/bsky/feed/generator.ts b/lex/types/app/bsky/feed/generator.ts index 7368028..d3d4d90 100644 --- a/lex/types/app/bsky/feed/generator.ts +++ b/lex/types/app/bsky/feed/generator.ts @@ -3,6 +3,7 @@ */ import type { BlobRef } from "@atp/lexicon"; import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyRichtextFacet from "../richtext/facet.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; @@ -30,11 +31,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/feed/getLikes.ts b/lex/types/app/bsky/feed/getLikes.ts index 5f07f59..0b4cebc 100644 --- a/lex/types/app/bsky/feed/getLikes.ts +++ b/lex/types/app/bsky/feed/getLikes.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyActorDefs from "../actor/defs.ts"; @@ -49,10 +50,10 @@ export interface Like { const hashLike = "like"; -export function isLike(v: V) { +export function isLike(v: V): v is Like & V { return is$typed(v, id, hashLike); } -export function validateLike(v: V) { +export function validateLike(v: V): ValidationResult { return validate(v, id, hashLike); } diff --git a/lex/types/app/bsky/feed/like.ts b/lex/types/app/bsky/feed/like.ts index 77f9352..08e5929 100644 --- a/lex/types/app/bsky/feed/like.ts +++ b/lex/types/app/bsky/feed/like.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; @@ -18,11 +19,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/feed/post.ts b/lex/types/app/bsky/feed/post.ts index b3055ec..a79b432 100644 --- a/lex/types/app/bsky/feed/post.ts +++ b/lex/types/app/bsky/feed/post.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyRichtextFacet from "../richtext/facet.ts"; import type * as AppBskyEmbedImages from "../embed/images.ts"; @@ -43,11 +44,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } @@ -61,11 +62,11 @@ export interface ReplyRef { const hashReplyRef = "replyRef"; -export function isReplyRef(v: V) { +export function isReplyRef(v: V): v is ReplyRef & V { return is$typed(v, id, hashReplyRef); } -export function validateReplyRef(v: V) { +export function validateReplyRef(v: V): ValidationResult { return validate(v, id, hashReplyRef); } @@ -80,11 +81,11 @@ export interface Entity { const hashEntity = "entity"; -export function isEntity(v: V) { +export function isEntity(v: V): v is Entity & V { return is$typed(v, id, hashEntity); } -export function validateEntity(v: V) { +export function validateEntity(v: V): ValidationResult { return validate(v, id, hashEntity); } @@ -97,10 +98,10 @@ export interface TextSlice { const hashTextSlice = "textSlice"; -export function isTextSlice(v: V) { +export function isTextSlice(v: V): v is TextSlice & V { return is$typed(v, id, hashTextSlice); } -export function validateTextSlice(v: V) { +export function validateTextSlice(v: V): ValidationResult { return validate(v, id, hashTextSlice); } diff --git a/lex/types/app/bsky/feed/postgate.ts b/lex/types/app/bsky/feed/postgate.ts index e8b87a4..bb1e669 100644 --- a/lex/types/app/bsky/feed/postgate.ts +++ b/lex/types/app/bsky/feed/postgate.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -21,11 +22,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } @@ -38,10 +39,12 @@ export interface DisableRule { const hashDisableRule = "disableRule"; -export function isDisableRule(v: V) { +export function isDisableRule(v: V): v is DisableRule & V { return is$typed(v, id, hashDisableRule); } -export function validateDisableRule(v: V) { +export function validateDisableRule( + v: V, +): ValidationResult { return validate(v, id, hashDisableRule); } diff --git a/lex/types/app/bsky/feed/repost.ts b/lex/types/app/bsky/feed/repost.ts index 9741045..f602573 100644 --- a/lex/types/app/bsky/feed/repost.ts +++ b/lex/types/app/bsky/feed/repost.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; @@ -18,11 +19,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/feed/sendInteractions.ts b/lex/types/app/bsky/feed/sendInteractions.ts index 01ca419..0460cab 100644 --- a/lex/types/app/bsky/feed/sendInteractions.ts +++ b/lex/types/app/bsky/feed/sendInteractions.ts @@ -6,6 +6,7 @@ import type * as AppBskyFeedDefs from "./defs.ts"; export type QueryParams = globalThis.Record; export interface InputSchema { + feed?: string; interactions: (AppBskyFeedDefs.Interaction)[]; } diff --git a/lex/types/app/bsky/feed/threadgate.ts b/lex/types/app/bsky/feed/threadgate.ts index f7fe014..2d928cf 100644 --- a/lex/types/app/bsky/feed/threadgate.ts +++ b/lex/types/app/bsky/feed/threadgate.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -27,11 +28,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } @@ -44,11 +45,13 @@ export interface MentionRule { const hashMentionRule = "mentionRule"; -export function isMentionRule(v: V) { +export function isMentionRule(v: V): v is MentionRule & V { return is$typed(v, id, hashMentionRule); } -export function validateMentionRule(v: V) { +export function validateMentionRule( + v: V, +): ValidationResult { return validate(v, id, hashMentionRule); } @@ -59,11 +62,13 @@ export interface FollowerRule { const hashFollowerRule = "followerRule"; -export function isFollowerRule(v: V) { +export function isFollowerRule(v: V): v is FollowerRule & V { return is$typed(v, id, hashFollowerRule); } -export function validateFollowerRule(v: V) { +export function validateFollowerRule( + v: V, +): ValidationResult { return validate(v, id, hashFollowerRule); } @@ -74,11 +79,13 @@ export interface FollowingRule { const hashFollowingRule = "followingRule"; -export function isFollowingRule(v: V) { +export function isFollowingRule(v: V): v is FollowingRule & V { return is$typed(v, id, hashFollowingRule); } -export function validateFollowingRule(v: V) { +export function validateFollowingRule( + v: V, +): ValidationResult { return validate(v, id, hashFollowingRule); } @@ -90,10 +97,10 @@ export interface ListRule { const hashListRule = "listRule"; -export function isListRule(v: V) { +export function isListRule(v: V): v is ListRule & V { return is$typed(v, id, hashListRule); } -export function validateListRule(v: V) { +export function validateListRule(v: V): ValidationResult { return validate(v, id, hashListRule); } diff --git a/lex/types/app/bsky/graph/block.ts b/lex/types/app/bsky/graph/block.ts index 89754ac..5be9540 100644 --- a/lex/types/app/bsky/graph/block.ts +++ b/lex/types/app/bsky/graph/block.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -17,11 +18,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/graph/defs.ts b/lex/types/app/bsky/graph/defs.ts index d169451..20a0ce3 100644 --- a/lex/types/app/bsky/graph/defs.ts +++ b/lex/types/app/bsky/graph/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; import type * as AppBskyActorDefs from "../actor/defs.ts"; @@ -26,11 +27,13 @@ export interface ListViewBasic { const hashListViewBasic = "listViewBasic"; -export function isListViewBasic(v: V) { +export function isListViewBasic(v: V): v is ListViewBasic & V { return is$typed(v, id, hashListViewBasic); } -export function validateListViewBasic(v: V) { +export function validateListViewBasic( + v: V, +): ValidationResult { return validate(v, id, hashListViewBasic); } @@ -52,11 +55,11 @@ export interface ListView { const hashListView = "listView"; -export function isListView(v: V) { +export function isListView(v: V): v is ListView & V { return is$typed(v, id, hashListView); } -export function validateListView(v: V) { +export function validateListView(v: V): ValidationResult { return validate(v, id, hashListView); } @@ -68,11 +71,13 @@ export interface ListItemView { const hashListItemView = "listItemView"; -export function isListItemView(v: V) { +export function isListItemView(v: V): v is ListItemView & V { return is$typed(v, id, hashListItemView); } -export function validateListItemView(v: V) { +export function validateListItemView( + v: V, +): ValidationResult { return validate(v, id, hashListItemView); } @@ -93,11 +98,13 @@ export interface StarterPackView { const hashStarterPackView = "starterPackView"; -export function isStarterPackView(v: V) { +export function isStarterPackView(v: V): v is StarterPackView & V { return is$typed(v, id, hashStarterPackView); } -export function validateStarterPackView(v: V) { +export function validateStarterPackView( + v: V, +): ValidationResult { return validate(v, id, hashStarterPackView); } @@ -116,11 +123,13 @@ export interface StarterPackViewBasic { const hashStarterPackViewBasic = "starterPackViewBasic"; -export function isStarterPackViewBasic(v: V) { +export function isStarterPackViewBasic(v: V): v is StarterPackViewBasic & V { return is$typed(v, id, hashStarterPackViewBasic); } -export function validateStarterPackViewBasic(v: V) { +export function validateStarterPackViewBasic( + v: V, +): ValidationResult { return validate(v, id, hashStarterPackViewBasic); } @@ -131,11 +140,11 @@ export type ListPurpose = | (string & globalThis.Record); /** A list of actors to apply an aggregate moderation action (mute/block) on. */ -export const MODLIST = `${id}#modlist`; +export const MODLIST: string = `${id}#modlist`; /** A list of actors used for curation purposes such as list feeds or interaction gating. */ -export const CURATELIST = `${id}#curatelist`; +export const CURATELIST: string = `${id}#curatelist`; /** A list of actors used for only for reference purposes such as within a starter pack. */ -export const REFERENCELIST = `${id}#referencelist`; +export const REFERENCELIST: string = `${id}#referencelist`; export interface ListViewerState { $type?: "app.bsky.graph.defs#listViewerState"; @@ -145,11 +154,13 @@ export interface ListViewerState { const hashListViewerState = "listViewerState"; -export function isListViewerState(v: V) { +export function isListViewerState(v: V): v is ListViewerState & V { return is$typed(v, id, hashListViewerState); } -export function validateListViewerState(v: V) { +export function validateListViewerState( + v: V, +): ValidationResult { return validate(v, id, hashListViewerState); } @@ -162,11 +173,13 @@ export interface NotFoundActor { const hashNotFoundActor = "notFoundActor"; -export function isNotFoundActor(v: V) { +export function isNotFoundActor(v: V): v is NotFoundActor & V { return is$typed(v, id, hashNotFoundActor); } -export function validateNotFoundActor(v: V) { +export function validateNotFoundActor( + v: V, +): ValidationResult { return validate(v, id, hashNotFoundActor); } @@ -178,14 +191,24 @@ export interface Relationship { following?: string; /** if the actor is followed by this DID, contains the AT-URI of the follow record */ followedBy?: string; + /** if the actor blocks this DID, this is the AT-URI of the block record */ + blocking?: string; + /** if the actor is blocked by this DID, contains the AT-URI of the block record */ + blockedBy?: string; + /** if the actor blocks this DID via a block list, this is the AT-URI of the listblock record */ + blockingByList?: string; + /** if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record */ + blockedByList?: string; } const hashRelationship = "relationship"; -export function isRelationship(v: V) { +export function isRelationship(v: V): v is Relationship & V { return is$typed(v, id, hashRelationship); } -export function validateRelationship(v: V) { +export function validateRelationship( + v: V, +): ValidationResult { return validate(v, id, hashRelationship); } diff --git a/lex/types/app/bsky/graph/follow.ts b/lex/types/app/bsky/graph/follow.ts index 00dd3aa..56a0ce9 100644 --- a/lex/types/app/bsky/graph/follow.ts +++ b/lex/types/app/bsky/graph/follow.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoRepoStrongRef from "../../../com/atproto/repo/strongRef.ts"; @@ -18,11 +19,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/graph/getListsWithMembership.ts b/lex/types/app/bsky/graph/getListsWithMembership.ts index 5a49e5c..3b416df 100644 --- a/lex/types/app/bsky/graph/getListsWithMembership.ts +++ b/lex/types/app/bsky/graph/getListsWithMembership.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyGraphDefs from "./defs.ts"; @@ -50,10 +51,12 @@ export interface ListWithMembership { const hashListWithMembership = "listWithMembership"; -export function isListWithMembership(v: V) { +export function isListWithMembership(v: V): v is ListWithMembership & V { return is$typed(v, id, hashListWithMembership); } -export function validateListWithMembership(v: V) { +export function validateListWithMembership( + v: V, +): ValidationResult { return validate(v, id, hashListWithMembership); } diff --git a/lex/types/app/bsky/graph/getStarterPacksWithMembership.ts b/lex/types/app/bsky/graph/getStarterPacksWithMembership.ts index 8c18555..7357774 100644 --- a/lex/types/app/bsky/graph/getStarterPacksWithMembership.ts +++ b/lex/types/app/bsky/graph/getStarterPacksWithMembership.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyGraphDefs from "./defs.ts"; @@ -46,11 +47,15 @@ export interface StarterPackWithMembership { const hashStarterPackWithMembership = "starterPackWithMembership"; -export function isStarterPackWithMembership(v: V) { +export function isStarterPackWithMembership( + v: V, +): v is StarterPackWithMembership & V { return is$typed(v, id, hashStarterPackWithMembership); } -export function validateStarterPackWithMembership(v: V) { +export function validateStarterPackWithMembership( + v: V, +): ValidationResult { return validate( v, id, diff --git a/lex/types/app/bsky/graph/getSuggestedFollowsByActor.ts b/lex/types/app/bsky/graph/getSuggestedFollowsByActor.ts index 5591e8e..e7c5716 100644 --- a/lex/types/app/bsky/graph/getSuggestedFollowsByActor.ts +++ b/lex/types/app/bsky/graph/getSuggestedFollowsByActor.ts @@ -10,9 +10,11 @@ export type InputSchema = undefined; export interface OutputSchema { suggestions: (AppBskyActorDefs.ProfileView)[]; - /** If true, response has fallen-back to generic results, and is not scoped using relativeToDid */ - isFallback?: boolean; /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; + /** DEPRECATED, unused. Previously: if true, response has fallen-back to generic results, and is not scoped using relativeToDid */ + isFallback?: boolean; + /** DEPRECATED: use recIdStr instead. */ recId?: number; } diff --git a/lex/types/app/bsky/graph/list.ts b/lex/types/app/bsky/graph/list.ts index 9caa3ec..57d2e75 100644 --- a/lex/types/app/bsky/graph/list.ts +++ b/lex/types/app/bsky/graph/list.ts @@ -3,6 +3,7 @@ */ import type { BlobRef } from "@atp/lexicon"; import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyGraphDefs from "./defs.ts"; import type * as AppBskyRichtextFacet from "../richtext/facet.ts"; @@ -26,11 +27,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/graph/listblock.ts b/lex/types/app/bsky/graph/listblock.ts index c264df2..5493c69 100644 --- a/lex/types/app/bsky/graph/listblock.ts +++ b/lex/types/app/bsky/graph/listblock.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -17,11 +18,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/graph/listitem.ts b/lex/types/app/bsky/graph/listitem.ts index 1ae4680..68ca0b1 100644 --- a/lex/types/app/bsky/graph/listitem.ts +++ b/lex/types/app/bsky/graph/listitem.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -19,11 +20,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/graph/starterpack.ts b/lex/types/app/bsky/graph/starterpack.ts index c1d3218..0e9d446 100644 --- a/lex/types/app/bsky/graph/starterpack.ts +++ b/lex/types/app/bsky/graph/starterpack.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyRichtextFacet from "../richtext/facet.ts"; @@ -23,11 +24,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } @@ -40,10 +41,10 @@ export interface FeedItem { const hashFeedItem = "feedItem"; -export function isFeedItem(v: V) { +export function isFeedItem(v: V): v is FeedItem & V { return is$typed(v, id, hashFeedItem); } -export function validateFeedItem(v: V) { +export function validateFeedItem(v: V): ValidationResult { return validate(v, id, hashFeedItem); } diff --git a/lex/types/app/bsky/graph/verification.ts b/lex/types/app/bsky/graph/verification.ts index 3e92ccd..8edffeb 100644 --- a/lex/types/app/bsky/graph/verification.ts +++ b/lex/types/app/bsky/graph/verification.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -22,11 +23,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/labeler/defs.ts b/lex/types/app/bsky/labeler/defs.ts index 9a83570..cc95dd0 100644 --- a/lex/types/app/bsky/labeler/defs.ts +++ b/lex/types/app/bsky/labeler/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyActorDefs from "../actor/defs.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; @@ -23,11 +24,13 @@ export interface LabelerView { const hashLabelerView = "labelerView"; -export function isLabelerView(v: V) { +export function isLabelerView(v: V): v is LabelerView & V { return is$typed(v, id, hashLabelerView); } -export function validateLabelerView(v: V) { +export function validateLabelerView( + v: V, +): ValidationResult { return validate(v, id, hashLabelerView); } @@ -51,11 +54,13 @@ export interface LabelerViewDetailed { const hashLabelerViewDetailed = "labelerViewDetailed"; -export function isLabelerViewDetailed(v: V) { +export function isLabelerViewDetailed(v: V): v is LabelerViewDetailed & V { return is$typed(v, id, hashLabelerViewDetailed); } -export function validateLabelerViewDetailed(v: V) { +export function validateLabelerViewDetailed( + v: V, +): ValidationResult { return validate(v, id, hashLabelerViewDetailed); } @@ -66,11 +71,13 @@ export interface LabelerViewerState { const hashLabelerViewerState = "labelerViewerState"; -export function isLabelerViewerState(v: V) { +export function isLabelerViewerState(v: V): v is LabelerViewerState & V { return is$typed(v, id, hashLabelerViewerState); } -export function validateLabelerViewerState(v: V) { +export function validateLabelerViewerState( + v: V, +): ValidationResult { return validate(v, id, hashLabelerViewerState); } @@ -84,10 +91,12 @@ export interface LabelerPolicies { const hashLabelerPolicies = "labelerPolicies"; -export function isLabelerPolicies(v: V) { +export function isLabelerPolicies(v: V): v is LabelerPolicies & V { return is$typed(v, id, hashLabelerPolicies); } -export function validateLabelerPolicies(v: V) { +export function validateLabelerPolicies( + v: V, +): ValidationResult { return validate(v, id, hashLabelerPolicies); } diff --git a/lex/types/app/bsky/labeler/service.ts b/lex/types/app/bsky/labeler/service.ts index 6b05ce0..0cdc27f 100644 --- a/lex/types/app/bsky/labeler/service.ts +++ b/lex/types/app/bsky/labeler/service.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyLabelerDefs from "./defs.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; @@ -26,11 +27,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/notification/declaration.ts b/lex/types/app/bsky/notification/declaration.ts index cde1ff4..8a36dd9 100644 --- a/lex/types/app/bsky/notification/declaration.ts +++ b/lex/types/app/bsky/notification/declaration.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -20,11 +21,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/app/bsky/notification/defs.ts b/lex/types/app/bsky/notification/defs.ts index 7e5b34f..ab94b8e 100644 --- a/lex/types/app/bsky/notification/defs.ts +++ b/lex/types/app/bsky/notification/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -13,11 +14,13 @@ export interface RecordDeleted { const hashRecordDeleted = "recordDeleted"; -export function isRecordDeleted(v: V) { +export function isRecordDeleted(v: V): v is RecordDeleted & V { return is$typed(v, id, hashRecordDeleted); } -export function validateRecordDeleted(v: V) { +export function validateRecordDeleted( + v: V, +): ValidationResult { return validate(v, id, hashRecordDeleted); } @@ -32,11 +35,13 @@ export interface ChatPreference { const hashChatPreference = "chatPreference"; -export function isChatPreference(v: V) { +export function isChatPreference(v: V): v is ChatPreference & V { return is$typed(v, id, hashChatPreference); } -export function validateChatPreference(v: V) { +export function validateChatPreference( + v: V, +): ValidationResult { return validate(v, id, hashChatPreference); } @@ -49,11 +54,13 @@ export interface FilterablePreference { const hashFilterablePreference = "filterablePreference"; -export function isFilterablePreference(v: V) { +export function isFilterablePreference(v: V): v is FilterablePreference & V { return is$typed(v, id, hashFilterablePreference); } -export function validateFilterablePreference(v: V) { +export function validateFilterablePreference( + v: V, +): ValidationResult { return validate(v, id, hashFilterablePreference); } @@ -65,11 +72,11 @@ export interface Preference { const hashPreference = "preference"; -export function isPreference(v: V) { +export function isPreference(v: V): v is Preference & V { return is$typed(v, id, hashPreference); } -export function validatePreference(v: V) { +export function validatePreference(v: V): ValidationResult { return validate(v, id, hashPreference); } @@ -92,11 +99,13 @@ export interface Preferences { const hashPreferences = "preferences"; -export function isPreferences(v: V) { +export function isPreferences(v: V): v is Preferences & V { return is$typed(v, id, hashPreferences); } -export function validatePreferences(v: V) { +export function validatePreferences( + v: V, +): ValidationResult { return validate(v, id, hashPreferences); } @@ -108,11 +117,13 @@ export interface ActivitySubscription { const hashActivitySubscription = "activitySubscription"; -export function isActivitySubscription(v: V) { +export function isActivitySubscription(v: V): v is ActivitySubscription & V { return is$typed(v, id, hashActivitySubscription); } -export function validateActivitySubscription(v: V) { +export function validateActivitySubscription( + v: V, +): ValidationResult { return validate(v, id, hashActivitySubscription); } @@ -125,11 +136,15 @@ export interface SubjectActivitySubscription { const hashSubjectActivitySubscription = "subjectActivitySubscription"; -export function isSubjectActivitySubscription(v: V) { +export function isSubjectActivitySubscription( + v: V, +): v is SubjectActivitySubscription & V { return is$typed(v, id, hashSubjectActivitySubscription); } -export function validateSubjectActivitySubscription(v: V) { +export function validateSubjectActivitySubscription( + v: V, +): ValidationResult { return validate( v, id, diff --git a/lex/types/app/bsky/notification/listNotifications.ts b/lex/types/app/bsky/notification/listNotifications.ts index 5349c70..29978b0 100644 --- a/lex/types/app/bsky/notification/listNotifications.ts +++ b/lex/types/app/bsky/notification/listNotifications.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyActorDefs from "../actor/defs.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; @@ -60,6 +61,7 @@ export interface Notification { | "like-via-repost" | "repost-via-repost" | "subscribed-post" + | "contact-match" | (string & globalThis.Record); reasonSubject?: string; record: { [_ in string]: unknown }; @@ -70,10 +72,12 @@ export interface Notification { const hashNotification = "notification"; -export function isNotification(v: V) { +export function isNotification(v: V): v is Notification & V { return is$typed(v, id, hashNotification); } -export function validateNotification(v: V) { +export function validateNotification( + v: V, +): ValidationResult { return validate(v, id, hashNotification); } diff --git a/lex/types/app/bsky/richtext/facet.ts b/lex/types/app/bsky/richtext/facet.ts index 61194be..a22fcc4 100644 --- a/lex/types/app/bsky/richtext/facet.ts +++ b/lex/types/app/bsky/richtext/facet.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -17,11 +18,11 @@ export interface Main { const hashMain = "main"; -export function isMain(v: V) { +export function isMain(v: V): v is Main & V { return is$typed(v, id, hashMain); } -export function validateMain(v: V) { +export function validateMain(v: V): ValidationResult
{ return validate
(v, id, hashMain); } @@ -33,11 +34,11 @@ export interface Mention { const hashMention = "mention"; -export function isMention(v: V) { +export function isMention(v: V): v is Mention & V { return is$typed(v, id, hashMention); } -export function validateMention(v: V) { +export function validateMention(v: V): ValidationResult { return validate(v, id, hashMention); } @@ -49,11 +50,11 @@ export interface Link { const hashLink = "link"; -export function isLink(v: V) { +export function isLink(v: V): v is Link & V { return is$typed(v, id, hashLink); } -export function validateLink(v: V) { +export function validateLink(v: V): ValidationResult { return validate(v, id, hashLink); } @@ -65,11 +66,11 @@ export interface Tag { const hashTag = "tag"; -export function isTag(v: V) { +export function isTag(v: V): v is Tag & V { return is$typed(v, id, hashTag); } -export function validateTag(v: V) { +export function validateTag(v: V): ValidationResult { return validate(v, id, hashTag); } @@ -82,10 +83,10 @@ export interface ByteSlice { const hashByteSlice = "byteSlice"; -export function isByteSlice(v: V) { +export function isByteSlice(v: V): v is ByteSlice & V { return is$typed(v, id, hashByteSlice); } -export function validateByteSlice(v: V) { +export function validateByteSlice(v: V): ValidationResult { return validate(v, id, hashByteSlice); } diff --git a/lex/types/app/bsky/unspecced/defs.ts b/lex/types/app/bsky/unspecced/defs.ts index a221bae..28fec2c 100644 --- a/lex/types/app/bsky/unspecced/defs.ts +++ b/lex/types/app/bsky/unspecced/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyActorDefs from "../actor/defs.ts"; import type * as AppBskyFeedDefs from "../feed/defs.ts"; @@ -16,11 +17,13 @@ export interface SkeletonSearchPost { const hashSkeletonSearchPost = "skeletonSearchPost"; -export function isSkeletonSearchPost(v: V) { +export function isSkeletonSearchPost(v: V): v is SkeletonSearchPost & V { return is$typed(v, id, hashSkeletonSearchPost); } -export function validateSkeletonSearchPost(v: V) { +export function validateSkeletonSearchPost( + v: V, +): ValidationResult { return validate(v, id, hashSkeletonSearchPost); } @@ -31,11 +34,13 @@ export interface SkeletonSearchActor { const hashSkeletonSearchActor = "skeletonSearchActor"; -export function isSkeletonSearchActor(v: V) { +export function isSkeletonSearchActor(v: V): v is SkeletonSearchActor & V { return is$typed(v, id, hashSkeletonSearchActor); } -export function validateSkeletonSearchActor(v: V) { +export function validateSkeletonSearchActor( + v: V, +): ValidationResult { return validate(v, id, hashSkeletonSearchActor); } @@ -46,11 +51,15 @@ export interface SkeletonSearchStarterPack { const hashSkeletonSearchStarterPack = "skeletonSearchStarterPack"; -export function isSkeletonSearchStarterPack(v: V) { +export function isSkeletonSearchStarterPack( + v: V, +): v is SkeletonSearchStarterPack & V { return is$typed(v, id, hashSkeletonSearchStarterPack); } -export function validateSkeletonSearchStarterPack(v: V) { +export function validateSkeletonSearchStarterPack( + v: V, +): ValidationResult { return validate( v, id, @@ -68,11 +77,13 @@ export interface TrendingTopic { const hashTrendingTopic = "trendingTopic"; -export function isTrendingTopic(v: V) { +export function isTrendingTopic(v: V): v is TrendingTopic & V { return is$typed(v, id, hashTrendingTopic); } -export function validateTrendingTopic(v: V) { +export function validateTrendingTopic( + v: V, +): ValidationResult { return validate(v, id, hashTrendingTopic); } @@ -90,11 +101,13 @@ export interface SkeletonTrend { const hashSkeletonTrend = "skeletonTrend"; -export function isSkeletonTrend(v: V) { +export function isSkeletonTrend(v: V): v is SkeletonTrend & V { return is$typed(v, id, hashSkeletonTrend); } -export function validateSkeletonTrend(v: V) { +export function validateSkeletonTrend( + v: V, +): ValidationResult { return validate(v, id, hashSkeletonTrend); } @@ -112,11 +125,11 @@ export interface TrendView { const hashTrendView = "trendView"; -export function isTrendView(v: V) { +export function isTrendView(v: V): v is TrendView & V { return is$typed(v, id, hashTrendView); } -export function validateTrendView(v: V) { +export function validateTrendView(v: V): ValidationResult { return validate(v, id, hashTrendView); } @@ -137,11 +150,13 @@ export interface ThreadItemPost { const hashThreadItemPost = "threadItemPost"; -export function isThreadItemPost(v: V) { +export function isThreadItemPost(v: V): v is ThreadItemPost & V { return is$typed(v, id, hashThreadItemPost); } -export function validateThreadItemPost(v: V) { +export function validateThreadItemPost( + v: V, +): ValidationResult { return validate(v, id, hashThreadItemPost); } @@ -151,11 +166,15 @@ export interface ThreadItemNoUnauthenticated { const hashThreadItemNoUnauthenticated = "threadItemNoUnauthenticated"; -export function isThreadItemNoUnauthenticated(v: V) { +export function isThreadItemNoUnauthenticated( + v: V, +): v is ThreadItemNoUnauthenticated & V { return is$typed(v, id, hashThreadItemNoUnauthenticated); } -export function validateThreadItemNoUnauthenticated(v: V) { +export function validateThreadItemNoUnauthenticated( + v: V, +): ValidationResult { return validate( v, id, @@ -169,11 +188,13 @@ export interface ThreadItemNotFound { const hashThreadItemNotFound = "threadItemNotFound"; -export function isThreadItemNotFound(v: V) { +export function isThreadItemNotFound(v: V): v is ThreadItemNotFound & V { return is$typed(v, id, hashThreadItemNotFound); } -export function validateThreadItemNotFound(v: V) { +export function validateThreadItemNotFound( + v: V, +): ValidationResult { return validate(v, id, hashThreadItemNotFound); } @@ -184,11 +205,13 @@ export interface ThreadItemBlocked { const hashThreadItemBlocked = "threadItemBlocked"; -export function isThreadItemBlocked(v: V) { +export function isThreadItemBlocked(v: V): v is ThreadItemBlocked & V { return is$typed(v, id, hashThreadItemBlocked); } -export function validateThreadItemBlocked(v: V) { +export function validateThreadItemBlocked( + v: V, +): ValidationResult { return validate(v, id, hashThreadItemBlocked); } @@ -208,11 +231,13 @@ export interface AgeAssuranceState { const hashAgeAssuranceState = "ageAssuranceState"; -export function isAgeAssuranceState(v: V) { +export function isAgeAssuranceState(v: V): v is AgeAssuranceState & V { return is$typed(v, id, hashAgeAssuranceState); } -export function validateAgeAssuranceState(v: V) { +export function validateAgeAssuranceState( + v: V, +): ValidationResult { return validate(v, id, hashAgeAssuranceState); } @@ -243,10 +268,12 @@ export interface AgeAssuranceEvent { const hashAgeAssuranceEvent = "ageAssuranceEvent"; -export function isAgeAssuranceEvent(v: V) { +export function isAgeAssuranceEvent(v: V): v is AgeAssuranceEvent & V { return is$typed(v, id, hashAgeAssuranceEvent); } -export function validateAgeAssuranceEvent(v: V) { +export function validateAgeAssuranceEvent( + v: V, +): ValidationResult { return validate(v, id, hashAgeAssuranceEvent); } diff --git a/lex/types/app/bsky/unspecced/getConfig.ts b/lex/types/app/bsky/unspecced/getConfig.ts index 6498bf5..fde9af0 100644 --- a/lex/types/app/bsky/unspecced/getConfig.ts +++ b/lex/types/app/bsky/unspecced/getConfig.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -38,10 +39,12 @@ export interface LiveNowConfig { const hashLiveNowConfig = "liveNowConfig"; -export function isLiveNowConfig(v: V) { +export function isLiveNowConfig(v: V): v is LiveNowConfig & V { return is$typed(v, id, hashLiveNowConfig); } -export function validateLiveNowConfig(v: V) { +export function validateLiveNowConfig( + v: V, +): ValidationResult { return validate(v, id, hashLiveNowConfig); } diff --git a/lex/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.ts b/lex/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.ts new file mode 100644 index 0000000..12e2857 --- /dev/null +++ b/lex/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.ts @@ -0,0 +1,34 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = { + /** DID of the account making the request (not included for public/unauthenticated queries). */ + viewer?: string; + /** Category of users to get suggestions for. */ + category?: string; + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + dids: (string)[]; + /** DEPRECATED: use recIdStr instead. */ + recId?: string; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getPostThreadOtherV2.ts b/lex/types/app/bsky/unspecced/getPostThreadOtherV2.ts index 652d787..6fde3dc 100644 --- a/lex/types/app/bsky/unspecced/getPostThreadOtherV2.ts +++ b/lex/types/app/bsky/unspecced/getPostThreadOtherV2.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyUnspeccedDefs from "./defs.ts"; @@ -44,10 +45,10 @@ export interface ThreadItem { const hashThreadItem = "threadItem"; -export function isThreadItem(v: V) { +export function isThreadItem(v: V): v is ThreadItem & V { return is$typed(v, id, hashThreadItem); } -export function validateThreadItem(v: V) { +export function validateThreadItem(v: V): ValidationResult { return validate(v, id, hashThreadItem); } diff --git a/lex/types/app/bsky/unspecced/getPostThreadV2.ts b/lex/types/app/bsky/unspecced/getPostThreadV2.ts index 24d8cd9..60cc88e 100644 --- a/lex/types/app/bsky/unspecced/getPostThreadV2.ts +++ b/lex/types/app/bsky/unspecced/getPostThreadV2.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyFeedDefs from "../feed/defs.ts"; import type * as AppBskyUnspeccedDefs from "./defs.ts"; @@ -65,10 +66,10 @@ export interface ThreadItem { const hashThreadItem = "threadItem"; -export function isThreadItem(v: V) { +export function isThreadItem(v: V): v is ThreadItem & V { return is$typed(v, id, hashThreadItem); } -export function validateThreadItem(v: V) { +export function validateThreadItem(v: V): ValidationResult { return validate(v, id, hashThreadItem); } diff --git a/lex/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts b/lex/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts new file mode 100644 index 0000000..59a3792 --- /dev/null +++ b/lex/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts @@ -0,0 +1,34 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyActorDefs from "../actor/defs.ts"; + +export type QueryParams = { + /** Category of users to get suggestions for. */ + category?: string; + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + actors: (AppBskyActorDefs.ProfileView)[]; + /** DEPRECATED: use recIdStr instead. */ + recId?: string; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsers.ts b/lex/types/app/bsky/unspecced/getSuggestedUsers.ts index 4e5ebf0..59a3792 100644 --- a/lex/types/app/bsky/unspecced/getSuggestedUsers.ts +++ b/lex/types/app/bsky/unspecced/getSuggestedUsers.ts @@ -12,6 +12,10 @@ export type InputSchema = undefined; export interface OutputSchema { actors: (AppBskyActorDefs.ProfileView)[]; + /** DEPRECATED: use recIdStr instead. */ + recId?: string; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; } export type HandlerInput = void; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsersForDiscover.ts b/lex/types/app/bsky/unspecced/getSuggestedUsersForDiscover.ts new file mode 100644 index 0000000..48a09ce --- /dev/null +++ b/lex/types/app/bsky/unspecced/getSuggestedUsersForDiscover.ts @@ -0,0 +1,30 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyActorDefs from "../actor/defs.ts"; + +export type QueryParams = { + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + actors: (AppBskyActorDefs.ProfileView)[]; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.ts b/lex/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.ts new file mode 100644 index 0000000..94f4226 --- /dev/null +++ b/lex/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.ts @@ -0,0 +1,30 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = { + /** DID of the account making the request (not included for public/unauthenticated queries). */ + viewer?: string; + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + dids: (string)[]; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsersForExplore.ts b/lex/types/app/bsky/unspecced/getSuggestedUsersForExplore.ts new file mode 100644 index 0000000..5450a96 --- /dev/null +++ b/lex/types/app/bsky/unspecced/getSuggestedUsersForExplore.ts @@ -0,0 +1,32 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyActorDefs from "../actor/defs.ts"; + +export type QueryParams = { + /** Category of users to get suggestions for. */ + category?: string; + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + actors: (AppBskyActorDefs.ProfileView)[]; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.ts b/lex/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.ts new file mode 100644 index 0000000..fc34520 --- /dev/null +++ b/lex/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.ts @@ -0,0 +1,32 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = { + /** DID of the account making the request (not included for public/unauthenticated queries). */ + viewer?: string; + /** Category of users to get suggestions for. */ + category?: string; + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + dids: (string)[]; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts b/lex/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts new file mode 100644 index 0000000..5450a96 --- /dev/null +++ b/lex/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts @@ -0,0 +1,32 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type * as AppBskyActorDefs from "../actor/defs.ts"; + +export type QueryParams = { + /** Category of users to get suggestions for. */ + category?: string; + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + actors: (AppBskyActorDefs.ProfileView)[]; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.ts b/lex/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.ts new file mode 100644 index 0000000..fc34520 --- /dev/null +++ b/lex/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.ts @@ -0,0 +1,32 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +export type QueryParams = { + /** DID of the account making the request (not included for public/unauthenticated queries). */ + viewer?: string; + /** Category of users to get suggestions for. */ + category?: string; + limit: number; +}; +export type InputSchema = undefined; + +export interface OutputSchema { + dids: (string)[]; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; +} + +export type HandlerInput = void; + +export interface HandlerSuccess { + encoding: "application/json"; + body: OutputSchema; + headers?: { [key: string]: string }; +} + +export interface HandlerError { + status: number; + message?: string; +} + +export type HandlerOutput = HandlerError | HandlerSuccess; diff --git a/lex/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts b/lex/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts index 26197a3..12e2857 100644 --- a/lex/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts +++ b/lex/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts @@ -12,6 +12,10 @@ export type InputSchema = undefined; export interface OutputSchema { dids: (string)[]; + /** DEPRECATED: use recIdStr instead. */ + recId?: string; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; } export type HandlerInput = void; diff --git a/lex/types/app/bsky/unspecced/getSuggestionsSkeleton.ts b/lex/types/app/bsky/unspecced/getSuggestionsSkeleton.ts index 3d224b4..dad7910 100644 --- a/lex/types/app/bsky/unspecced/getSuggestionsSkeleton.ts +++ b/lex/types/app/bsky/unspecced/getSuggestionsSkeleton.ts @@ -18,8 +18,10 @@ export interface OutputSchema { actors: (AppBskyUnspeccedDefs.SkeletonSearchActor)[]; /** DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer. */ relativeToDid?: string; - /** Snowflake for this recommendation, use when submitting recommendation events. */ + /** DEPRECATED: use recIdStr instead. */ recId?: number; + /** Snowflake for this recommendation, use when submitting recommendation events. */ + recIdStr?: string; } export type HandlerInput = void; diff --git a/lex/types/app/bsky/unspecced/getTaggedSuggestions.ts b/lex/types/app/bsky/unspecced/getTaggedSuggestions.ts index 7572a2f..13b4440 100644 --- a/lex/types/app/bsky/unspecced/getTaggedSuggestions.ts +++ b/lex/types/app/bsky/unspecced/getTaggedSuggestions.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -41,10 +42,10 @@ export interface Suggestion { const hashSuggestion = "suggestion"; -export function isSuggestion(v: V) { +export function isSuggestion(v: V): v is Suggestion & V { return is$typed(v, id, hashSuggestion); } -export function validateSuggestion(v: V) { +export function validateSuggestion(v: V): ValidationResult { return validate(v, id, hashSuggestion); } diff --git a/lex/types/app/bsky/video/defs.ts b/lex/types/app/bsky/video/defs.ts index 8860a84..e6613c3 100644 --- a/lex/types/app/bsky/video/defs.ts +++ b/lex/types/app/bsky/video/defs.ts @@ -3,6 +3,7 @@ */ import type { BlobRef } from "@atp/lexicon"; import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -26,10 +27,10 @@ export interface JobStatus { const hashJobStatus = "jobStatus"; -export function isJobStatus(v: V) { +export function isJobStatus(v: V): v is JobStatus & V { return is$typed(v, id, hashJobStatus); } -export function validateJobStatus(v: V) { +export function validateJobStatus(v: V): ValidationResult { return validate(v, id, hashJobStatus); } diff --git a/lex/types/chat/bsky/actor/declaration.ts b/lex/types/chat/bsky/actor/declaration.ts index afe13c6..b8d9d40 100644 --- a/lex/types/chat/bsky/actor/declaration.ts +++ b/lex/types/chat/bsky/actor/declaration.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -19,11 +20,11 @@ export interface Record { const hashRecord = "main"; -export function isRecord(v: V) { +export function isRecord(v: V): v is Record & V { return is$typed(v, id, hashRecord); } -export function validateRecord(v: V) { +export function validateRecord(v: V): ValidationResult { return validate(v, id, hashRecord, true); } diff --git a/lex/types/chat/bsky/actor/defs.ts b/lex/types/chat/bsky/actor/defs.ts index 21c287a..7a41194 100644 --- a/lex/types/chat/bsky/actor/defs.ts +++ b/lex/types/chat/bsky/actor/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyActorDefs from "../../../app/bsky/actor/defs.ts"; import type * as ComAtprotoLabelDefs from "../../../com/atproto/label/defs.ts"; @@ -25,10 +26,12 @@ export interface ProfileViewBasic { const hashProfileViewBasic = "profileViewBasic"; -export function isProfileViewBasic(v: V) { +export function isProfileViewBasic(v: V): v is ProfileViewBasic & V { return is$typed(v, id, hashProfileViewBasic); } -export function validateProfileViewBasic(v: V) { +export function validateProfileViewBasic( + v: V, +): ValidationResult { return validate(v, id, hashProfileViewBasic); } diff --git a/lex/types/chat/bsky/authFullChatClient.ts b/lex/types/chat/bsky/authFullChatClient.ts new file mode 100644 index 0000000..55ddc64 --- /dev/null +++ b/lex/types/chat/bsky/authFullChatClient.ts @@ -0,0 +1,6 @@ +/** + * GENERATED CODE - DO NOT MODIFY + */ +import type { LexPermissionSet } from "@atp/lexicon"; + +export type Main = LexPermissionSet; diff --git a/lex/types/chat/bsky/convo/defs.ts b/lex/types/chat/bsky/convo/defs.ts index c15ef48..294eb7e 100644 --- a/lex/types/chat/bsky/convo/defs.ts +++ b/lex/types/chat/bsky/convo/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { type $Typed, is$typed as _is$typed } from "../../../../util.ts"; import type * as AppBskyRichtextFacet from "../../../app/bsky/richtext/facet.ts"; import type * as AppBskyEmbedRecord from "../../../app/bsky/embed/record.ts"; @@ -19,11 +20,11 @@ export interface MessageRef { const hashMessageRef = "messageRef"; -export function isMessageRef(v: V) { +export function isMessageRef(v: V): v is MessageRef & V { return is$typed(v, id, hashMessageRef); } -export function validateMessageRef(v: V) { +export function validateMessageRef(v: V): ValidationResult { return validate(v, id, hashMessageRef); } @@ -37,11 +38,13 @@ export interface MessageInput { const hashMessageInput = "messageInput"; -export function isMessageInput(v: V) { +export function isMessageInput(v: V): v is MessageInput & V { return is$typed(v, id, hashMessageInput); } -export function validateMessageInput(v: V) { +export function validateMessageInput( + v: V, +): ValidationResult { return validate(v, id, hashMessageInput); } @@ -61,11 +64,13 @@ export interface MessageView { const hashMessageView = "messageView"; -export function isMessageView(v: V) { +export function isMessageView(v: V): v is MessageView & V { return is$typed(v, id, hashMessageView); } -export function validateMessageView(v: V) { +export function validateMessageView( + v: V, +): ValidationResult { return validate(v, id, hashMessageView); } @@ -79,11 +84,13 @@ export interface DeletedMessageView { const hashDeletedMessageView = "deletedMessageView"; -export function isDeletedMessageView(v: V) { +export function isDeletedMessageView(v: V): v is DeletedMessageView & V { return is$typed(v, id, hashDeletedMessageView); } -export function validateDeletedMessageView(v: V) { +export function validateDeletedMessageView( + v: V, +): ValidationResult { return validate(v, id, hashDeletedMessageView); } @@ -94,11 +101,13 @@ export interface MessageViewSender { const hashMessageViewSender = "messageViewSender"; -export function isMessageViewSender(v: V) { +export function isMessageViewSender(v: V): v is MessageViewSender & V { return is$typed(v, id, hashMessageViewSender); } -export function validateMessageViewSender(v: V) { +export function validateMessageViewSender( + v: V, +): ValidationResult { return validate(v, id, hashMessageViewSender); } @@ -111,11 +120,13 @@ export interface ReactionView { const hashReactionView = "reactionView"; -export function isReactionView(v: V) { +export function isReactionView(v: V): v is ReactionView & V { return is$typed(v, id, hashReactionView); } -export function validateReactionView(v: V) { +export function validateReactionView( + v: V, +): ValidationResult { return validate(v, id, hashReactionView); } @@ -126,11 +137,13 @@ export interface ReactionViewSender { const hashReactionViewSender = "reactionViewSender"; -export function isReactionViewSender(v: V) { +export function isReactionViewSender(v: V): v is ReactionViewSender & V { return is$typed(v, id, hashReactionViewSender); } -export function validateReactionViewSender(v: V) { +export function validateReactionViewSender( + v: V, +): ValidationResult { return validate(v, id, hashReactionViewSender); } @@ -142,11 +155,15 @@ export interface MessageAndReactionView { const hashMessageAndReactionView = "messageAndReactionView"; -export function isMessageAndReactionView(v: V) { +export function isMessageAndReactionView( + v: V, +): v is MessageAndReactionView & V { return is$typed(v, id, hashMessageAndReactionView); } -export function validateMessageAndReactionView(v: V) { +export function validateMessageAndReactionView( + v: V, +): ValidationResult { return validate( v, id, @@ -173,11 +190,11 @@ export interface ConvoView { const hashConvoView = "convoView"; -export function isConvoView(v: V) { +export function isConvoView(v: V): v is ConvoView & V { return is$typed(v, id, hashConvoView); } -export function validateConvoView(v: V) { +export function validateConvoView(v: V): ValidationResult { return validate(v, id, hashConvoView); } @@ -189,11 +206,13 @@ export interface LogBeginConvo { const hashLogBeginConvo = "logBeginConvo"; -export function isLogBeginConvo(v: V) { +export function isLogBeginConvo(v: V): v is LogBeginConvo & V { return is$typed(v, id, hashLogBeginConvo); } -export function validateLogBeginConvo(v: V) { +export function validateLogBeginConvo( + v: V, +): ValidationResult { return validate(v, id, hashLogBeginConvo); } @@ -205,11 +224,13 @@ export interface LogAcceptConvo { const hashLogAcceptConvo = "logAcceptConvo"; -export function isLogAcceptConvo(v: V) { +export function isLogAcceptConvo(v: V): v is LogAcceptConvo & V { return is$typed(v, id, hashLogAcceptConvo); } -export function validateLogAcceptConvo(v: V) { +export function validateLogAcceptConvo( + v: V, +): ValidationResult { return validate(v, id, hashLogAcceptConvo); } @@ -221,11 +242,13 @@ export interface LogLeaveConvo { const hashLogLeaveConvo = "logLeaveConvo"; -export function isLogLeaveConvo(v: V) { +export function isLogLeaveConvo(v: V): v is LogLeaveConvo & V { return is$typed(v, id, hashLogLeaveConvo); } -export function validateLogLeaveConvo(v: V) { +export function validateLogLeaveConvo( + v: V, +): ValidationResult { return validate(v, id, hashLogLeaveConvo); } @@ -237,11 +260,13 @@ export interface LogMuteConvo { const hashLogMuteConvo = "logMuteConvo"; -export function isLogMuteConvo(v: V) { +export function isLogMuteConvo(v: V): v is LogMuteConvo & V { return is$typed(v, id, hashLogMuteConvo); } -export function validateLogMuteConvo(v: V) { +export function validateLogMuteConvo( + v: V, +): ValidationResult { return validate(v, id, hashLogMuteConvo); } @@ -253,11 +278,13 @@ export interface LogUnmuteConvo { const hashLogUnmuteConvo = "logUnmuteConvo"; -export function isLogUnmuteConvo(v: V) { +export function isLogUnmuteConvo(v: V): v is LogUnmuteConvo & V { return is$typed(v, id, hashLogUnmuteConvo); } -export function validateLogUnmuteConvo(v: V) { +export function validateLogUnmuteConvo( + v: V, +): ValidationResult { return validate(v, id, hashLogUnmuteConvo); } @@ -270,11 +297,13 @@ export interface LogCreateMessage { const hashLogCreateMessage = "logCreateMessage"; -export function isLogCreateMessage(v: V) { +export function isLogCreateMessage(v: V): v is LogCreateMessage & V { return is$typed(v, id, hashLogCreateMessage); } -export function validateLogCreateMessage(v: V) { +export function validateLogCreateMessage( + v: V, +): ValidationResult { return validate(v, id, hashLogCreateMessage); } @@ -287,11 +316,13 @@ export interface LogDeleteMessage { const hashLogDeleteMessage = "logDeleteMessage"; -export function isLogDeleteMessage(v: V) { +export function isLogDeleteMessage(v: V): v is LogDeleteMessage & V { return is$typed(v, id, hashLogDeleteMessage); } -export function validateLogDeleteMessage(v: V) { +export function validateLogDeleteMessage( + v: V, +): ValidationResult { return validate(v, id, hashLogDeleteMessage); } @@ -304,11 +335,13 @@ export interface LogReadMessage { const hashLogReadMessage = "logReadMessage"; -export function isLogReadMessage(v: V) { +export function isLogReadMessage(v: V): v is LogReadMessage & V { return is$typed(v, id, hashLogReadMessage); } -export function validateLogReadMessage(v: V) { +export function validateLogReadMessage( + v: V, +): ValidationResult { return validate(v, id, hashLogReadMessage); } @@ -322,11 +355,13 @@ export interface LogAddReaction { const hashLogAddReaction = "logAddReaction"; -export function isLogAddReaction(v: V) { +export function isLogAddReaction(v: V): v is LogAddReaction & V { return is$typed(v, id, hashLogAddReaction); } -export function validateLogAddReaction(v: V) { +export function validateLogAddReaction( + v: V, +): ValidationResult { return validate(v, id, hashLogAddReaction); } @@ -340,10 +375,12 @@ export interface LogRemoveReaction { const hashLogRemoveReaction = "logRemoveReaction"; -export function isLogRemoveReaction(v: V) { +export function isLogRemoveReaction(v: V): v is LogRemoveReaction & V { return is$typed(v, id, hashLogRemoveReaction); } -export function validateLogRemoveReaction(v: V) { +export function validateLogRemoveReaction( + v: V, +): ValidationResult { return validate(v, id, hashLogRemoveReaction); } diff --git a/lex/types/chat/bsky/convo/sendMessageBatch.ts b/lex/types/chat/bsky/convo/sendMessageBatch.ts index fb3cf8c..e74cb2b 100644 --- a/lex/types/chat/bsky/convo/sendMessageBatch.ts +++ b/lex/types/chat/bsky/convo/sendMessageBatch.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as ChatBskyConvoDefs from "./defs.ts"; @@ -44,10 +45,10 @@ export interface BatchItem { const hashBatchItem = "batchItem"; -export function isBatchItem(v: V) { +export function isBatchItem(v: V): v is BatchItem & V { return is$typed(v, id, hashBatchItem); } -export function validateBatchItem(v: V) { +export function validateBatchItem(v: V): ValidationResult { return validate(v, id, hashBatchItem); } diff --git a/lex/types/chat/bsky/moderation/getActorMetadata.ts b/lex/types/chat/bsky/moderation/getActorMetadata.ts index a04ee8c..1158265 100644 --- a/lex/types/chat/bsky/moderation/getActorMetadata.ts +++ b/lex/types/chat/bsky/moderation/getActorMetadata.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -43,10 +44,10 @@ export interface Metadata { const hashMetadata = "metadata"; -export function isMetadata(v: V) { +export function isMetadata(v: V): v is Metadata & V { return is$typed(v, id, hashMetadata); } -export function validateMetadata(v: V) { +export function validateMetadata(v: V): ValidationResult { return validate(v, id, hashMetadata); } diff --git a/lex/types/com/atproto/admin/defs.ts b/lex/types/com/atproto/admin/defs.ts index 216c362..d1c787b 100644 --- a/lex/types/com/atproto/admin/defs.ts +++ b/lex/types/com/atproto/admin/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; import type * as ComAtprotoServerDefs from "../server/defs.ts"; @@ -16,11 +17,11 @@ export interface StatusAttr { const hashStatusAttr = "statusAttr"; -export function isStatusAttr(v: V) { +export function isStatusAttr(v: V): v is StatusAttr & V { return is$typed(v, id, hashStatusAttr); } -export function validateStatusAttr(v: V) { +export function validateStatusAttr(v: V): ValidationResult { return validate(v, id, hashStatusAttr); } @@ -42,11 +43,13 @@ export interface AccountView { const hashAccountView = "accountView"; -export function isAccountView(v: V) { +export function isAccountView(v: V): v is AccountView & V { return is$typed(v, id, hashAccountView); } -export function validateAccountView(v: V) { +export function validateAccountView( + v: V, +): ValidationResult { return validate(v, id, hashAccountView); } @@ -57,11 +60,11 @@ export interface RepoRef { const hashRepoRef = "repoRef"; -export function isRepoRef(v: V) { +export function isRepoRef(v: V): v is RepoRef & V { return is$typed(v, id, hashRepoRef); } -export function validateRepoRef(v: V) { +export function validateRepoRef(v: V): ValidationResult { return validate(v, id, hashRepoRef); } @@ -74,11 +77,13 @@ export interface RepoBlobRef { const hashRepoBlobRef = "repoBlobRef"; -export function isRepoBlobRef(v: V) { +export function isRepoBlobRef(v: V): v is RepoBlobRef & V { return is$typed(v, id, hashRepoBlobRef); } -export function validateRepoBlobRef(v: V) { +export function validateRepoBlobRef( + v: V, +): ValidationResult { return validate(v, id, hashRepoBlobRef); } @@ -90,10 +95,12 @@ export interface ThreatSignature { const hashThreatSignature = "threatSignature"; -export function isThreatSignature(v: V) { +export function isThreatSignature(v: V): v is ThreatSignature & V { return is$typed(v, id, hashThreatSignature); } -export function validateThreatSignature(v: V) { +export function validateThreatSignature( + v: V, +): ValidationResult { return validate(v, id, hashThreatSignature); } diff --git a/lex/types/com/atproto/identity/defs.ts b/lex/types/com/atproto/identity/defs.ts index 09fe739..78514b0 100644 --- a/lex/types/com/atproto/identity/defs.ts +++ b/lex/types/com/atproto/identity/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -18,10 +19,12 @@ export interface IdentityInfo { const hashIdentityInfo = "identityInfo"; -export function isIdentityInfo(v: V) { +export function isIdentityInfo(v: V): v is IdentityInfo & V { return is$typed(v, id, hashIdentityInfo); } -export function validateIdentityInfo(v: V) { +export function validateIdentityInfo( + v: V, +): ValidationResult { return validate(v, id, hashIdentityInfo); } diff --git a/lex/types/com/atproto/label/defs.ts b/lex/types/com/atproto/label/defs.ts index 056da34..20ed5a2 100644 --- a/lex/types/com/atproto/label/defs.ts +++ b/lex/types/com/atproto/label/defs.ts @@ -2,6 +2,7 @@ * GENERATED CODE - DO NOT MODIFY */ import { validate as _validate } from "../../../../lexicons.ts"; +import type { ValidationResult } from "@atp/lexicon"; import { is$typed as _is$typed } from "../../../../util.ts"; const is$typed = _is$typed, validate = _validate; @@ -32,11 +33,11 @@ export interface Label { const hashLabel = "label"; -export function isLabel(v: V) { +export function isLabel(v: V): v is Label & V { return is$typed(v, id, hashLabel); } -export function validateLabel(v: V) { +export function validateLabel(v: V): ValidationResult