import { Lexicons, ValidationResult } from '@atproto/lexicon'; export declare const schemaDict: { readonly AppBskyActorDefs: { readonly id: "app.bsky.actor.defs"; readonly defs: { readonly nux: { readonly type: "object"; readonly required: ["id", "completed"]; readonly properties: { readonly id: { readonly type: "string"; readonly maxLength: 100; }; readonly data: { readonly type: "string"; readonly maxLength: 3000; readonly description: "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters."; readonly maxGraphemes: 300; }; readonly completed: { readonly type: "boolean"; readonly default: false; }; readonly expiresAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "The date and time at which the NUX will expire and should be considered completed."; }; }; readonly description: "A new user experiences (NUX) storage object"; }; readonly mutedWord: { readonly type: "object"; readonly required: ["value", "targets"]; readonly properties: { readonly id: { readonly type: "string"; }; readonly value: { readonly type: "string"; readonly maxLength: 10000; readonly description: "The muted word itself."; readonly maxGraphemes: 1000; }; readonly targets: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#mutedWordTarget"; readonly type: "ref"; }; readonly description: "The intended targets of the muted word."; }; readonly expiresAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "The date and time at which the muted word will expire and no longer be applied."; }; readonly actorTarget: { readonly type: "string"; readonly default: "all"; readonly description: "Groups of users to apply the muted word to. If undefined, applies to all users."; readonly knownValues: ["all", "exclude-following"]; }; }; readonly description: "A word that the account owner has muted."; }; readonly savedFeed: { readonly type: "object"; readonly required: ["id", "type", "value", "pinned"]; readonly properties: { readonly id: { readonly type: "string"; }; readonly type: { readonly type: "string"; readonly knownValues: ["feed", "list", "timeline"]; }; readonly value: { readonly type: "string"; }; readonly pinned: { readonly type: "boolean"; }; }; }; readonly statusView: { readonly type: "object"; readonly required: ["status", "record"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly embed: { readonly refs: ["lex:app.bsky.embed.external#view"]; readonly type: "union"; readonly description: "An optional embed associated with the status."; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly status: { readonly type: "string"; readonly description: "The status for the account."; readonly knownValues: ["app.bsky.actor.status#live"]; }; readonly isActive: { readonly type: "boolean"; readonly description: "True if the status is not expired, false if it is expired. Only present if expiration was set."; }; readonly expiresAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "The date when this status will expire. The application might choose to no longer return the status after expiration."; }; readonly isDisabled: { readonly type: "boolean"; readonly description: "True if the user's go-live access has been disabled by a moderator, false otherwise."; }; }; }; readonly preferences: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.actor.defs#adultContentPref", "lex:app.bsky.actor.defs#contentLabelPref", "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", "lex:app.bsky.actor.defs#mutedWordsPref", "lex:app.bsky.actor.defs#hiddenPostsPref", "lex:app.bsky.actor.defs#bskyAppStatePref", "lex:app.bsky.actor.defs#labelersPref", "lex:app.bsky.actor.defs#postInteractionSettingsPref", "lex:app.bsky.actor.defs#verificationPrefs", "lex:app.bsky.actor.defs#liveEventPreferences"]; readonly type: "union"; }; }; readonly profileView: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly handle: { readonly type: "string"; readonly format: "handle"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly status: { readonly ref: "lex:app.bsky.actor.defs#statusView"; readonly type: "ref"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; readonly pronouns: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly associated: { readonly ref: "lex:app.bsky.actor.defs#profileAssociated"; readonly type: "ref"; }; readonly description: { readonly type: "string"; readonly maxLength: 2560; readonly maxGraphemes: 256; }; readonly displayName: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly verification: { readonly ref: "lex:app.bsky.actor.defs#verificationState"; readonly type: "ref"; }; }; }; readonly viewerState: { readonly type: "object"; readonly properties: { readonly muted: { readonly type: "boolean"; }; readonly blocking: { readonly type: "string"; readonly format: "at-uri"; }; readonly blockedBy: { readonly type: "boolean"; }; readonly following: { readonly type: "string"; readonly format: "at-uri"; }; readonly followedBy: { readonly type: "string"; readonly format: "at-uri"; }; readonly mutedByList: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; readonly blockingByList: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; readonly knownFollowers: { readonly ref: "lex:app.bsky.actor.defs#knownFollowers"; readonly type: "ref"; readonly description: "This property is present only in selected cases, as an optimization."; }; readonly activitySubscription: { readonly ref: "lex:app.bsky.notification.defs#activitySubscription"; readonly type: "ref"; readonly description: "This property is present only in selected cases, as an optimization."; }; }; readonly description: "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests."; }; readonly feedViewPref: { readonly type: "object"; readonly required: ["feed"]; readonly properties: { readonly feed: { readonly type: "string"; readonly description: "The URI of the feed, or an identifier which describes the feed."; }; readonly hideReplies: { readonly type: "boolean"; readonly description: "Hide replies in the feed."; }; readonly hideReposts: { readonly type: "boolean"; readonly description: "Hide reposts in the feed."; }; readonly hideQuotePosts: { readonly type: "boolean"; readonly description: "Hide quote posts in the feed."; }; readonly hideRepliesByLikeCount: { readonly type: "integer"; readonly description: "Hide replies in the feed if they do not have this number of likes."; }; readonly hideRepliesByUnfollowed: { readonly type: "boolean"; readonly default: true; readonly description: "Hide replies in the feed if they are not by followed users."; }; }; }; readonly labelersPref: { readonly type: "object"; readonly required: ["labelers"]; readonly properties: { readonly labelers: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#labelerPrefItem"; readonly type: "ref"; }; }; }; }; readonly interestsPref: { readonly type: "object"; readonly required: ["tags"]; readonly properties: { readonly tags: { readonly type: "array"; readonly items: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly maxLength: 100; readonly description: "A list of tags which describe the account owner's interests gathered during onboarding."; }; }; }; readonly knownFollowers: { readonly type: "object"; readonly required: ["count", "followers"]; readonly properties: { readonly count: { readonly type: "integer"; }; readonly followers: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly maxLength: 5; readonly minLength: 0; }; }; readonly description: "The subject's followers whom you also follow"; }; readonly mutedWordsPref: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly items: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#mutedWord"; readonly type: "ref"; }; readonly description: "A list of words the account owner has muted."; }; }; }; readonly savedFeedsPref: { readonly type: "object"; readonly required: ["pinned", "saved"]; readonly properties: { readonly saved: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly pinned: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly timelineIndex: { readonly type: "integer"; }; }; }; readonly threadViewPref: { readonly type: "object"; readonly properties: { readonly sort: { readonly type: "string"; readonly description: "Sorting mode for threads."; readonly knownValues: ["oldest", "newest", "most-likes", "random", "hotness"]; }; }; }; readonly declaredAgePref: { readonly type: "object"; readonly properties: { readonly isOverAge13: { readonly type: "boolean"; readonly description: "Indicates if the user has declared that they are over 13 years of age."; }; readonly isOverAge16: { readonly type: "boolean"; readonly description: "Indicates if the user has declared that they are over 16 years of age."; }; readonly isOverAge18: { readonly type: "boolean"; readonly description: "Indicates if the user has declared that they are over 18 years of age."; }; }; readonly 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."; }; readonly hiddenPostsPref: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly items: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly description: "A list of URIs of posts the account owner has hidden."; }; }; }; readonly labelerPrefItem: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; }; }; readonly mutedWordTarget: { readonly type: "string"; readonly maxLength: 640; readonly knownValues: ["content", "tag"]; readonly maxGraphemes: 64; }; readonly adultContentPref: { readonly type: "object"; readonly required: ["enabled"]; readonly properties: { readonly enabled: { readonly type: "boolean"; readonly default: false; }; }; }; readonly bskyAppStatePref: { readonly type: "object"; readonly properties: { readonly nuxs: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#nux"; readonly type: "ref"; }; readonly maxLength: 100; readonly description: "Storage for NUXs the user has encountered."; }; readonly queuedNudges: { readonly type: "array"; readonly items: { readonly type: "string"; readonly maxLength: 100; }; readonly maxLength: 1000; readonly description: "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user."; }; readonly activeProgressGuide: { readonly ref: "lex:app.bsky.actor.defs#bskyAppProgressGuide"; readonly type: "ref"; }; }; readonly description: "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this."; }; readonly contentLabelPref: { readonly type: "object"; readonly required: ["label", "visibility"]; readonly properties: { readonly label: { readonly type: "string"; }; readonly labelerDid: { readonly type: "string"; readonly format: "did"; readonly description: "Which labeler does this preference apply to? If undefined, applies globally."; }; readonly visibility: { readonly type: "string"; readonly knownValues: ["ignore", "show", "warn", "hide"]; }; }; }; readonly profileViewBasic: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly handle: { readonly type: "string"; readonly format: "handle"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly status: { readonly ref: "lex:app.bsky.actor.defs#statusView"; readonly type: "ref"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; readonly pronouns: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly associated: { readonly ref: "lex:app.bsky.actor.defs#profileAssociated"; readonly type: "ref"; }; readonly displayName: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly verification: { readonly ref: "lex:app.bsky.actor.defs#verificationState"; readonly type: "ref"; }; }; }; readonly savedFeedsPrefV2: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly items: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#savedFeed"; readonly type: "ref"; }; }; }; }; readonly verificationView: { readonly type: "object"; readonly required: ["issuer", "uri", "isValid", "createdAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "The AT-URI of the verification record."; }; readonly issuer: { readonly type: "string"; readonly format: "did"; readonly description: "The user who issued this verification."; }; readonly isValid: { readonly type: "boolean"; readonly description: "True if the verification passes validation, otherwise false."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "Timestamp when the verification was created."; }; }; readonly description: "An individual verification for an associated subject."; }; readonly profileAssociated: { readonly type: "object"; readonly properties: { readonly chat: { readonly ref: "lex:app.bsky.actor.defs#profileAssociatedChat"; readonly type: "ref"; }; readonly germ: { readonly ref: "lex:app.bsky.actor.defs#profileAssociatedGerm"; readonly type: "ref"; }; readonly lists: { readonly type: "integer"; }; readonly labeler: { readonly type: "boolean"; }; readonly feedgens: { readonly type: "integer"; }; readonly starterPacks: { readonly type: "integer"; }; readonly activitySubscription: { readonly ref: "lex:app.bsky.actor.defs#profileAssociatedActivitySubscription"; readonly type: "ref"; }; }; }; readonly verificationPrefs: { readonly type: "object"; readonly required: []; readonly properties: { readonly hideBadges: { readonly type: "boolean"; readonly default: false; readonly description: "Hide the blue check badges for verified accounts and trusted verifiers."; }; }; readonly description: "Preferences for how verified accounts appear in the app."; }; readonly verificationState: { readonly type: "object"; readonly required: ["verifications", "verifiedStatus", "trustedVerifierStatus"]; readonly properties: { readonly verifications: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#verificationView"; readonly type: "ref"; }; readonly description: "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included."; }; readonly verifiedStatus: { readonly type: "string"; readonly description: "The user's status as a verified account."; readonly knownValues: ["valid", "invalid", "none"]; }; readonly trustedVerifierStatus: { readonly type: "string"; readonly description: "The user's status as a trusted verifier."; readonly knownValues: ["valid", "invalid", "none"]; }; }; readonly description: "Represents the verification information about the user this object is attached to."; }; readonly personalDetailsPref: { readonly type: "object"; readonly properties: { readonly birthDate: { readonly type: "string"; readonly format: "datetime"; readonly description: "The birth date of account owner."; }; }; }; readonly profileViewDetailed: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly banner: { readonly type: "string"; readonly format: "uri"; }; readonly handle: { readonly type: "string"; readonly format: "handle"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly status: { readonly ref: "lex:app.bsky.actor.defs#statusView"; readonly type: "ref"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; readonly website: { readonly type: "string"; readonly format: "uri"; }; readonly pronouns: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly associated: { readonly ref: "lex:app.bsky.actor.defs#profileAssociated"; readonly type: "ref"; }; readonly pinnedPost: { readonly ref: "lex:com.atproto.repo.strongRef"; readonly type: "ref"; }; readonly postsCount: { readonly type: "integer"; }; readonly description: { readonly type: "string"; readonly maxLength: 2560; readonly maxGraphemes: 256; }; readonly displayName: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly followsCount: { readonly type: "integer"; }; readonly verification: { readonly ref: "lex:app.bsky.actor.defs#verificationState"; readonly type: "ref"; }; readonly followersCount: { readonly type: "integer"; }; readonly joinedViaStarterPack: { readonly ref: "lex:app.bsky.graph.defs#starterPackViewBasic"; readonly type: "ref"; }; }; }; readonly bskyAppProgressGuide: { readonly type: "object"; readonly required: ["guide"]; readonly properties: { readonly guide: { readonly type: "string"; readonly maxLength: 100; }; }; readonly description: "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress."; }; readonly liveEventPreferences: { readonly type: "object"; readonly properties: { readonly hideAllFeeds: { readonly type: "boolean"; readonly default: false; readonly description: "Whether to hide all feeds from live events."; }; readonly hiddenFeedIds: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly description: "A list of feed IDs that the user has hidden from live events."; }; }; readonly description: "Preferences for live events."; }; readonly profileAssociatedChat: { readonly type: "object"; readonly required: ["allowIncoming"]; readonly properties: { readonly allowIncoming: { readonly type: "string"; readonly knownValues: ["all", "none", "following"]; }; }; }; readonly profileAssociatedGerm: { readonly type: "object"; readonly required: ["showButtonTo", "messageMeUrl"]; readonly properties: { readonly messageMeUrl: { readonly type: "string"; readonly format: "uri"; }; readonly showButtonTo: { readonly type: "string"; readonly knownValues: ["usersIFollow", "everyone"]; }; }; }; readonly postInteractionSettingsPref: { readonly type: "object"; readonly required: []; readonly properties: { readonly threadgateAllowRules: { readonly type: "array"; readonly items: { readonly 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"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply."; }; readonly postgateEmbeddingRules: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.feed.postgate#disableRule"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed."; }; }; readonly description: "Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly."; }; readonly profileAssociatedActivitySubscription: { readonly type: "object"; readonly required: ["allowSubscriptions"]; readonly properties: { readonly allowSubscriptions: { readonly type: "string"; readonly knownValues: ["followers", "mutuals", "none"]; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyEmbedDefs: { readonly id: "app.bsky.embed.defs"; readonly defs: { readonly aspectRatio: { readonly type: "object"; readonly required: ["width", "height"]; readonly properties: { readonly width: { readonly type: "integer"; readonly minimum: 1; }; readonly height: { readonly type: "integer"; readonly minimum: 1; }; }; readonly description: "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyEmbedExternal: { readonly id: "app.bsky.embed.external"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["external"]; readonly properties: { readonly external: { readonly ref: "lex:app.bsky.embed.external#external"; readonly type: "ref"; }; }; readonly description: "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post)."; }; readonly view: { readonly type: "object"; readonly required: ["external"]; readonly properties: { readonly external: { readonly ref: "lex:app.bsky.embed.external#viewExternal"; readonly type: "ref"; }; }; }; readonly external: { readonly type: "object"; readonly required: ["uri", "title", "description"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "uri"; }; readonly thumb: { readonly type: "blob"; readonly accept: ["image/*"]; readonly maxSize: 1000000; }; readonly title: { readonly type: "string"; }; readonly description: { readonly type: "string"; }; }; }; readonly viewExternal: { readonly type: "object"; readonly required: ["uri", "title", "description"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "uri"; }; readonly thumb: { readonly type: "string"; readonly format: "uri"; }; readonly title: { readonly type: "string"; }; readonly description: { readonly type: "string"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyEmbedImages: { readonly id: "app.bsky.embed.images"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["images"]; readonly properties: { readonly images: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.embed.images#image"; readonly type: "ref"; }; readonly maxLength: 4; }; }; }; readonly view: { readonly type: "object"; readonly required: ["images"]; readonly properties: { readonly images: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.embed.images#viewImage"; readonly type: "ref"; }; readonly maxLength: 4; }; }; }; readonly image: { readonly type: "object"; readonly required: ["image", "alt"]; readonly properties: { readonly alt: { readonly type: "string"; readonly description: "Alt text description of the image, for accessibility."; }; readonly image: { readonly type: "blob"; readonly accept: ["image/*"]; readonly maxSize: 2000000; readonly description: "The raw image file. May be up to 2 MB, formerly limited to 1 MB."; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; }; }; readonly viewImage: { readonly type: "object"; readonly required: ["thumb", "fullsize", "alt"]; readonly properties: { readonly alt: { readonly type: "string"; readonly description: "Alt text description of the image, for accessibility."; }; readonly thumb: { readonly type: "string"; readonly format: "uri"; readonly description: "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."; }; readonly fullsize: { readonly type: "string"; readonly format: "uri"; readonly 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."; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly description: "A set of images embedded in a Bluesky record (eg, a post)."; }; readonly AppBskyEmbedRecord: { readonly id: "app.bsky.embed.record"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["record"]; readonly properties: { readonly record: { readonly ref: "lex:com.atproto.repo.strongRef"; readonly type: "ref"; }; }; }; readonly view: { readonly type: "object"; readonly required: ["record"]; readonly properties: { readonly record: { readonly 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"]; readonly type: "union"; }; }; }; readonly viewRecord: { readonly type: "object"; readonly required: ["uri", "cid", "author", "value", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly value: { readonly type: "unknown"; readonly description: "The record data itself."; }; readonly author: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly embeds: { readonly type: "array"; readonly items: { readonly 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"]; readonly type: "union"; }; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; }; readonly quoteCount: { readonly type: "integer"; }; readonly replyCount: { readonly type: "integer"; }; readonly repostCount: { readonly type: "integer"; }; }; }; readonly viewBlocked: { readonly type: "object"; readonly required: ["uri", "blocked", "author"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly author: { readonly ref: "lex:app.bsky.feed.defs#blockedAuthor"; readonly type: "ref"; }; readonly blocked: { readonly type: "boolean"; readonly const: true; }; }; }; readonly viewDetached: { readonly type: "object"; readonly required: ["uri", "detached"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly detached: { readonly type: "boolean"; readonly const: true; }; }; }; readonly viewNotFound: { readonly type: "object"; readonly required: ["uri", "notFound"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly notFound: { readonly type: "boolean"; readonly const: true; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly 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."; }; readonly AppBskyEmbedRecordWithMedia: { readonly id: "app.bsky.embed.recordWithMedia"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["record", "media"]; readonly properties: { readonly media: { readonly refs: ["lex:app.bsky.embed.images", "lex:app.bsky.embed.video", "lex:app.bsky.embed.external"]; readonly type: "union"; }; readonly record: { readonly ref: "lex:app.bsky.embed.record"; readonly type: "ref"; }; }; }; readonly view: { readonly type: "object"; readonly required: ["record", "media"]; readonly properties: { readonly media: { readonly refs: ["lex:app.bsky.embed.images#view", "lex:app.bsky.embed.video#view", "lex:app.bsky.embed.external#view"]; readonly type: "union"; }; readonly record: { readonly ref: "lex:app.bsky.embed.record#view"; readonly type: "ref"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly 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."; }; readonly AppBskyEmbedVideo: { readonly id: "app.bsky.embed.video"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["video"]; readonly properties: { readonly alt: { readonly type: "string"; readonly maxLength: 10000; readonly description: "Alt text description of the video, for accessibility."; readonly maxGraphemes: 1000; }; readonly video: { readonly type: "blob"; readonly accept: ["video/mp4"]; readonly maxSize: 100000000; readonly description: "The mp4 video file. May be up to 100mb, formerly limited to 50mb."; }; readonly captions: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.embed.video#caption"; readonly type: "ref"; }; readonly maxLength: 20; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; readonly presentation: { readonly type: "string"; readonly description: "A hint to the client about how to present the video."; readonly knownValues: ["default", "gif"]; }; }; }; readonly view: { readonly type: "object"; readonly required: ["cid", "playlist"]; readonly properties: { readonly alt: { readonly type: "string"; readonly maxLength: 10000; readonly maxGraphemes: 1000; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly playlist: { readonly type: "string"; readonly format: "uri"; }; readonly thumbnail: { readonly type: "string"; readonly format: "uri"; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; readonly presentation: { readonly type: "string"; readonly description: "A hint to the client about how to present the video."; readonly knownValues: ["default", "gif"]; }; }; }; readonly caption: { readonly type: "object"; readonly required: ["lang", "file"]; readonly properties: { readonly file: { readonly type: "blob"; readonly accept: ["text/vtt"]; readonly maxSize: 20000; }; readonly lang: { readonly type: "string"; readonly format: "language"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly description: "A video embedded in a Bluesky record (eg, a post)."; }; readonly AppBskyFeedDefs: { readonly id: "app.bsky.feed.defs"; readonly defs: { readonly postView: { readonly type: "object"; readonly required: ["uri", "cid", "author", "record", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly embed: { readonly 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"]; readonly type: "union"; }; readonly author: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly viewer: { readonly ref: "lex:app.bsky.feed.defs#viewerState"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; }; readonly quoteCount: { readonly type: "integer"; }; readonly replyCount: { readonly type: "integer"; }; readonly threadgate: { readonly ref: "lex:app.bsky.feed.defs#threadgateView"; readonly type: "ref"; }; readonly repostCount: { readonly type: "integer"; }; readonly bookmarkCount: { readonly type: "integer"; }; }; }; readonly replyRef: { readonly type: "object"; readonly required: ["root", "parent"]; readonly properties: { readonly root: { readonly refs: ["lex:app.bsky.feed.defs#postView", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; readonly parent: { readonly refs: ["lex:app.bsky.feed.defs#postView", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; readonly grandparentAuthor: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; readonly description: "When parent is a reply to another post, this is the author of that post."; }; }; }; readonly reasonPin: { readonly type: "object"; readonly properties: {}; }; readonly blockedPost: { readonly type: "object"; readonly required: ["uri", "blocked", "author"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly author: { readonly ref: "lex:app.bsky.feed.defs#blockedAuthor"; readonly type: "ref"; }; readonly blocked: { readonly type: "boolean"; readonly const: true; }; }; }; readonly interaction: { readonly type: "object"; readonly properties: { readonly item: { readonly type: "string"; readonly format: "at-uri"; }; readonly event: { readonly type: "string"; readonly knownValues: ["app.bsky.feed.defs#requestLess", "app.bsky.feed.defs#requestMore", "app.bsky.feed.defs#clickthroughItem", "app.bsky.feed.defs#clickthroughAuthor", "app.bsky.feed.defs#clickthroughReposter", "app.bsky.feed.defs#clickthroughEmbed", "app.bsky.feed.defs#interactionSeen", "app.bsky.feed.defs#interactionLike", "app.bsky.feed.defs#interactionRepost", "app.bsky.feed.defs#interactionReply", "app.bsky.feed.defs#interactionQuote", "app.bsky.feed.defs#interactionShare"]; }; readonly reqId: { readonly type: "string"; readonly maxLength: 100; readonly description: "Unique identifier per request that may be passed back alongside interactions."; }; readonly feedContext: { readonly type: "string"; readonly maxLength: 2000; readonly description: "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton."; }; }; }; readonly requestLess: { readonly type: "token"; readonly description: "Request that less content like the given feed item be shown in the feed"; }; readonly requestMore: { readonly type: "token"; readonly description: "Request that more content like the given feed item be shown in the feed"; }; readonly viewerState: { readonly type: "object"; readonly properties: { readonly like: { readonly type: "string"; readonly format: "at-uri"; }; readonly pinned: { readonly type: "boolean"; }; readonly repost: { readonly type: "string"; readonly format: "at-uri"; }; readonly bookmarked: { readonly type: "boolean"; }; readonly threadMuted: { readonly type: "boolean"; }; readonly replyDisabled: { readonly type: "boolean"; }; readonly embeddingDisabled: { readonly type: "boolean"; }; }; readonly description: "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."; }; readonly feedViewPost: { readonly type: "object"; readonly required: ["post"]; readonly properties: { readonly post: { readonly ref: "lex:app.bsky.feed.defs#postView"; readonly type: "ref"; }; readonly reply: { readonly ref: "lex:app.bsky.feed.defs#replyRef"; readonly type: "ref"; }; readonly reqId: { readonly type: "string"; readonly maxLength: 100; readonly description: "Unique identifier per request that may be passed back alongside interactions."; }; readonly reason: { readonly refs: ["lex:app.bsky.feed.defs#reasonRepost", "lex:app.bsky.feed.defs#reasonPin"]; readonly type: "union"; }; readonly feedContext: { readonly type: "string"; readonly maxLength: 2000; readonly description: "Context provided by feed generator that may be passed back alongside interactions."; }; }; }; readonly notFoundPost: { readonly type: "object"; readonly required: ["uri", "notFound"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly notFound: { readonly type: "boolean"; readonly const: true; }; }; }; readonly reasonRepost: { readonly type: "object"; readonly required: ["by", "indexedAt"]; readonly properties: { readonly by: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly blockedAuthor: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; }; }; readonly generatorView: { readonly type: "object"; readonly required: ["uri", "cid", "did", "creator", "displayName", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly did: { readonly type: "string"; readonly format: "did"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.feed.defs#generatorViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; readonly minimum: 0; }; readonly contentMode: { readonly type: "string"; readonly knownValues: ["app.bsky.feed.defs#contentModeUnspecified", "app.bsky.feed.defs#contentModeVideo"]; }; readonly description: { readonly type: "string"; readonly maxLength: 3000; readonly maxGraphemes: 300; }; readonly displayName: { readonly type: "string"; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.richtext.facet"; readonly type: "ref"; }; }; readonly acceptsInteractions: { readonly type: "boolean"; }; }; }; readonly threadContext: { readonly type: "object"; readonly properties: { readonly rootAuthorLike: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly description: "Metadata about this post within the context of the thread it is in."; }; readonly threadViewPost: { readonly type: "object"; readonly required: ["post"]; readonly properties: { readonly post: { readonly ref: "lex:app.bsky.feed.defs#postView"; readonly type: "ref"; }; readonly parent: { readonly refs: ["lex:app.bsky.feed.defs#threadViewPost", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; readonly replies: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.feed.defs#threadViewPost", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; }; readonly threadContext: { readonly ref: "lex:app.bsky.feed.defs#threadContext"; readonly type: "ref"; }; }; }; readonly threadgateView: { readonly type: "object"; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly lists: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; }; }; readonly interactionLike: { readonly type: "token"; readonly description: "User liked the feed item"; }; readonly interactionSeen: { readonly type: "token"; readonly description: "Feed item was seen by user"; }; readonly clickthroughItem: { readonly type: "token"; readonly description: "User clicked through to the feed item"; }; readonly contentModeVideo: { readonly type: "token"; readonly description: "Declares the feed generator returns posts containing app.bsky.embed.video embeds."; }; readonly interactionQuote: { readonly type: "token"; readonly description: "User quoted the feed item"; }; readonly interactionReply: { readonly type: "token"; readonly description: "User replied to the feed item"; }; readonly interactionShare: { readonly type: "token"; readonly description: "User shared the feed item"; }; readonly skeletonFeedPost: { readonly type: "object"; readonly required: ["post"]; readonly properties: { readonly post: { readonly type: "string"; readonly format: "at-uri"; }; readonly reason: { readonly refs: ["lex:app.bsky.feed.defs#skeletonReasonRepost", "lex:app.bsky.feed.defs#skeletonReasonPin"]; readonly type: "union"; }; readonly feedContext: { readonly type: "string"; readonly maxLength: 2000; readonly description: "Context that will be passed through to client and may be passed to feed generator back alongside interactions."; }; }; }; readonly clickthroughEmbed: { readonly type: "token"; readonly description: "User clicked through to the embedded content of the feed item"; }; readonly interactionRepost: { readonly type: "token"; readonly description: "User reposted the feed item"; }; readonly skeletonReasonPin: { readonly type: "object"; readonly properties: {}; }; readonly clickthroughAuthor: { readonly type: "token"; readonly description: "User clicked through to the author of the feed item"; }; readonly clickthroughReposter: { readonly type: "token"; readonly description: "User clicked through to the reposter of the feed item"; }; readonly generatorViewerState: { readonly type: "object"; readonly properties: { readonly like: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly skeletonReasonRepost: { readonly type: "object"; readonly required: ["repost"]; readonly properties: { readonly repost: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly contentModeUnspecified: { readonly type: "token"; readonly description: "Declares the feed generator returns any types of posts."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyFeedPost: { readonly lexicon: 1; readonly id: "app.bsky.feed.post"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "Record containing a Bluesky post."; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["text", "createdAt"]; readonly properties: { readonly text: { readonly type: "string"; readonly maxLength: 3000; readonly maxGraphemes: 300; readonly description: "The primary post content. May be an empty string, if there are embeds."; }; readonly entities: { readonly type: "array"; readonly description: "DEPRECATED: replaced by app.bsky.richtext.facet."; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.feed.post#entity"; }; }; readonly facets: { readonly type: "array"; readonly description: "Annotations of text (mentions, URLs, hashtags, etc)"; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.richtext.facet"; }; }; readonly reply: { readonly type: "ref"; readonly ref: "lex:app.bsky.feed.post#replyRef"; }; readonly embed: { readonly type: "union"; readonly refs: ["lex:app.bsky.embed.images", "lex:app.bsky.embed.video", "lex:app.bsky.embed.gallery", "lex:app.bsky.embed.external", "lex:app.bsky.embed.record", "lex:app.bsky.embed.recordWithMedia"]; }; readonly langs: { readonly type: "array"; readonly description: "Indicates human language of post primary text content."; readonly maxLength: 3; readonly items: { readonly type: "string"; readonly format: "language"; }; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this post. Effectively content warnings."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; readonly tags: { readonly type: "array"; readonly description: "Additional hashtags, in addition to any included in post text and facets."; readonly maxLength: 8; readonly items: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "Client-declared timestamp when this post was originally created."; }; }; }; }; readonly replyRef: { readonly type: "object"; readonly required: ["root", "parent"]; readonly properties: { readonly root: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; }; readonly parent: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; }; }; }; readonly entity: { readonly type: "object"; readonly description: "Deprecated: use facets instead."; readonly required: ["index", "type", "value"]; readonly properties: { readonly index: { readonly type: "ref"; readonly ref: "lex:app.bsky.feed.post#textSlice"; }; readonly type: { readonly type: "string"; readonly description: "Expected values are 'mention' and 'link'."; }; readonly value: { readonly type: "string"; }; }; }; readonly textSlice: { readonly type: "object"; readonly description: "Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings."; readonly required: ["start", "end"]; readonly properties: { readonly start: { readonly type: "integer"; readonly minimum: 0; }; readonly end: { readonly type: "integer"; readonly minimum: 0; }; }; }; }; }; readonly AppBskyFeedPostgate: { readonly id: "app.bsky.feed.postgate"; readonly defs: { readonly main: { readonly key: "tid"; readonly type: "record"; readonly record: { readonly type: "object"; readonly required: ["post", "createdAt"]; readonly properties: { readonly post: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the post record."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly embeddingRules: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.feed.postgate#disableRule"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed."; }; readonly detachedEmbeddingUris: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 50; readonly description: "List of AT-URIs embedding this post that the author has detached from."; }; }; }; readonly description: "Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository."; }; readonly disableRule: { readonly type: "object"; readonly properties: {}; readonly description: "Disables embedding of this post."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyFeedThreadgate: { readonly id: "app.bsky.feed.threadgate"; readonly defs: { readonly main: { readonly key: "tid"; readonly type: "record"; readonly record: { readonly type: "object"; readonly required: ["post", "createdAt"]; readonly properties: { readonly post: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the post record."; }; readonly allow: { readonly type: "array"; readonly items: { readonly 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"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly hiddenReplies: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 300; readonly description: "List of hidden reply URIs."; }; }; }; readonly description: "Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository."; }; readonly listRule: { readonly type: "object"; readonly required: ["list"]; readonly properties: { readonly list: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly description: "Allow replies from actors on a list."; }; readonly mentionRule: { readonly type: "object"; readonly properties: {}; readonly description: "Allow replies from actors mentioned in your post."; }; readonly followerRule: { readonly type: "object"; readonly properties: {}; readonly description: "Allow replies from actors who follow you."; }; readonly followingRule: { readonly type: "object"; readonly properties: {}; readonly description: "Allow replies from actors you follow."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyGraphDefs: { readonly id: "app.bsky.graph.defs"; readonly defs: { readonly modlist: { readonly type: "token"; readonly description: "A list of actors to apply an aggregate moderation action (mute/block) on."; }; readonly listView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "name", "purpose", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.graph.defs#listViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly purpose: { readonly ref: "lex:app.bsky.graph.defs#listPurpose"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly description: { readonly type: "string"; readonly maxLength: 3000; readonly maxGraphemes: 300; }; readonly listItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.richtext.facet"; readonly type: "ref"; }; }; }; }; readonly curatelist: { readonly type: "token"; readonly description: "A list of actors used for curation purposes such as list feeds or interaction gating."; }; readonly listPurpose: { readonly type: "string"; readonly knownValues: ["app.bsky.graph.defs#modlist", "app.bsky.graph.defs#curatelist", "app.bsky.graph.defs#referencelist"]; }; readonly listItemView: { readonly type: "object"; readonly required: ["uri", "subject"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly subject: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; }; }; readonly relationship: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly blocking: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor blocks this DID, this is the AT-URI of the block record"; }; readonly blockedBy: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor is blocked by this DID, contains the AT-URI of the block record"; }; readonly following: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor follows this DID, this is the AT-URI of the follow record"; }; readonly followedBy: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor is followed by this DID, contains the AT-URI of the follow record"; }; readonly blockedByList: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record"; }; readonly blockingByList: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor blocks this DID via a block list, this is the AT-URI of the listblock record"; }; }; readonly description: "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)"; }; readonly listViewBasic: { readonly type: "object"; readonly required: ["uri", "cid", "name", "purpose"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.graph.defs#listViewerState"; readonly type: "ref"; }; readonly purpose: { readonly ref: "lex:app.bsky.graph.defs#listPurpose"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly listItemCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; readonly notFoundActor: { readonly type: "object"; readonly required: ["actor", "notFound"]; readonly properties: { readonly actor: { readonly type: "string"; readonly format: "at-identifier"; }; readonly notFound: { readonly type: "boolean"; readonly const: true; }; }; readonly description: "indicates that a handle or DID could not be resolved"; }; readonly referencelist: { readonly type: "token"; readonly description: "A list of actors used for only for reference purposes such as within a starter pack."; }; readonly listViewerState: { readonly type: "object"; readonly properties: { readonly muted: { readonly type: "boolean"; }; readonly blocked: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly starterPackView: { readonly type: "object"; readonly required: ["uri", "cid", "record", "creator", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly list: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; readonly feeds: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.feed.defs#generatorView"; readonly type: "ref"; }; readonly maxLength: 3; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly joinedWeekCount: { readonly type: "integer"; readonly minimum: 0; }; readonly listItemsSample: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.graph.defs#listItemView"; readonly type: "ref"; }; readonly maxLength: 12; }; readonly joinedAllTimeCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; readonly starterPackViewBasic: { readonly type: "object"; readonly required: ["uri", "cid", "record", "creator", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly listItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly joinedWeekCount: { readonly type: "integer"; readonly minimum: 0; }; readonly joinedAllTimeCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyLabelerDefs: { readonly id: "app.bsky.labeler.defs"; readonly defs: { readonly labelerView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.labeler.defs#labelerViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; readonly labelerPolicies: { readonly type: "object"; readonly required: ["labelValues"]; readonly properties: { readonly labelValues: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#labelValue"; readonly type: "ref"; }; readonly description: "The label values which this labeler publishes. May include global or custom labels."; }; readonly labelValueDefinitions: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#labelValueDefinition"; readonly type: "ref"; }; readonly description: "Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler."; }; }; }; readonly labelerViewerState: { readonly type: "object"; readonly properties: { readonly like: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly labelerViewDetailed: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "policies", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.labeler.defs#labelerViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly policies: { readonly ref: "lex:app.bsky.labeler.defs#labelerPolicies"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; readonly minimum: 0; }; readonly reasonTypes: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.moderation.defs#reasonType"; readonly type: "ref"; }; readonly description: "The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed."; }; readonly subjectTypes: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.moderation.defs#subjectType"; readonly type: "ref"; }; readonly description: "The set of subject types (account, record, etc) this service accepts reports on."; }; readonly subjectCollections: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "nsid"; }; readonly description: "Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type."; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyNotificationDefs: { readonly id: "app.bsky.notification.defs"; readonly defs: { readonly preference: { readonly type: "object"; readonly required: ["list", "push"]; readonly properties: { readonly list: { readonly type: "boolean"; }; readonly push: { readonly type: "boolean"; }; }; }; readonly preferences: { readonly type: "object"; readonly required: ["chat", "follow", "like", "likeViaRepost", "mention", "quote", "reply", "repost", "repostViaRepost", "starterpackJoined", "subscribedPost", "unverified", "verified"]; readonly properties: { readonly chat: { readonly ref: "lex:app.bsky.notification.defs#chatPreference"; readonly type: "ref"; }; readonly like: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly quote: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly reply: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly follow: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly repost: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly mention: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly verified: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; readonly unverified: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; readonly likeViaRepost: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly subscribedPost: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; readonly repostViaRepost: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly starterpackJoined: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; }; }; readonly recordDeleted: { readonly type: "object"; readonly properties: {}; }; readonly chatPreference: { readonly type: "object"; readonly required: ["include", "push"]; readonly properties: { readonly push: { readonly type: "boolean"; }; readonly include: { readonly type: "string"; readonly knownValues: ["all", "accepted"]; }; }; }; readonly activitySubscription: { readonly type: "object"; readonly required: ["post", "reply"]; readonly properties: { readonly post: { readonly type: "boolean"; }; readonly reply: { readonly type: "boolean"; }; }; }; readonly filterablePreference: { readonly type: "object"; readonly required: ["include", "list", "push"]; readonly properties: { readonly list: { readonly type: "boolean"; }; readonly push: { readonly type: "boolean"; }; readonly include: { readonly type: "string"; readonly knownValues: ["all", "follows"]; }; }; }; readonly subjectActivitySubscription: { readonly type: "object"; readonly required: ["subject", "activitySubscription"]; readonly properties: { readonly subject: { readonly type: "string"; readonly format: "did"; }; readonly activitySubscription: { readonly ref: "lex:app.bsky.notification.defs#activitySubscription"; readonly type: "ref"; }; }; readonly description: "Object used to store activity subscription data in stash."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly AppBskyRichtextFacet: { readonly id: "app.bsky.richtext.facet"; readonly defs: { readonly tag: { readonly type: "object"; readonly required: ["tag"]; readonly properties: { readonly tag: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; }; readonly description: "Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags')."; }; readonly link: { readonly type: "object"; readonly required: ["uri"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "uri"; }; }; readonly description: "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL."; }; readonly main: { readonly type: "object"; readonly required: ["index", "features"]; readonly properties: { readonly index: { readonly ref: "lex:app.bsky.richtext.facet#byteSlice"; readonly type: "ref"; }; readonly features: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.richtext.facet#mention", "lex:app.bsky.richtext.facet#link", "lex:app.bsky.richtext.facet#tag"]; readonly type: "union"; }; }; }; readonly description: "Annotation of a sub-string within rich text."; }; readonly mention: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; }; readonly description: "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID."; }; readonly byteSlice: { readonly type: "object"; readonly required: ["byteStart", "byteEnd"]; readonly properties: { readonly byteEnd: { readonly type: "integer"; readonly minimum: 0; }; readonly byteStart: { readonly type: "integer"; readonly minimum: 0; }; }; readonly description: "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; }; readonly BlueMojiCollectionDefs: { readonly lexicon: 1; readonly id: "blue.moji.collection.defs"; readonly defs: { readonly collectionView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "name", "indexedAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly creator: { readonly type: "ref"; readonly ref: "lex:app.bsky.actor.defs#profileView"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.richtext.facet"; }; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly collectionItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly labels: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; }; }; readonly BlueMojiCollectionGetItem: { readonly lexicon: 1; readonly id: "blue.moji.collection.getItem"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get a single emoji from a repository. Requires auth."; readonly parameters: { readonly type: "params"; readonly required: ["repo", "name"]; readonly properties: { readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo."; }; readonly name: { readonly type: "string"; readonly description: "The Bluemoji alias/rkey."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri", "item"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly item: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; }; }; }; readonly BlueMojiCollectionItem: { readonly lexicon: 1; readonly id: "blue.moji.collection.item"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "A custom emoji. The record key is the canonical alias for ASCII aliases, or its RFC 3492 Punycode encoding (xn-- prefixed) for internationalised aliases; see Bluemoji RFC 0005."; readonly key: "any"; readonly record: { readonly type: "object"; readonly required: ["name", "createdAt", "formats"]; readonly properties: { readonly name: { readonly type: "string"; readonly description: "Should be in the format :emoji:"; }; readonly alt: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly formats: { readonly type: "union"; readonly description: "Open union to allow for future formats. #formats_v0 is deprecated: writers MUST write #formats_v1 (see RFC 0001 Adoption strategy / RFC 0005). Readers SHOULD continue to accept #formats_v0 for historical records."; readonly refs: ["lex:blue.moji.collection.item#formats_v0", "lex:blue.moji.collection.item#formats_v1"]; readonly closed: false; }; readonly stickerFormats: { readonly type: "union"; readonly description: "Optional full-size renditions for use as a sticker (post attachment via blue.moji.embed.sticker). Presence of this field marks the item as sticker-capable; items with only 'formats' are inline emoji."; readonly refs: ["lex:blue.moji.collection.item#stickerFormats_v0"]; readonly closed: false; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this emoji. Effectively content warnings."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; readonly copyOf: { readonly type: "string"; readonly format: "at-uri"; }; readonly fallbackText: { readonly type: "string"; readonly maxLength: 1; readonly default: "◌"; }; }; }; }; readonly formats_v0: { readonly type: "object"; readonly description: "DEPRECATED. apng_128/lottie are raw Bytes (not Blob), which makes them invisible to blob-based image moderation pipelines and requires a getRecord round-trip to render. New writes MUST use #formats_v1. Retained only so existing v0 records remain readable."; readonly properties: { readonly original: { readonly type: "blob"; readonly accept: ["image/*", "application/lottie+zip"]; readonly maxSize: 1000000; }; readonly png_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v0"; }; readonly apng_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#bytes_v0"; }; readonly gif_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v0"; }; readonly webp_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v0"; }; readonly lottie: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#bytes_v0"; }; }; }; readonly formats_v1: { readonly type: "object"; readonly properties: { readonly original: { readonly type: "blob"; readonly accept: ["image/*", "application/lottie+zip"]; readonly maxSize: 1000000; }; readonly png_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly apng_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly gif_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly webp_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly lottie: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; }; }; readonly stickerFormats_v0: { readonly type: "object"; readonly description: "Full-size (up to 512×512) renditions for sharing as a sticker. Raster formats should be exactly 512px on the longest edge."; readonly properties: { readonly png_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly webp_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly gif_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly apng_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly lottie: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; }; }; readonly blob_sticker: { readonly type: "blob"; readonly maxSize: 512000; readonly description: "Stickers render one-per-post at full size, so a larger budget than inline emoji is acceptable."; }; readonly blob_v1: { readonly type: "blob"; readonly maxSize: 128000; readonly description: "Limiting blobs to 128kb because there may be many on page and these get optimised by ImgProxy anyway"; }; readonly blob_v0: { readonly type: "blob"; readonly maxSize: 262144; readonly description: "Limiting blobs to 256kb because there may be many on page and these get optimised by ImgProxy anyway"; }; readonly bytes_v0: { readonly type: "bytes"; readonly maxLength: 65536; readonly description: "64kb should be enough for anybody"; }; readonly itemView: { readonly type: "object"; readonly required: ["name", "formats"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the source item record. Views need this so consumers can derive the owning DID for blob URL construction."; }; readonly cid: { readonly type: "string"; readonly format: "cid"; readonly description: "CID of the source item record, so consumers can build a com.atproto.repo.strongRef to it (e.g. for moderation reports) without a separate lookup."; }; readonly did: { readonly type: "string"; readonly format: "did"; readonly description: "DID of the repo that owns this item's blobs."; }; readonly name: { readonly type: "string"; }; readonly alt: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly formats: { readonly type: "union"; readonly refs: ["lex:blue.moji.collection.item#formats_v0", "lex:blue.moji.collection.item#formats_v1"]; }; readonly stickerFormats: { readonly type: "union"; readonly refs: ["lex:blue.moji.collection.item#stickerFormats_v0"]; readonly closed: false; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; }; readonly copyOf: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the item this was directly copied from, mirroring the record's own copyOf field."; }; readonly originalCreator: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#originalCreator"; readonly description: "The account at the root of this item's copyOf chain (walked server-side, since a copy can itself be copied), if this item is a copy at all. Omitted for original items. If a link in the chain is missing (e.g. a source account deleted its copy), resolves to whatever the chain reaches rather than failing outright."; }; }; }; readonly originalCreator: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly handle: { readonly type: "string"; }; }; }; }; }; readonly BlueMojiCollectionListCollection: { readonly lexicon: 1; readonly id: "blue.moji.collection.listCollection"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "List a range of Bluemoji in a repository. Public read: pass 'repo' to browse any repo's collection. If 'repo' is omitted, the caller must be authenticated and their own collection is listed."; readonly parameters: { readonly type: "params"; readonly properties: { readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo to list. Defaults to the authenticated caller if omitted."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; readonly description: "The number of records to return."; }; readonly cursor: { readonly type: "string"; }; readonly reverse: { readonly type: "boolean"; readonly description: "Flag to reverse the order of the returned records. Default is oldest-first (ascending by creation time), mirroring com.atproto.repo.listRecords."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly items: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; }; }; }; }; readonly BlueMojiCollectionPutItem: { readonly lexicon: 1; readonly id: "blue.moji.collection.putItem"; readonly defs: { readonly main: { readonly type: "procedure"; readonly description: "Write a Bluemoji record, creating or updating it as needed. Requires auth, implemented by AppView."; readonly input: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["repo", "item"]; readonly properties: { readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo (aka, current account)."; }; readonly validate: { readonly type: "boolean"; readonly default: true; readonly description: "Can be set to 'false' to skip Lexicon schema validation of record data."; }; readonly item: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; }; }; }; readonly errors: []; }; }; }; readonly BlueMojiCollectionSaveToCollection: { readonly lexicon: 1; readonly id: "blue.moji.collection.saveToCollection"; readonly defs: { readonly main: { readonly type: "procedure"; readonly description: "Copy a single emoji from another repo. Requires auth."; readonly input: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["source", "name"]; readonly properties: { readonly source: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo to copy from."; }; readonly name: { readonly type: "string"; readonly description: "The source Bluemoji alias or rkey. Internationalised aliases are accepted and encoded per RFC 0005."; readonly maxLength: 512; }; readonly renameTo: { readonly type: "string"; readonly description: "The alias to save the Bluemoji to in the current logged-in user's repo."; }; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri", "item"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly item: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; readonly errors: [{ readonly name: "EmojiNotFound"; readonly description: "Indicates the named Bluemoji was not found in the source repo."; }, { readonly name: "DestinationExists"; readonly description: "Indicates another Bluemoji with the same name already exists in the source repo. Set renameTo to rename."; }]; }; }; }; readonly BlueMojiCollectionSearchItems: { readonly lexicon: 1; readonly id: "blue.moji.collection.searchItems"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Search Bluemoji by alias or alt text. Intended as shared infrastructure so clients don't need to maintain their own emoji search index. Two distinct matching modes depending on 'repo': pass it for substring matching within one repo's own collection (suited to live-typing :-autocomplete in a composer — every keystroke narrows correctly, including partial prefixes); omit it for network-wide full-text search (subject to takedown filtering), which matches whole words/tokens rather than arbitrary substrings — e.g. 'cat' can match ':blobcat:' but 'blob' alone may not, since the underlying index is word-oriented. Network-wide mode suits a 'discover emoji' browse/search surface better than character-by-character autocomplete."; readonly parameters: { readonly type: "params"; readonly required: ["q"]; readonly properties: { readonly q: { readonly type: "string"; readonly description: "Search query, matched against the alias and alt text."; readonly minLength: 1; readonly maxLength: 100; }; readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "Restrict results to a single repo's collection, using substring matching. Network-wide whole-word search when omitted."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 25; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly items: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; }; }; }; }; readonly BlueMojiCollectionTranscodeAnimation: { readonly lexicon: 1; readonly id: "blue.moji.collection.transcodeAnimation"; readonly defs: { readonly main: { readonly type: "procedure"; readonly description: "Server-side utility: transcodes an uploaded APNG (or other ffmpeg-readable animated image) into properly-sized animated WebP renditions, sidestepping imgproxy's lack of APNG support (see RFC 0001 / imgproxy#1222) by never storing raw APNG in the first place. Pure transcode — does not touch the PDS or write any record; the caller uploads the returned bytes via dev.hatk.uploadBlob itself, same as any other format. Input/output are base64 JSON, not raw bytes, because this AppView's custom-procedure dispatch always JSON-parses the request body (only the built-in dev.hatk.uploadBlob gets raw-body handling)."; readonly input: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["data"]; readonly properties: { readonly data: { readonly type: "string"; readonly description: "Base64-encoded source file bytes (e.g. an APNG)."; }; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly properties: { readonly webp128: { readonly type: "string"; readonly description: "Base64-encoded 128x128 animated WebP, for the inline formats_v1#webp_128 slot."; }; readonly webp512: { readonly type: "string"; readonly description: "Base64-encoded 512x512 animated WebP, for the stickerFormats_v0#webp_512 slot."; }; }; }; }; readonly errors: []; }; }; }; readonly BlueMojiEmbedSticker: { readonly lexicon: 1; readonly id: "blue.moji.embed.sticker"; readonly defs: { readonly main: { readonly type: "object"; readonly description: "A full-sized Bluemoji sticker attached to a post as media, in the style of app.bsky.embed.external. References a blue.moji.collection.item record in the sticker owner's repo."; readonly required: ["sticker"]; readonly properties: { readonly sticker: { readonly type: "ref"; readonly ref: "lex:blue.moji.embed.sticker#sticker"; }; }; }; readonly sticker: { readonly type: "object"; readonly description: "SECURITY: did/name/formats are self-attested by the posting client, like blue.moji.richtext.facet. Verify against the record strongRef (or by re-deriving the rkey from name and looking up did's blue.moji.collection.item) before rendering an image, if the render surface matters for trust."; readonly required: ["did", "name", "formats"]; readonly properties: { readonly record: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; readonly description: "Strong reference to the source blue.moji.collection.item record. Use this as the verification anchor: resolve it and compare formats before trusting this embed's claims."; }; readonly did: { readonly type: "string"; readonly format: "did"; readonly description: "DID of the repo that owns the sticker record. Combined with the format CIDs to construct blob/CDN URLs without a getRecord round-trip, mirroring blue.moji.richtext.facet. Self-attested; see security note on this object."; }; readonly name: { readonly type: "string"; readonly description: "Colon-wrapped alias of the source Bluemoji (e.g. :blobcat:). Implementers should use this as fallback text when assets are unavailable."; }; readonly alt: { readonly type: "string"; readonly description: "Alt text description of the sticker, for accessibility."; }; readonly aspectRatio: { readonly type: "ref"; readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; }; readonly formats: { readonly type: "union"; readonly description: "CIDs of the full-size sticker renditions. Open union to allow future formats."; readonly refs: ["lex:blue.moji.embed.sticker#formats_v0"]; readonly closed: false; }; }; }; readonly formats_v0: { readonly type: "object"; readonly description: "CIDs of the full-size (512px-class) blobs stored in the sticker owner's repo under blue.moji.collection.item stickerFormats. CID-only, like blue.moji.richtext.facet#formats_v1, because blobs cannot be referenced across repos."; readonly properties: { readonly png_512: { readonly type: "string"; readonly format: "cid"; }; readonly webp_512: { readonly type: "string"; readonly format: "cid"; }; readonly gif_512: { readonly type: "string"; readonly format: "cid"; }; readonly apng_512: { readonly type: "string"; readonly format: "cid"; }; readonly lottie: { readonly type: "string"; readonly format: "cid"; }; }; }; readonly view: { readonly type: "object"; readonly required: ["sticker"]; readonly properties: { readonly sticker: { readonly type: "ref"; readonly ref: "lex:blue.moji.embed.sticker#viewSticker"; }; }; }; readonly viewSticker: { readonly type: "object"; readonly required: ["fullsize", "name"]; readonly properties: { readonly fullsize: { readonly type: "string"; readonly format: "uri"; readonly description: "Fully-qualified URL of the full-size sticker asset."; }; readonly thumb: { readonly type: "string"; readonly format: "uri"; readonly description: "URL of the 128px inline-emoji rendition, if available."; }; readonly name: { readonly type: "string"; }; readonly alt: { readonly type: "string"; }; readonly aspectRatio: { readonly type: "ref"; readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; }; readonly record: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; }; readonly labels: { readonly type: "array"; readonly description: "AppViews producing this view MUST populate labels (and reflect the source item's adultOnly) from the verified blue.moji.collection.item record, not from the embed's own self-attested fields — see the security note on #sticker. Consumers SHOULD warn or blur before rendering fullsize/thumb when present."; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; }; }; }; }; readonly BlueMojiFeedDefs: { readonly lexicon: 1; readonly id: "blue.moji.feed.defs"; readonly defs: { readonly reactionView: { readonly type: "object"; readonly description: "A single reaction by a single actor."; readonly required: ["uri", "actor", "emoji", "createdAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly actor: { readonly type: "ref"; readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; }; readonly emoji: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.reaction#emojiRef"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly reactionGroup: { readonly type: "object"; readonly description: "Aggregated reactions to a subject, grouped by emoji item URI."; readonly required: ["emoji", "count"]; readonly properties: { readonly emoji: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.reaction#emojiRef"; }; readonly count: { readonly type: "integer"; readonly minimum: 0; }; readonly viewer: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the requesting account's reaction record in this group, if any. Enables un-reacting."; }; }; }; }; }; readonly BlueMojiFeedGetReactionCounts: { readonly lexicon: 1; readonly id: "blue.moji.feed.getReactionCounts"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Batch version of blue.moji.feed.getReactions for timelines: aggregated reaction groups (counts only, no paginated individual reactions) for many posts in one call, avoiding an N+1 fetch per rendered post. Use getReactions for a single post's full detail (e.g. its own dedicated view with an actor list)."; readonly parameters: { readonly type: "params"; readonly required: ["uris"]; readonly properties: { readonly uris: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 50; readonly description: "AT-URIs of the subject posts. Send as a single comma-joined value (e.g. 'uris=at://a,at://b'), not repeated 'uris=' keys — this AppView's implementation currently only sees the last occurrence of a repeated query key. AT-URIs never contain commas (record keys exclude them), so this is unambiguous."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["counts"]; readonly properties: { readonly counts: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.getReactionCounts#subjectReactionCounts"; }; }; }; }; }; }; readonly subjectReactionCounts: { readonly type: "object"; readonly required: ["uri", "groups"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the subject post. Subjects with zero reactions are omitted from the response rather than included with an empty groups array."; }; readonly groups: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionGroup"; }; }; }; }; }; }; readonly BlueMojiFeedGetReactions: { readonly lexicon: 1; readonly id: "blue.moji.feed.getReactions"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get reactions for a post: aggregated per-emoji groups plus a paginated list of individual reactions."; readonly parameters: { readonly type: "params"; readonly required: ["uri"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the subject post."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri", "groups", "reactions"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cursor: { readonly type: "string"; }; readonly groups: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionGroup"; }; }; readonly reactions: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionView"; }; }; }; }; }; }; }; }; readonly BlueMojiFeedGetTrending: { readonly lexicon: 1; readonly id: "blue.moji.feed.getTrending"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "AppView-computed \"Weekly Top Bluemoji\": the custom emoji reacted with by the most distinct actors in a recent window. Purely a discovery/trending signal derived from indexed blue.moji.feed.reaction records verified against their source blue.moji.collection.item — not a network-wide count (only reflects reactions this AppView has indexed), and not the same per-post cap applied by getReactions/getReactionCounts."; readonly parameters: { readonly type: "params"; readonly properties: { readonly period: { readonly type: "string"; readonly default: "week"; readonly description: "Trending window: 'day', 'week', or 'month'. Any other value is rejected."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 25; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["period", "items"]; readonly properties: { readonly period: { readonly type: "string"; }; readonly items: { readonly type: "array"; readonly description: "blue.moji.feed.defs#reactionGroup entries reused here: 'count' is the distinct-reactor count within the window (not a per-post count), and 'viewer' is always omitted since there's no single subject."; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionGroup"; }; }; }; }; }; }; }; }; readonly BlueMojiFeedReaction: { readonly lexicon: 1; readonly id: "blue.moji.feed.reaction"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "A custom-emoji reaction to a post. Analogous to app.bsky.feed.like, but the reaction glyph is a Bluemoji. Duplicate reactions (same subject + same emoji URI by the same actor) should be ignored by AppViews."; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["subject", "emoji", "createdAt"]; readonly properties: { readonly subject: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the post being reacted to."; }; readonly subjectCid: { readonly type: "string"; readonly format: "cid"; readonly description: "CID of the subject post at reaction time, for strong referencing."; }; readonly emoji: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.reaction#emojiRef"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; }; readonly emojiRef: { readonly type: "object"; readonly description: "Denormalized reference to the Bluemoji used, mirroring blue.moji.richtext.facet: CID-only formats let consumers build blob/CDN URLs without a getRecord round-trip. AppViews should verify against the indexed item where possible."; readonly required: ["uri", "name", "formats"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the blue.moji.collection.item record. The owning DID is derived from this."; }; readonly cid: { readonly type: "string"; readonly format: "cid"; readonly description: "CID of the blue.moji.collection.item record, populated by AppViews at hydration time (like adultOnly) so consumers can build a com.atproto.repo.strongRef for moderation reports without a separate lookup. Not meaningful on write."; }; readonly name: { readonly type: "string"; readonly description: "Colon-wrapped alias, e.g. :blobcat:. Used as fallback text."; }; readonly alt: { readonly type: "string"; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; readonly description: "MUST be populated by AppViews from the source item's adultOnly at hydration time (the source item is the trust anchor; do not trust a reactor-supplied value on write). Consumers SHOULD warn or blur before rendering when true, consistent with how the same item's adultOnly is handled elsewhere (facets, collection views)."; }; readonly formats: { readonly type: "union"; readonly refs: ["lex:blue.moji.richtext.facet#formats_v0", "lex:blue.moji.richtext.facet#formats_v1"]; readonly closed: false; }; }; }; }; }; readonly BlueMojiPacksDefs: { readonly lexicon: 1; readonly id: "blue.moji.packs.defs"; readonly defs: { readonly packViewBasic: { readonly type: "object"; readonly required: ["uri", "cid", "name"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.richtext.facet"; }; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly itemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly labels: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; readonly viewer: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewerState"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly packView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "name", "indexedAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly creator: { readonly type: "ref"; readonly ref: "lex:app.bsky.actor.defs#profileView"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.richtext.facet"; }; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly packItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly labels: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; readonly viewer: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewerState"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly packItemView: { readonly type: "object"; readonly required: ["uri", "subject"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly subject: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; readonly packViewerState: { readonly type: "object"; readonly properties: { readonly savedToCollection: { readonly type: "boolean"; }; }; }; }; }; readonly BlueMojiPacksGetActorPacks: { readonly lexicon: 1; readonly id: "blue.moji.packs.getActorPacks"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get a list of Bluemoji packs created by the actor."; readonly parameters: { readonly type: "params"; readonly required: ["actor"]; readonly properties: { readonly actor: { readonly type: "string"; readonly format: "at-identifier"; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["packs"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly packs: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewBasic"; }; }; }; }; }; }; }; }; readonly BlueMojiPacksGetPack: { readonly lexicon: 1; readonly id: "blue.moji.packs.getPack"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Gets a 'view' (with additional context) of a specified pack."; readonly parameters: { readonly type: "params"; readonly required: ["pack"]; readonly properties: { readonly pack: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) of the pack record to hydrate."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["pack", "items"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly pack: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packView"; }; readonly items: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packItemView"; }; }; }; }; }; }; }; }; readonly BlueMojiPacksGetPacks: { readonly lexicon: 1; readonly id: "blue.moji.packs.getPacks"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get views for a list of Bluemoji packs."; readonly parameters: { readonly type: "params"; readonly required: ["uris"]; readonly properties: { readonly uris: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 25; readonly description: "Send as a single comma-joined value (e.g. 'uris=at://a,at://b'), not repeated 'uris=' keys — this AppView's implementation currently only sees the last occurrence of a repeated query key. AT-URIs never contain commas (record keys exclude them), so this is unambiguous."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["packs"]; readonly properties: { readonly packs: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewBasic"; }; }; }; }; }; }; }; }; readonly BlueMojiPacksPack: { readonly lexicon: 1; readonly id: "blue.moji.packs.pack"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "A shareable Bluemoji pack"; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["name", "createdAt"]; readonly properties: { readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.richtext.facet"; }; }; readonly icon: { readonly type: "blob"; readonly accept: ["image/png", "image/jpeg"]; readonly maxSize: 1000000; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this emoji. Effectively content warnings."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; }; }; }; }; }; readonly BlueMojiPacksPackitem: { readonly lexicon: 1; readonly id: "blue.moji.packs.packitem"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "Record representing a Bluemoji's inclusion in a specific pack. The AppView will ignore duplicate item records."; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["subject", "pack", "createdAt"]; readonly properties: { readonly subject: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the Bluemoji item record (blue.moji.collection.item)."; }; readonly pack: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the pack record (blue.moji.packs.pack)."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; }; }; }; readonly BlueMojiRichtextFacet: { readonly lexicon: 1; readonly id: "blue.moji.richtext.facet"; readonly defs: { readonly main: { readonly type: "object"; readonly description: "SECURITY: did/name/formats/adultOnly/labels are all self-attested by the posting client at write time and are not re-validated by the PDS. Consumers that render an image from this facet without first verifying it against the referenced blue.moji.collection.item record (e.g. via an AppView's blue.moji.collection.getItem, hydrated from firehose-verified data) are trusting the poster to have told the truth about whose emoji it is, what it looks like, and whether it needs a content warning. In particular, adultOnly/labels here MUST NOT be trusted for moderation decisions — a poster could simply omit them to bypass a warning the source item's own record carries. Verified renderers should use the source item's adultOnly/labels instead. Renderers that skip verification SHOULD treat the facet as decorative/best-effort only, exactly as they would an unverified embed."; readonly required: ["did", "name", "formats"]; readonly properties: { readonly did: { readonly type: "string"; readonly description: "DID of the user posting the Bluemoji. Self-attested; see security note on this object."; }; readonly name: { readonly type: "string"; readonly description: "Name of the Bluemoji in :emoji: format"; }; readonly alt: { readonly type: "string"; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; readonly description: "Self-attested by the poster; see security note on this object. Verified renderers SHOULD use the source item's adultOnly instead."; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this emoji. Effectively content warnings. Self-attested by the poster; see security note on this object."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; readonly formats: { readonly type: "union"; readonly description: "#formats_v0 is deprecated (see RFC 0001); writers MUST produce #formats_v1."; readonly refs: ["lex:blue.moji.richtext.facet#formats_v0", "lex:blue.moji.richtext.facet#formats_v1"]; readonly closed: false; }; }; }; readonly formats_v1: { readonly type: "object"; readonly description: "Only the CID is provided; combine with the facet's did to construct a blob/CDN URL with no additional round-trip. All formats, including animated ones, are CIDs of Blob-typed values on the source record."; readonly properties: { readonly png_128: { readonly type: "string"; readonly format: "cid"; }; readonly webp_128: { readonly type: "string"; readonly format: "cid"; }; readonly gif_128: { readonly type: "string"; readonly format: "cid"; }; readonly apng_128: { readonly type: "string"; readonly format: "cid"; }; readonly lottie: { readonly type: "string"; readonly format: "cid"; }; }; }; readonly formats_v0: { readonly type: "object"; readonly description: "DEPRECATED, corresponds to blue.moji.collection.item#formats_v0. png/webp/gif are CIDs combinable with the facet's did to build a blob/CDN URL; apng_128/lottie are raw Bytes on the source record (not Blob) so are only marked present here as a boolean and require a com.atproto.repo.getRecord round-trip to render."; readonly properties: { readonly png_128: { readonly type: "string"; readonly format: "cid"; }; readonly webp_128: { readonly type: "string"; readonly format: "cid"; }; readonly gif_128: { readonly type: "string"; readonly format: "cid"; }; readonly apng_128: { readonly type: "boolean"; readonly default: false; }; readonly lottie: { readonly type: "boolean"; readonly default: false; }; }; }; }; }; readonly ComAtprotoLabelDefs: { readonly lexicon: 1; readonly id: "com.atproto.label.defs"; readonly defs: { readonly label: { readonly type: "object"; readonly description: "Metadata tag on an atproto resource (eg, repo or record)."; readonly required: ["src", "uri", "val", "cts"]; readonly properties: { readonly ver: { readonly type: "integer"; }; readonly src: { readonly type: "string"; readonly format: "did"; }; readonly uri: { readonly type: "string"; readonly format: "uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly val: { readonly type: "string"; readonly maxLength: 128; }; readonly neg: { readonly type: "boolean"; }; readonly cts: { readonly type: "string"; readonly format: "datetime"; }; readonly exp: { readonly type: "string"; readonly format: "datetime"; }; readonly sig: { readonly type: "bytes"; }; }; }; readonly selfLabels: { readonly type: "object"; readonly description: "Metadata tags on an atproto record, published by the author within the record."; readonly required: ["values"]; readonly properties: { readonly values: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#selfLabel"; }; readonly maxLength: 10; }; }; }; readonly selfLabel: { readonly type: "object"; readonly required: ["val"]; readonly properties: { readonly val: { readonly type: "string"; readonly maxLength: 128; }; }; }; readonly labelValueDefinition: { readonly type: "object"; readonly description: "Declares a label value and its expected interpretations and behaviors."; readonly required: ["identifier", "severity", "blurs", "locales"]; readonly properties: { readonly identifier: { readonly type: "string"; readonly maxLength: 100; }; readonly severity: { readonly type: "string"; readonly knownValues: ["inform", "alert", "none"]; }; readonly blurs: { readonly type: "string"; readonly knownValues: ["content", "media", "none"]; }; readonly defaultSetting: { readonly type: "string"; readonly knownValues: ["ignore", "warn", "hide"]; }; readonly adultOnly: { readonly type: "boolean"; }; readonly locales: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#labelValueDefinitionStrings"; }; }; }; }; readonly labelValueDefinitionStrings: { readonly type: "object"; readonly required: ["lang", "name", "description"]; readonly properties: { readonly lang: { readonly type: "string"; readonly format: "language"; }; readonly name: { readonly type: "string"; readonly maxLength: 640; }; readonly description: { readonly type: "string"; readonly maxLength: 100000; }; }; }; readonly labelValue: { readonly type: "string"; readonly knownValues: ["!hide", "!no-promote", "!warn", "!no-unauthenticated", "dmca-violation", "doxxing", "porn", "sexual", "nudity", "nsfl", "gore"]; }; }; }; readonly ComAtprotoModerationDefs: { readonly lexicon: 1; readonly id: "com.atproto.moderation.defs"; readonly defs: { readonly reasonType: { readonly type: "string"; readonly knownValues: ["com.atproto.moderation.defs#reasonSpam", "com.atproto.moderation.defs#reasonViolation", "com.atproto.moderation.defs#reasonMisleading", "com.atproto.moderation.defs#reasonSexual", "com.atproto.moderation.defs#reasonRude", "com.atproto.moderation.defs#reasonOther", "com.atproto.moderation.defs#reasonAppeal"]; }; readonly reasonSpam: { readonly type: "token"; readonly description: "Spam: frequent unwanted promotion, replies, mentions."; }; readonly reasonViolation: { readonly type: "token"; readonly description: "Direct violation of server rules, laws, terms of service."; }; readonly reasonMisleading: { readonly type: "token"; readonly description: "Misleading identity, affiliation, or content."; }; readonly reasonSexual: { readonly type: "token"; readonly description: "Unwanted or mislabeled sexual content."; }; readonly reasonRude: { readonly type: "token"; readonly description: "Rude, harassing, explicit, or otherwise unwelcoming behavior."; }; readonly reasonOther: { readonly type: "token"; readonly description: "Reports not falling under another report category."; }; readonly reasonAppeal: { readonly type: "token"; readonly description: "Appeal a previously taken moderation action."; }; readonly subjectType: { readonly type: "string"; readonly description: "Tag describing a type of subject that might be reported."; readonly knownValues: ["account", "record", "chat"]; }; }; }; readonly ComAtprotoRepoStrongRef: { readonly lexicon: 1; readonly id: "com.atproto.repo.strongRef"; readonly description: "A URI with a content-hash fingerprint."; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["uri", "cid"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; }; }; }; }; }; export declare const schemas: ({ readonly id: "app.bsky.actor.defs"; readonly defs: { readonly nux: { readonly type: "object"; readonly required: ["id", "completed"]; readonly properties: { readonly id: { readonly type: "string"; readonly maxLength: 100; }; readonly data: { readonly type: "string"; readonly maxLength: 3000; readonly description: "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters."; readonly maxGraphemes: 300; }; readonly completed: { readonly type: "boolean"; readonly default: false; }; readonly expiresAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "The date and time at which the NUX will expire and should be considered completed."; }; }; readonly description: "A new user experiences (NUX) storage object"; }; readonly mutedWord: { readonly type: "object"; readonly required: ["value", "targets"]; readonly properties: { readonly id: { readonly type: "string"; }; readonly value: { readonly type: "string"; readonly maxLength: 10000; readonly description: "The muted word itself."; readonly maxGraphemes: 1000; }; readonly targets: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#mutedWordTarget"; readonly type: "ref"; }; readonly description: "The intended targets of the muted word."; }; readonly expiresAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "The date and time at which the muted word will expire and no longer be applied."; }; readonly actorTarget: { readonly type: "string"; readonly default: "all"; readonly description: "Groups of users to apply the muted word to. If undefined, applies to all users."; readonly knownValues: ["all", "exclude-following"]; }; }; readonly description: "A word that the account owner has muted."; }; readonly savedFeed: { readonly type: "object"; readonly required: ["id", "type", "value", "pinned"]; readonly properties: { readonly id: { readonly type: "string"; }; readonly type: { readonly type: "string"; readonly knownValues: ["feed", "list", "timeline"]; }; readonly value: { readonly type: "string"; }; readonly pinned: { readonly type: "boolean"; }; }; }; readonly statusView: { readonly type: "object"; readonly required: ["status", "record"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly embed: { readonly refs: ["lex:app.bsky.embed.external#view"]; readonly type: "union"; readonly description: "An optional embed associated with the status."; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly status: { readonly type: "string"; readonly description: "The status for the account."; readonly knownValues: ["app.bsky.actor.status#live"]; }; readonly isActive: { readonly type: "boolean"; readonly description: "True if the status is not expired, false if it is expired. Only present if expiration was set."; }; readonly expiresAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "The date when this status will expire. The application might choose to no longer return the status after expiration."; }; readonly isDisabled: { readonly type: "boolean"; readonly description: "True if the user's go-live access has been disabled by a moderator, false otherwise."; }; }; }; readonly preferences: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.actor.defs#adultContentPref", "lex:app.bsky.actor.defs#contentLabelPref", "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", "lex:app.bsky.actor.defs#mutedWordsPref", "lex:app.bsky.actor.defs#hiddenPostsPref", "lex:app.bsky.actor.defs#bskyAppStatePref", "lex:app.bsky.actor.defs#labelersPref", "lex:app.bsky.actor.defs#postInteractionSettingsPref", "lex:app.bsky.actor.defs#verificationPrefs", "lex:app.bsky.actor.defs#liveEventPreferences"]; readonly type: "union"; }; }; readonly profileView: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly handle: { readonly type: "string"; readonly format: "handle"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly status: { readonly ref: "lex:app.bsky.actor.defs#statusView"; readonly type: "ref"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; readonly pronouns: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly associated: { readonly ref: "lex:app.bsky.actor.defs#profileAssociated"; readonly type: "ref"; }; readonly description: { readonly type: "string"; readonly maxLength: 2560; readonly maxGraphemes: 256; }; readonly displayName: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly verification: { readonly ref: "lex:app.bsky.actor.defs#verificationState"; readonly type: "ref"; }; }; }; readonly viewerState: { readonly type: "object"; readonly properties: { readonly muted: { readonly type: "boolean"; }; readonly blocking: { readonly type: "string"; readonly format: "at-uri"; }; readonly blockedBy: { readonly type: "boolean"; }; readonly following: { readonly type: "string"; readonly format: "at-uri"; }; readonly followedBy: { readonly type: "string"; readonly format: "at-uri"; }; readonly mutedByList: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; readonly blockingByList: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; readonly knownFollowers: { readonly ref: "lex:app.bsky.actor.defs#knownFollowers"; readonly type: "ref"; readonly description: "This property is present only in selected cases, as an optimization."; }; readonly activitySubscription: { readonly ref: "lex:app.bsky.notification.defs#activitySubscription"; readonly type: "ref"; readonly description: "This property is present only in selected cases, as an optimization."; }; }; readonly description: "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests."; }; readonly feedViewPref: { readonly type: "object"; readonly required: ["feed"]; readonly properties: { readonly feed: { readonly type: "string"; readonly description: "The URI of the feed, or an identifier which describes the feed."; }; readonly hideReplies: { readonly type: "boolean"; readonly description: "Hide replies in the feed."; }; readonly hideReposts: { readonly type: "boolean"; readonly description: "Hide reposts in the feed."; }; readonly hideQuotePosts: { readonly type: "boolean"; readonly description: "Hide quote posts in the feed."; }; readonly hideRepliesByLikeCount: { readonly type: "integer"; readonly description: "Hide replies in the feed if they do not have this number of likes."; }; readonly hideRepliesByUnfollowed: { readonly type: "boolean"; readonly default: true; readonly description: "Hide replies in the feed if they are not by followed users."; }; }; }; readonly labelersPref: { readonly type: "object"; readonly required: ["labelers"]; readonly properties: { readonly labelers: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#labelerPrefItem"; readonly type: "ref"; }; }; }; }; readonly interestsPref: { readonly type: "object"; readonly required: ["tags"]; readonly properties: { readonly tags: { readonly type: "array"; readonly items: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly maxLength: 100; readonly description: "A list of tags which describe the account owner's interests gathered during onboarding."; }; }; }; readonly knownFollowers: { readonly type: "object"; readonly required: ["count", "followers"]; readonly properties: { readonly count: { readonly type: "integer"; }; readonly followers: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly maxLength: 5; readonly minLength: 0; }; }; readonly description: "The subject's followers whom you also follow"; }; readonly mutedWordsPref: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly items: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#mutedWord"; readonly type: "ref"; }; readonly description: "A list of words the account owner has muted."; }; }; }; readonly savedFeedsPref: { readonly type: "object"; readonly required: ["pinned", "saved"]; readonly properties: { readonly saved: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly pinned: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly timelineIndex: { readonly type: "integer"; }; }; }; readonly threadViewPref: { readonly type: "object"; readonly properties: { readonly sort: { readonly type: "string"; readonly description: "Sorting mode for threads."; readonly knownValues: ["oldest", "newest", "most-likes", "random", "hotness"]; }; }; }; readonly declaredAgePref: { readonly type: "object"; readonly properties: { readonly isOverAge13: { readonly type: "boolean"; readonly description: "Indicates if the user has declared that they are over 13 years of age."; }; readonly isOverAge16: { readonly type: "boolean"; readonly description: "Indicates if the user has declared that they are over 16 years of age."; }; readonly isOverAge18: { readonly type: "boolean"; readonly description: "Indicates if the user has declared that they are over 18 years of age."; }; }; readonly 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."; }; readonly hiddenPostsPref: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly items: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly description: "A list of URIs of posts the account owner has hidden."; }; }; }; readonly labelerPrefItem: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; }; }; readonly mutedWordTarget: { readonly type: "string"; readonly maxLength: 640; readonly knownValues: ["content", "tag"]; readonly maxGraphemes: 64; }; readonly adultContentPref: { readonly type: "object"; readonly required: ["enabled"]; readonly properties: { readonly enabled: { readonly type: "boolean"; readonly default: false; }; }; }; readonly bskyAppStatePref: { readonly type: "object"; readonly properties: { readonly nuxs: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#nux"; readonly type: "ref"; }; readonly maxLength: 100; readonly description: "Storage for NUXs the user has encountered."; }; readonly queuedNudges: { readonly type: "array"; readonly items: { readonly type: "string"; readonly maxLength: 100; }; readonly maxLength: 1000; readonly description: "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user."; }; readonly activeProgressGuide: { readonly ref: "lex:app.bsky.actor.defs#bskyAppProgressGuide"; readonly type: "ref"; }; }; readonly description: "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this."; }; readonly contentLabelPref: { readonly type: "object"; readonly required: ["label", "visibility"]; readonly properties: { readonly label: { readonly type: "string"; }; readonly labelerDid: { readonly type: "string"; readonly format: "did"; readonly description: "Which labeler does this preference apply to? If undefined, applies globally."; }; readonly visibility: { readonly type: "string"; readonly knownValues: ["ignore", "show", "warn", "hide"]; }; }; }; readonly profileViewBasic: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly handle: { readonly type: "string"; readonly format: "handle"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly status: { readonly ref: "lex:app.bsky.actor.defs#statusView"; readonly type: "ref"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; readonly pronouns: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly associated: { readonly ref: "lex:app.bsky.actor.defs#profileAssociated"; readonly type: "ref"; }; readonly displayName: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly verification: { readonly ref: "lex:app.bsky.actor.defs#verificationState"; readonly type: "ref"; }; }; }; readonly savedFeedsPrefV2: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly items: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#savedFeed"; readonly type: "ref"; }; }; }; }; readonly verificationView: { readonly type: "object"; readonly required: ["issuer", "uri", "isValid", "createdAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "The AT-URI of the verification record."; }; readonly issuer: { readonly type: "string"; readonly format: "did"; readonly description: "The user who issued this verification."; }; readonly isValid: { readonly type: "boolean"; readonly description: "True if the verification passes validation, otherwise false."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "Timestamp when the verification was created."; }; }; readonly description: "An individual verification for an associated subject."; }; readonly profileAssociated: { readonly type: "object"; readonly properties: { readonly chat: { readonly ref: "lex:app.bsky.actor.defs#profileAssociatedChat"; readonly type: "ref"; }; readonly germ: { readonly ref: "lex:app.bsky.actor.defs#profileAssociatedGerm"; readonly type: "ref"; }; readonly lists: { readonly type: "integer"; }; readonly labeler: { readonly type: "boolean"; }; readonly feedgens: { readonly type: "integer"; }; readonly starterPacks: { readonly type: "integer"; }; readonly activitySubscription: { readonly ref: "lex:app.bsky.actor.defs#profileAssociatedActivitySubscription"; readonly type: "ref"; }; }; }; readonly verificationPrefs: { readonly type: "object"; readonly required: []; readonly properties: { readonly hideBadges: { readonly type: "boolean"; readonly default: false; readonly description: "Hide the blue check badges for verified accounts and trusted verifiers."; }; }; readonly description: "Preferences for how verified accounts appear in the app."; }; readonly verificationState: { readonly type: "object"; readonly required: ["verifications", "verifiedStatus", "trustedVerifierStatus"]; readonly properties: { readonly verifications: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.actor.defs#verificationView"; readonly type: "ref"; }; readonly description: "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included."; }; readonly verifiedStatus: { readonly type: "string"; readonly description: "The user's status as a verified account."; readonly knownValues: ["valid", "invalid", "none"]; }; readonly trustedVerifierStatus: { readonly type: "string"; readonly description: "The user's status as a trusted verifier."; readonly knownValues: ["valid", "invalid", "none"]; }; }; readonly description: "Represents the verification information about the user this object is attached to."; }; readonly personalDetailsPref: { readonly type: "object"; readonly properties: { readonly birthDate: { readonly type: "string"; readonly format: "datetime"; readonly description: "The birth date of account owner."; }; }; }; readonly profileViewDetailed: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly banner: { readonly type: "string"; readonly format: "uri"; }; readonly handle: { readonly type: "string"; readonly format: "handle"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly status: { readonly ref: "lex:app.bsky.actor.defs#statusView"; readonly type: "ref"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; readonly website: { readonly type: "string"; readonly format: "uri"; }; readonly pronouns: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly associated: { readonly ref: "lex:app.bsky.actor.defs#profileAssociated"; readonly type: "ref"; }; readonly pinnedPost: { readonly ref: "lex:com.atproto.repo.strongRef"; readonly type: "ref"; }; readonly postsCount: { readonly type: "integer"; }; readonly description: { readonly type: "string"; readonly maxLength: 2560; readonly maxGraphemes: 256; }; readonly displayName: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; readonly followsCount: { readonly type: "integer"; }; readonly verification: { readonly ref: "lex:app.bsky.actor.defs#verificationState"; readonly type: "ref"; }; readonly followersCount: { readonly type: "integer"; }; readonly joinedViaStarterPack: { readonly ref: "lex:app.bsky.graph.defs#starterPackViewBasic"; readonly type: "ref"; }; }; }; readonly bskyAppProgressGuide: { readonly type: "object"; readonly required: ["guide"]; readonly properties: { readonly guide: { readonly type: "string"; readonly maxLength: 100; }; }; readonly description: "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress."; }; readonly liveEventPreferences: { readonly type: "object"; readonly properties: { readonly hideAllFeeds: { readonly type: "boolean"; readonly default: false; readonly description: "Whether to hide all feeds from live events."; }; readonly hiddenFeedIds: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly description: "A list of feed IDs that the user has hidden from live events."; }; }; readonly description: "Preferences for live events."; }; readonly profileAssociatedChat: { readonly type: "object"; readonly required: ["allowIncoming"]; readonly properties: { readonly allowIncoming: { readonly type: "string"; readonly knownValues: ["all", "none", "following"]; }; }; }; readonly profileAssociatedGerm: { readonly type: "object"; readonly required: ["showButtonTo", "messageMeUrl"]; readonly properties: { readonly messageMeUrl: { readonly type: "string"; readonly format: "uri"; }; readonly showButtonTo: { readonly type: "string"; readonly knownValues: ["usersIFollow", "everyone"]; }; }; }; readonly postInteractionSettingsPref: { readonly type: "object"; readonly required: []; readonly properties: { readonly threadgateAllowRules: { readonly type: "array"; readonly items: { readonly 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"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply."; }; readonly postgateEmbeddingRules: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.feed.postgate#disableRule"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed."; }; }; readonly description: "Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly."; }; readonly profileAssociatedActivitySubscription: { readonly type: "object"; readonly required: ["allowSubscriptions"]; readonly properties: { readonly allowSubscriptions: { readonly type: "string"; readonly knownValues: ["followers", "mutuals", "none"]; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.embed.defs"; readonly defs: { readonly aspectRatio: { readonly type: "object"; readonly required: ["width", "height"]; readonly properties: { readonly width: { readonly type: "integer"; readonly minimum: 1; }; readonly height: { readonly type: "integer"; readonly minimum: 1; }; }; readonly description: "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.embed.external"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["external"]; readonly properties: { readonly external: { readonly ref: "lex:app.bsky.embed.external#external"; readonly type: "ref"; }; }; readonly description: "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post)."; }; readonly view: { readonly type: "object"; readonly required: ["external"]; readonly properties: { readonly external: { readonly ref: "lex:app.bsky.embed.external#viewExternal"; readonly type: "ref"; }; }; }; readonly external: { readonly type: "object"; readonly required: ["uri", "title", "description"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "uri"; }; readonly thumb: { readonly type: "blob"; readonly accept: ["image/*"]; readonly maxSize: 1000000; }; readonly title: { readonly type: "string"; }; readonly description: { readonly type: "string"; }; }; }; readonly viewExternal: { readonly type: "object"; readonly required: ["uri", "title", "description"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "uri"; }; readonly thumb: { readonly type: "string"; readonly format: "uri"; }; readonly title: { readonly type: "string"; }; readonly description: { readonly type: "string"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.embed.images"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["images"]; readonly properties: { readonly images: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.embed.images#image"; readonly type: "ref"; }; readonly maxLength: 4; }; }; }; readonly view: { readonly type: "object"; readonly required: ["images"]; readonly properties: { readonly images: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.embed.images#viewImage"; readonly type: "ref"; }; readonly maxLength: 4; }; }; }; readonly image: { readonly type: "object"; readonly required: ["image", "alt"]; readonly properties: { readonly alt: { readonly type: "string"; readonly description: "Alt text description of the image, for accessibility."; }; readonly image: { readonly type: "blob"; readonly accept: ["image/*"]; readonly maxSize: 2000000; readonly description: "The raw image file. May be up to 2 MB, formerly limited to 1 MB."; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; }; }; readonly viewImage: { readonly type: "object"; readonly required: ["thumb", "fullsize", "alt"]; readonly properties: { readonly alt: { readonly type: "string"; readonly description: "Alt text description of the image, for accessibility."; }; readonly thumb: { readonly type: "string"; readonly format: "uri"; readonly description: "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."; }; readonly fullsize: { readonly type: "string"; readonly format: "uri"; readonly 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."; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly description: "A set of images embedded in a Bluesky record (eg, a post)."; } | { readonly id: "app.bsky.embed.record"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["record"]; readonly properties: { readonly record: { readonly ref: "lex:com.atproto.repo.strongRef"; readonly type: "ref"; }; }; }; readonly view: { readonly type: "object"; readonly required: ["record"]; readonly properties: { readonly record: { readonly 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"]; readonly type: "union"; }; }; }; readonly viewRecord: { readonly type: "object"; readonly required: ["uri", "cid", "author", "value", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly value: { readonly type: "unknown"; readonly description: "The record data itself."; }; readonly author: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly embeds: { readonly type: "array"; readonly items: { readonly 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"]; readonly type: "union"; }; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; }; readonly quoteCount: { readonly type: "integer"; }; readonly replyCount: { readonly type: "integer"; }; readonly repostCount: { readonly type: "integer"; }; }; }; readonly viewBlocked: { readonly type: "object"; readonly required: ["uri", "blocked", "author"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly author: { readonly ref: "lex:app.bsky.feed.defs#blockedAuthor"; readonly type: "ref"; }; readonly blocked: { readonly type: "boolean"; readonly const: true; }; }; }; readonly viewDetached: { readonly type: "object"; readonly required: ["uri", "detached"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly detached: { readonly type: "boolean"; readonly const: true; }; }; }; readonly viewNotFound: { readonly type: "object"; readonly required: ["uri", "notFound"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly notFound: { readonly type: "boolean"; readonly const: true; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly 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."; } | { readonly id: "app.bsky.embed.recordWithMedia"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["record", "media"]; readonly properties: { readonly media: { readonly refs: ["lex:app.bsky.embed.images", "lex:app.bsky.embed.video", "lex:app.bsky.embed.external"]; readonly type: "union"; }; readonly record: { readonly ref: "lex:app.bsky.embed.record"; readonly type: "ref"; }; }; }; readonly view: { readonly type: "object"; readonly required: ["record", "media"]; readonly properties: { readonly media: { readonly refs: ["lex:app.bsky.embed.images#view", "lex:app.bsky.embed.video#view", "lex:app.bsky.embed.external#view"]; readonly type: "union"; }; readonly record: { readonly ref: "lex:app.bsky.embed.record#view"; readonly type: "ref"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly 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."; } | { readonly id: "app.bsky.embed.video"; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["video"]; readonly properties: { readonly alt: { readonly type: "string"; readonly maxLength: 10000; readonly description: "Alt text description of the video, for accessibility."; readonly maxGraphemes: 1000; }; readonly video: { readonly type: "blob"; readonly accept: ["video/mp4"]; readonly maxSize: 100000000; readonly description: "The mp4 video file. May be up to 100mb, formerly limited to 50mb."; }; readonly captions: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.embed.video#caption"; readonly type: "ref"; }; readonly maxLength: 20; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; readonly presentation: { readonly type: "string"; readonly description: "A hint to the client about how to present the video."; readonly knownValues: ["default", "gif"]; }; }; }; readonly view: { readonly type: "object"; readonly required: ["cid", "playlist"]; readonly properties: { readonly alt: { readonly type: "string"; readonly maxLength: 10000; readonly maxGraphemes: 1000; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly playlist: { readonly type: "string"; readonly format: "uri"; }; readonly thumbnail: { readonly type: "string"; readonly format: "uri"; }; readonly aspectRatio: { readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; readonly type: "ref"; }; readonly presentation: { readonly type: "string"; readonly description: "A hint to the client about how to present the video."; readonly knownValues: ["default", "gif"]; }; }; }; readonly caption: { readonly type: "object"; readonly required: ["lang", "file"]; readonly properties: { readonly file: { readonly type: "blob"; readonly accept: ["text/vtt"]; readonly maxSize: 20000; }; readonly lang: { readonly type: "string"; readonly format: "language"; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; readonly description: "A video embedded in a Bluesky record (eg, a post)."; } | { readonly id: "app.bsky.feed.defs"; readonly defs: { readonly postView: { readonly type: "object"; readonly required: ["uri", "cid", "author", "record", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly debug: { readonly type: "unknown"; readonly description: "Debug information for internal development"; }; readonly embed: { readonly 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"]; readonly type: "union"; }; readonly author: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly viewer: { readonly ref: "lex:app.bsky.feed.defs#viewerState"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; }; readonly quoteCount: { readonly type: "integer"; }; readonly replyCount: { readonly type: "integer"; }; readonly threadgate: { readonly ref: "lex:app.bsky.feed.defs#threadgateView"; readonly type: "ref"; }; readonly repostCount: { readonly type: "integer"; }; readonly bookmarkCount: { readonly type: "integer"; }; }; }; readonly replyRef: { readonly type: "object"; readonly required: ["root", "parent"]; readonly properties: { readonly root: { readonly refs: ["lex:app.bsky.feed.defs#postView", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; readonly parent: { readonly refs: ["lex:app.bsky.feed.defs#postView", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; readonly grandparentAuthor: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; readonly description: "When parent is a reply to another post, this is the author of that post."; }; }; }; readonly reasonPin: { readonly type: "object"; readonly properties: {}; }; readonly blockedPost: { readonly type: "object"; readonly required: ["uri", "blocked", "author"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly author: { readonly ref: "lex:app.bsky.feed.defs#blockedAuthor"; readonly type: "ref"; }; readonly blocked: { readonly type: "boolean"; readonly const: true; }; }; }; readonly interaction: { readonly type: "object"; readonly properties: { readonly item: { readonly type: "string"; readonly format: "at-uri"; }; readonly event: { readonly type: "string"; readonly knownValues: ["app.bsky.feed.defs#requestLess", "app.bsky.feed.defs#requestMore", "app.bsky.feed.defs#clickthroughItem", "app.bsky.feed.defs#clickthroughAuthor", "app.bsky.feed.defs#clickthroughReposter", "app.bsky.feed.defs#clickthroughEmbed", "app.bsky.feed.defs#interactionSeen", "app.bsky.feed.defs#interactionLike", "app.bsky.feed.defs#interactionRepost", "app.bsky.feed.defs#interactionReply", "app.bsky.feed.defs#interactionQuote", "app.bsky.feed.defs#interactionShare"]; }; readonly reqId: { readonly type: "string"; readonly maxLength: 100; readonly description: "Unique identifier per request that may be passed back alongside interactions."; }; readonly feedContext: { readonly type: "string"; readonly maxLength: 2000; readonly description: "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton."; }; }; }; readonly requestLess: { readonly type: "token"; readonly description: "Request that less content like the given feed item be shown in the feed"; }; readonly requestMore: { readonly type: "token"; readonly description: "Request that more content like the given feed item be shown in the feed"; }; readonly viewerState: { readonly type: "object"; readonly properties: { readonly like: { readonly type: "string"; readonly format: "at-uri"; }; readonly pinned: { readonly type: "boolean"; }; readonly repost: { readonly type: "string"; readonly format: "at-uri"; }; readonly bookmarked: { readonly type: "boolean"; }; readonly threadMuted: { readonly type: "boolean"; }; readonly replyDisabled: { readonly type: "boolean"; }; readonly embeddingDisabled: { readonly type: "boolean"; }; }; readonly description: "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."; }; readonly feedViewPost: { readonly type: "object"; readonly required: ["post"]; readonly properties: { readonly post: { readonly ref: "lex:app.bsky.feed.defs#postView"; readonly type: "ref"; }; readonly reply: { readonly ref: "lex:app.bsky.feed.defs#replyRef"; readonly type: "ref"; }; readonly reqId: { readonly type: "string"; readonly maxLength: 100; readonly description: "Unique identifier per request that may be passed back alongside interactions."; }; readonly reason: { readonly refs: ["lex:app.bsky.feed.defs#reasonRepost", "lex:app.bsky.feed.defs#reasonPin"]; readonly type: "union"; }; readonly feedContext: { readonly type: "string"; readonly maxLength: 2000; readonly description: "Context provided by feed generator that may be passed back alongside interactions."; }; }; }; readonly notFoundPost: { readonly type: "object"; readonly required: ["uri", "notFound"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly notFound: { readonly type: "boolean"; readonly const: true; }; }; }; readonly reasonRepost: { readonly type: "object"; readonly required: ["by", "indexedAt"]; readonly properties: { readonly by: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly blockedAuthor: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly viewer: { readonly ref: "lex:app.bsky.actor.defs#viewerState"; readonly type: "ref"; }; }; }; readonly generatorView: { readonly type: "object"; readonly required: ["uri", "cid", "did", "creator", "displayName", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly did: { readonly type: "string"; readonly format: "did"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.feed.defs#generatorViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; readonly minimum: 0; }; readonly contentMode: { readonly type: "string"; readonly knownValues: ["app.bsky.feed.defs#contentModeUnspecified", "app.bsky.feed.defs#contentModeVideo"]; }; readonly description: { readonly type: "string"; readonly maxLength: 3000; readonly maxGraphemes: 300; }; readonly displayName: { readonly type: "string"; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.richtext.facet"; readonly type: "ref"; }; }; readonly acceptsInteractions: { readonly type: "boolean"; }; }; }; readonly threadContext: { readonly type: "object"; readonly properties: { readonly rootAuthorLike: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly description: "Metadata about this post within the context of the thread it is in."; }; readonly threadViewPost: { readonly type: "object"; readonly required: ["post"]; readonly properties: { readonly post: { readonly ref: "lex:app.bsky.feed.defs#postView"; readonly type: "ref"; }; readonly parent: { readonly refs: ["lex:app.bsky.feed.defs#threadViewPost", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; readonly replies: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.feed.defs#threadViewPost", "lex:app.bsky.feed.defs#notFoundPost", "lex:app.bsky.feed.defs#blockedPost"]; readonly type: "union"; }; }; readonly threadContext: { readonly ref: "lex:app.bsky.feed.defs#threadContext"; readonly type: "ref"; }; }; }; readonly threadgateView: { readonly type: "object"; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly lists: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; }; }; readonly interactionLike: { readonly type: "token"; readonly description: "User liked the feed item"; }; readonly interactionSeen: { readonly type: "token"; readonly description: "Feed item was seen by user"; }; readonly clickthroughItem: { readonly type: "token"; readonly description: "User clicked through to the feed item"; }; readonly contentModeVideo: { readonly type: "token"; readonly description: "Declares the feed generator returns posts containing app.bsky.embed.video embeds."; }; readonly interactionQuote: { readonly type: "token"; readonly description: "User quoted the feed item"; }; readonly interactionReply: { readonly type: "token"; readonly description: "User replied to the feed item"; }; readonly interactionShare: { readonly type: "token"; readonly description: "User shared the feed item"; }; readonly skeletonFeedPost: { readonly type: "object"; readonly required: ["post"]; readonly properties: { readonly post: { readonly type: "string"; readonly format: "at-uri"; }; readonly reason: { readonly refs: ["lex:app.bsky.feed.defs#skeletonReasonRepost", "lex:app.bsky.feed.defs#skeletonReasonPin"]; readonly type: "union"; }; readonly feedContext: { readonly type: "string"; readonly maxLength: 2000; readonly description: "Context that will be passed through to client and may be passed to feed generator back alongside interactions."; }; }; }; readonly clickthroughEmbed: { readonly type: "token"; readonly description: "User clicked through to the embedded content of the feed item"; }; readonly interactionRepost: { readonly type: "token"; readonly description: "User reposted the feed item"; }; readonly skeletonReasonPin: { readonly type: "object"; readonly properties: {}; }; readonly clickthroughAuthor: { readonly type: "token"; readonly description: "User clicked through to the author of the feed item"; }; readonly clickthroughReposter: { readonly type: "token"; readonly description: "User clicked through to the reposter of the feed item"; }; readonly generatorViewerState: { readonly type: "object"; readonly properties: { readonly like: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly skeletonReasonRepost: { readonly type: "object"; readonly required: ["repost"]; readonly properties: { readonly repost: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly contentModeUnspecified: { readonly type: "token"; readonly description: "Declares the feed generator returns any types of posts."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly lexicon: 1; readonly id: "app.bsky.feed.post"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "Record containing a Bluesky post."; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["text", "createdAt"]; readonly properties: { readonly text: { readonly type: "string"; readonly maxLength: 3000; readonly maxGraphemes: 300; readonly description: "The primary post content. May be an empty string, if there are embeds."; }; readonly entities: { readonly type: "array"; readonly description: "DEPRECATED: replaced by app.bsky.richtext.facet."; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.feed.post#entity"; }; }; readonly facets: { readonly type: "array"; readonly description: "Annotations of text (mentions, URLs, hashtags, etc)"; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.richtext.facet"; }; }; readonly reply: { readonly type: "ref"; readonly ref: "lex:app.bsky.feed.post#replyRef"; }; readonly embed: { readonly type: "union"; readonly refs: ["lex:app.bsky.embed.images", "lex:app.bsky.embed.video", "lex:app.bsky.embed.gallery", "lex:app.bsky.embed.external", "lex:app.bsky.embed.record", "lex:app.bsky.embed.recordWithMedia"]; }; readonly langs: { readonly type: "array"; readonly description: "Indicates human language of post primary text content."; readonly maxLength: 3; readonly items: { readonly type: "string"; readonly format: "language"; }; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this post. Effectively content warnings."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; readonly tags: { readonly type: "array"; readonly description: "Additional hashtags, in addition to any included in post text and facets."; readonly maxLength: 8; readonly items: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; readonly description: "Client-declared timestamp when this post was originally created."; }; }; }; }; readonly replyRef: { readonly type: "object"; readonly required: ["root", "parent"]; readonly properties: { readonly root: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; }; readonly parent: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; }; }; }; readonly entity: { readonly type: "object"; readonly description: "Deprecated: use facets instead."; readonly required: ["index", "type", "value"]; readonly properties: { readonly index: { readonly type: "ref"; readonly ref: "lex:app.bsky.feed.post#textSlice"; }; readonly type: { readonly type: "string"; readonly description: "Expected values are 'mention' and 'link'."; }; readonly value: { readonly type: "string"; }; }; }; readonly textSlice: { readonly type: "object"; readonly description: "Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings."; readonly required: ["start", "end"]; readonly properties: { readonly start: { readonly type: "integer"; readonly minimum: 0; }; readonly end: { readonly type: "integer"; readonly minimum: 0; }; }; }; }; } | { readonly id: "app.bsky.feed.postgate"; readonly defs: { readonly main: { readonly key: "tid"; readonly type: "record"; readonly record: { readonly type: "object"; readonly required: ["post", "createdAt"]; readonly properties: { readonly post: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the post record."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly embeddingRules: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.feed.postgate#disableRule"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed."; }; readonly detachedEmbeddingUris: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 50; readonly description: "List of AT-URIs embedding this post that the author has detached from."; }; }; }; readonly description: "Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository."; }; readonly disableRule: { readonly type: "object"; readonly properties: {}; readonly description: "Disables embedding of this post."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.feed.threadgate"; readonly defs: { readonly main: { readonly key: "tid"; readonly type: "record"; readonly record: { readonly type: "object"; readonly required: ["post", "createdAt"]; readonly properties: { readonly post: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the post record."; }; readonly allow: { readonly type: "array"; readonly items: { readonly 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"]; readonly type: "union"; }; readonly maxLength: 5; readonly description: "List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly hiddenReplies: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 300; readonly description: "List of hidden reply URIs."; }; }; }; readonly description: "Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository."; }; readonly listRule: { readonly type: "object"; readonly required: ["list"]; readonly properties: { readonly list: { readonly type: "string"; readonly format: "at-uri"; }; }; readonly description: "Allow replies from actors on a list."; }; readonly mentionRule: { readonly type: "object"; readonly properties: {}; readonly description: "Allow replies from actors mentioned in your post."; }; readonly followerRule: { readonly type: "object"; readonly properties: {}; readonly description: "Allow replies from actors who follow you."; }; readonly followingRule: { readonly type: "object"; readonly properties: {}; readonly description: "Allow replies from actors you follow."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.graph.defs"; readonly defs: { readonly modlist: { readonly type: "token"; readonly description: "A list of actors to apply an aggregate moderation action (mute/block) on."; }; readonly listView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "name", "purpose", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.graph.defs#listViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly purpose: { readonly ref: "lex:app.bsky.graph.defs#listPurpose"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly description: { readonly type: "string"; readonly maxLength: 3000; readonly maxGraphemes: 300; }; readonly listItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.richtext.facet"; readonly type: "ref"; }; }; }; }; readonly curatelist: { readonly type: "token"; readonly description: "A list of actors used for curation purposes such as list feeds or interaction gating."; }; readonly listPurpose: { readonly type: "string"; readonly knownValues: ["app.bsky.graph.defs#modlist", "app.bsky.graph.defs#curatelist", "app.bsky.graph.defs#referencelist"]; }; readonly listItemView: { readonly type: "object"; readonly required: ["uri", "subject"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly subject: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; }; }; readonly relationship: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly blocking: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor blocks this DID, this is the AT-URI of the block record"; }; readonly blockedBy: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor is blocked by this DID, contains the AT-URI of the block record"; }; readonly following: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor follows this DID, this is the AT-URI of the follow record"; }; readonly followedBy: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor is followed by this DID, contains the AT-URI of the follow record"; }; readonly blockedByList: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record"; }; readonly blockingByList: { readonly type: "string"; readonly format: "at-uri"; readonly description: "if the actor blocks this DID via a block list, this is the AT-URI of the listblock record"; }; }; readonly description: "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)"; }; readonly listViewBasic: { readonly type: "object"; readonly required: ["uri", "cid", "name", "purpose"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.graph.defs#listViewerState"; readonly type: "ref"; }; readonly purpose: { readonly ref: "lex:app.bsky.graph.defs#listPurpose"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly listItemCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; readonly notFoundActor: { readonly type: "object"; readonly required: ["actor", "notFound"]; readonly properties: { readonly actor: { readonly type: "string"; readonly format: "at-identifier"; }; readonly notFound: { readonly type: "boolean"; readonly const: true; }; }; readonly description: "indicates that a handle or DID could not be resolved"; }; readonly referencelist: { readonly type: "token"; readonly description: "A list of actors used for only for reference purposes such as within a starter pack."; }; readonly listViewerState: { readonly type: "object"; readonly properties: { readonly muted: { readonly type: "boolean"; }; readonly blocked: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly starterPackView: { readonly type: "object"; readonly required: ["uri", "cid", "record", "creator", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly list: { readonly ref: "lex:app.bsky.graph.defs#listViewBasic"; readonly type: "ref"; }; readonly feeds: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.feed.defs#generatorView"; readonly type: "ref"; }; readonly maxLength: 3; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly joinedWeekCount: { readonly type: "integer"; readonly minimum: 0; }; readonly listItemsSample: { readonly type: "array"; readonly items: { readonly ref: "lex:app.bsky.graph.defs#listItemView"; readonly type: "ref"; }; readonly maxLength: 12; }; readonly joinedAllTimeCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; readonly starterPackViewBasic: { readonly type: "object"; readonly required: ["uri", "cid", "record", "creator", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly record: { readonly type: "unknown"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly listItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly joinedWeekCount: { readonly type: "integer"; readonly minimum: 0; }; readonly joinedAllTimeCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.labeler.defs"; readonly defs: { readonly labelerView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.labeler.defs#labelerViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; readonly minimum: 0; }; }; }; readonly labelerPolicies: { readonly type: "object"; readonly required: ["labelValues"]; readonly properties: { readonly labelValues: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#labelValue"; readonly type: "ref"; }; readonly description: "The label values which this labeler publishes. May include global or custom labels."; }; readonly labelValueDefinitions: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#labelValueDefinition"; readonly type: "ref"; }; readonly description: "Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler."; }; }; }; readonly labelerViewerState: { readonly type: "object"; readonly properties: { readonly like: { readonly type: "string"; readonly format: "at-uri"; }; }; }; readonly labelerViewDetailed: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "policies", "indexedAt"]; readonly properties: { readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly labels: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.label.defs#label"; readonly type: "ref"; }; }; readonly viewer: { readonly ref: "lex:app.bsky.labeler.defs#labelerViewerState"; readonly type: "ref"; }; readonly creator: { readonly ref: "lex:app.bsky.actor.defs#profileView"; readonly type: "ref"; }; readonly policies: { readonly ref: "lex:app.bsky.labeler.defs#labelerPolicies"; readonly type: "ref"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; readonly likeCount: { readonly type: "integer"; readonly minimum: 0; }; readonly reasonTypes: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.moderation.defs#reasonType"; readonly type: "ref"; }; readonly description: "The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed."; }; readonly subjectTypes: { readonly type: "array"; readonly items: { readonly ref: "lex:com.atproto.moderation.defs#subjectType"; readonly type: "ref"; }; readonly description: "The set of subject types (account, record, etc) this service accepts reports on."; }; readonly subjectCollections: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "nsid"; }; readonly description: "Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type."; }; }; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.notification.defs"; readonly defs: { readonly preference: { readonly type: "object"; readonly required: ["list", "push"]; readonly properties: { readonly list: { readonly type: "boolean"; }; readonly push: { readonly type: "boolean"; }; }; }; readonly preferences: { readonly type: "object"; readonly required: ["chat", "follow", "like", "likeViaRepost", "mention", "quote", "reply", "repost", "repostViaRepost", "starterpackJoined", "subscribedPost", "unverified", "verified"]; readonly properties: { readonly chat: { readonly ref: "lex:app.bsky.notification.defs#chatPreference"; readonly type: "ref"; }; readonly like: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly quote: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly reply: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly follow: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly repost: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly mention: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly verified: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; readonly unverified: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; readonly likeViaRepost: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly subscribedPost: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; readonly repostViaRepost: { readonly ref: "lex:app.bsky.notification.defs#filterablePreference"; readonly type: "ref"; }; readonly starterpackJoined: { readonly ref: "lex:app.bsky.notification.defs#preference"; readonly type: "ref"; }; }; }; readonly recordDeleted: { readonly type: "object"; readonly properties: {}; }; readonly chatPreference: { readonly type: "object"; readonly required: ["include", "push"]; readonly properties: { readonly push: { readonly type: "boolean"; }; readonly include: { readonly type: "string"; readonly knownValues: ["all", "accepted"]; }; }; }; readonly activitySubscription: { readonly type: "object"; readonly required: ["post", "reply"]; readonly properties: { readonly post: { readonly type: "boolean"; }; readonly reply: { readonly type: "boolean"; }; }; }; readonly filterablePreference: { readonly type: "object"; readonly required: ["include", "list", "push"]; readonly properties: { readonly list: { readonly type: "boolean"; }; readonly push: { readonly type: "boolean"; }; readonly include: { readonly type: "string"; readonly knownValues: ["all", "follows"]; }; }; }; readonly subjectActivitySubscription: { readonly type: "object"; readonly required: ["subject", "activitySubscription"]; readonly properties: { readonly subject: { readonly type: "string"; readonly format: "did"; }; readonly activitySubscription: { readonly ref: "lex:app.bsky.notification.defs#activitySubscription"; readonly type: "ref"; }; }; readonly description: "Object used to store activity subscription data in stash."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly id: "app.bsky.richtext.facet"; readonly defs: { readonly tag: { readonly type: "object"; readonly required: ["tag"]; readonly properties: { readonly tag: { readonly type: "string"; readonly maxLength: 640; readonly maxGraphemes: 64; }; }; readonly description: "Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags')."; }; readonly link: { readonly type: "object"; readonly required: ["uri"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "uri"; }; }; readonly description: "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL."; }; readonly main: { readonly type: "object"; readonly required: ["index", "features"]; readonly properties: { readonly index: { readonly ref: "lex:app.bsky.richtext.facet#byteSlice"; readonly type: "ref"; }; readonly features: { readonly type: "array"; readonly items: { readonly refs: ["lex:app.bsky.richtext.facet#mention", "lex:app.bsky.richtext.facet#link", "lex:app.bsky.richtext.facet#tag"]; readonly type: "union"; }; }; }; readonly description: "Annotation of a sub-string within rich text."; }; readonly mention: { readonly type: "object"; readonly required: ["did"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; }; readonly description: "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID."; }; readonly byteSlice: { readonly type: "object"; readonly required: ["byteStart", "byteEnd"]; readonly properties: { readonly byteEnd: { readonly type: "integer"; readonly minimum: 0; }; readonly byteStart: { readonly type: "integer"; readonly minimum: 0; }; }; readonly description: "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets."; }; }; readonly $type: "com.atproto.lexicon.schema"; readonly lexicon: 1; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.defs"; readonly defs: { readonly collectionView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "name", "indexedAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly creator: { readonly type: "ref"; readonly ref: "lex:app.bsky.actor.defs#profileView"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.richtext.facet"; }; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly collectionItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly labels: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.getItem"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get a single emoji from a repository. Requires auth."; readonly parameters: { readonly type: "params"; readonly required: ["repo", "name"]; readonly properties: { readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo."; }; readonly name: { readonly type: "string"; readonly description: "The Bluemoji alias/rkey."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri", "item"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly item: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.item"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "A custom emoji. The record key is the canonical alias for ASCII aliases, or its RFC 3492 Punycode encoding (xn-- prefixed) for internationalised aliases; see Bluemoji RFC 0005."; readonly key: "any"; readonly record: { readonly type: "object"; readonly required: ["name", "createdAt", "formats"]; readonly properties: { readonly name: { readonly type: "string"; readonly description: "Should be in the format :emoji:"; }; readonly alt: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly formats: { readonly type: "union"; readonly description: "Open union to allow for future formats. #formats_v0 is deprecated: writers MUST write #formats_v1 (see RFC 0001 Adoption strategy / RFC 0005). Readers SHOULD continue to accept #formats_v0 for historical records."; readonly refs: ["lex:blue.moji.collection.item#formats_v0", "lex:blue.moji.collection.item#formats_v1"]; readonly closed: false; }; readonly stickerFormats: { readonly type: "union"; readonly description: "Optional full-size renditions for use as a sticker (post attachment via blue.moji.embed.sticker). Presence of this field marks the item as sticker-capable; items with only 'formats' are inline emoji."; readonly refs: ["lex:blue.moji.collection.item#stickerFormats_v0"]; readonly closed: false; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this emoji. Effectively content warnings."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; readonly copyOf: { readonly type: "string"; readonly format: "at-uri"; }; readonly fallbackText: { readonly type: "string"; readonly maxLength: 1; readonly default: "◌"; }; }; }; }; readonly formats_v0: { readonly type: "object"; readonly description: "DEPRECATED. apng_128/lottie are raw Bytes (not Blob), which makes them invisible to blob-based image moderation pipelines and requires a getRecord round-trip to render. New writes MUST use #formats_v1. Retained only so existing v0 records remain readable."; readonly properties: { readonly original: { readonly type: "blob"; readonly accept: ["image/*", "application/lottie+zip"]; readonly maxSize: 1000000; }; readonly png_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v0"; }; readonly apng_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#bytes_v0"; }; readonly gif_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v0"; }; readonly webp_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v0"; }; readonly lottie: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#bytes_v0"; }; }; }; readonly formats_v1: { readonly type: "object"; readonly properties: { readonly original: { readonly type: "blob"; readonly accept: ["image/*", "application/lottie+zip"]; readonly maxSize: 1000000; }; readonly png_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly apng_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly gif_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly webp_128: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; readonly lottie: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_v1"; }; }; }; readonly stickerFormats_v0: { readonly type: "object"; readonly description: "Full-size (up to 512×512) renditions for sharing as a sticker. Raster formats should be exactly 512px on the longest edge."; readonly properties: { readonly png_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly webp_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly gif_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly apng_512: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; readonly lottie: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#blob_sticker"; }; }; }; readonly blob_sticker: { readonly type: "blob"; readonly maxSize: 512000; readonly description: "Stickers render one-per-post at full size, so a larger budget than inline emoji is acceptable."; }; readonly blob_v1: { readonly type: "blob"; readonly maxSize: 128000; readonly description: "Limiting blobs to 128kb because there may be many on page and these get optimised by ImgProxy anyway"; }; readonly blob_v0: { readonly type: "blob"; readonly maxSize: 262144; readonly description: "Limiting blobs to 256kb because there may be many on page and these get optimised by ImgProxy anyway"; }; readonly bytes_v0: { readonly type: "bytes"; readonly maxLength: 65536; readonly description: "64kb should be enough for anybody"; }; readonly itemView: { readonly type: "object"; readonly required: ["name", "formats"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the source item record. Views need this so consumers can derive the owning DID for blob URL construction."; }; readonly cid: { readonly type: "string"; readonly format: "cid"; readonly description: "CID of the source item record, so consumers can build a com.atproto.repo.strongRef to it (e.g. for moderation reports) without a separate lookup."; }; readonly did: { readonly type: "string"; readonly format: "did"; readonly description: "DID of the repo that owns this item's blobs."; }; readonly name: { readonly type: "string"; }; readonly alt: { readonly type: "string"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly formats: { readonly type: "union"; readonly refs: ["lex:blue.moji.collection.item#formats_v0", "lex:blue.moji.collection.item#formats_v1"]; }; readonly stickerFormats: { readonly type: "union"; readonly refs: ["lex:blue.moji.collection.item#stickerFormats_v0"]; readonly closed: false; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; }; readonly copyOf: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the item this was directly copied from, mirroring the record's own copyOf field."; }; readonly originalCreator: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#originalCreator"; readonly description: "The account at the root of this item's copyOf chain (walked server-side, since a copy can itself be copied), if this item is a copy at all. Omitted for original items. If a link in the chain is missing (e.g. a source account deleted its copy), resolves to whatever the chain reaches rather than failing outright."; }; }; }; readonly originalCreator: { readonly type: "object"; readonly required: ["did", "handle"]; readonly properties: { readonly did: { readonly type: "string"; readonly format: "did"; }; readonly handle: { readonly type: "string"; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.listCollection"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "List a range of Bluemoji in a repository. Public read: pass 'repo' to browse any repo's collection. If 'repo' is omitted, the caller must be authenticated and their own collection is listed."; readonly parameters: { readonly type: "params"; readonly properties: { readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo to list. Defaults to the authenticated caller if omitted."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; readonly description: "The number of records to return."; }; readonly cursor: { readonly type: "string"; }; readonly reverse: { readonly type: "boolean"; readonly description: "Flag to reverse the order of the returned records. Default is oldest-first (ascending by creation time), mirroring com.atproto.repo.listRecords."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly items: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.putItem"; readonly defs: { readonly main: { readonly type: "procedure"; readonly description: "Write a Bluemoji record, creating or updating it as needed. Requires auth, implemented by AppView."; readonly input: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["repo", "item"]; readonly properties: { readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo (aka, current account)."; }; readonly validate: { readonly type: "boolean"; readonly default: true; readonly description: "Can be set to 'false' to skip Lexicon schema validation of record data."; }; readonly item: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; }; }; }; readonly errors: []; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.saveToCollection"; readonly defs: { readonly main: { readonly type: "procedure"; readonly description: "Copy a single emoji from another repo. Requires auth."; readonly input: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["source", "name"]; readonly properties: { readonly source: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "The handle or DID of the repo to copy from."; }; readonly name: { readonly type: "string"; readonly description: "The source Bluemoji alias or rkey. Internationalised aliases are accepted and encoded per RFC 0005."; readonly maxLength: 512; }; readonly renameTo: { readonly type: "string"; readonly description: "The alias to save the Bluemoji to in the current logged-in user's repo."; }; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri", "item"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly item: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; readonly errors: [{ readonly name: "EmojiNotFound"; readonly description: "Indicates the named Bluemoji was not found in the source repo."; }, { readonly name: "DestinationExists"; readonly description: "Indicates another Bluemoji with the same name already exists in the source repo. Set renameTo to rename."; }]; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.searchItems"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Search Bluemoji by alias or alt text. Intended as shared infrastructure so clients don't need to maintain their own emoji search index. Two distinct matching modes depending on 'repo': pass it for substring matching within one repo's own collection (suited to live-typing :-autocomplete in a composer — every keystroke narrows correctly, including partial prefixes); omit it for network-wide full-text search (subject to takedown filtering), which matches whole words/tokens rather than arbitrary substrings — e.g. 'cat' can match ':blobcat:' but 'blob' alone may not, since the underlying index is word-oriented. Network-wide mode suits a 'discover emoji' browse/search surface better than character-by-character autocomplete."; readonly parameters: { readonly type: "params"; readonly required: ["q"]; readonly properties: { readonly q: { readonly type: "string"; readonly description: "Search query, matched against the alias and alt text."; readonly minLength: 1; readonly maxLength: 100; }; readonly repo: { readonly type: "string"; readonly format: "at-identifier"; readonly description: "Restrict results to a single repo's collection, using substring matching. Network-wide whole-word search when omitted."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 25; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["items"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly items: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.collection.transcodeAnimation"; readonly defs: { readonly main: { readonly type: "procedure"; readonly description: "Server-side utility: transcodes an uploaded APNG (or other ffmpeg-readable animated image) into properly-sized animated WebP renditions, sidestepping imgproxy's lack of APNG support (see RFC 0001 / imgproxy#1222) by never storing raw APNG in the first place. Pure transcode — does not touch the PDS or write any record; the caller uploads the returned bytes via dev.hatk.uploadBlob itself, same as any other format. Input/output are base64 JSON, not raw bytes, because this AppView's custom-procedure dispatch always JSON-parses the request body (only the built-in dev.hatk.uploadBlob gets raw-body handling)."; readonly input: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["data"]; readonly properties: { readonly data: { readonly type: "string"; readonly description: "Base64-encoded source file bytes (e.g. an APNG)."; }; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly properties: { readonly webp128: { readonly type: "string"; readonly description: "Base64-encoded 128x128 animated WebP, for the inline formats_v1#webp_128 slot."; }; readonly webp512: { readonly type: "string"; readonly description: "Base64-encoded 512x512 animated WebP, for the stickerFormats_v0#webp_512 slot."; }; }; }; }; readonly errors: []; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.embed.sticker"; readonly defs: { readonly main: { readonly type: "object"; readonly description: "A full-sized Bluemoji sticker attached to a post as media, in the style of app.bsky.embed.external. References a blue.moji.collection.item record in the sticker owner's repo."; readonly required: ["sticker"]; readonly properties: { readonly sticker: { readonly type: "ref"; readonly ref: "lex:blue.moji.embed.sticker#sticker"; }; }; }; readonly sticker: { readonly type: "object"; readonly description: "SECURITY: did/name/formats are self-attested by the posting client, like blue.moji.richtext.facet. Verify against the record strongRef (or by re-deriving the rkey from name and looking up did's blue.moji.collection.item) before rendering an image, if the render surface matters for trust."; readonly required: ["did", "name", "formats"]; readonly properties: { readonly record: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; readonly description: "Strong reference to the source blue.moji.collection.item record. Use this as the verification anchor: resolve it and compare formats before trusting this embed's claims."; }; readonly did: { readonly type: "string"; readonly format: "did"; readonly description: "DID of the repo that owns the sticker record. Combined with the format CIDs to construct blob/CDN URLs without a getRecord round-trip, mirroring blue.moji.richtext.facet. Self-attested; see security note on this object."; }; readonly name: { readonly type: "string"; readonly description: "Colon-wrapped alias of the source Bluemoji (e.g. :blobcat:). Implementers should use this as fallback text when assets are unavailable."; }; readonly alt: { readonly type: "string"; readonly description: "Alt text description of the sticker, for accessibility."; }; readonly aspectRatio: { readonly type: "ref"; readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; }; readonly formats: { readonly type: "union"; readonly description: "CIDs of the full-size sticker renditions. Open union to allow future formats."; readonly refs: ["lex:blue.moji.embed.sticker#formats_v0"]; readonly closed: false; }; }; }; readonly formats_v0: { readonly type: "object"; readonly description: "CIDs of the full-size (512px-class) blobs stored in the sticker owner's repo under blue.moji.collection.item stickerFormats. CID-only, like blue.moji.richtext.facet#formats_v1, because blobs cannot be referenced across repos."; readonly properties: { readonly png_512: { readonly type: "string"; readonly format: "cid"; }; readonly webp_512: { readonly type: "string"; readonly format: "cid"; }; readonly gif_512: { readonly type: "string"; readonly format: "cid"; }; readonly apng_512: { readonly type: "string"; readonly format: "cid"; }; readonly lottie: { readonly type: "string"; readonly format: "cid"; }; }; }; readonly view: { readonly type: "object"; readonly required: ["sticker"]; readonly properties: { readonly sticker: { readonly type: "ref"; readonly ref: "lex:blue.moji.embed.sticker#viewSticker"; }; }; }; readonly viewSticker: { readonly type: "object"; readonly required: ["fullsize", "name"]; readonly properties: { readonly fullsize: { readonly type: "string"; readonly format: "uri"; readonly description: "Fully-qualified URL of the full-size sticker asset."; }; readonly thumb: { readonly type: "string"; readonly format: "uri"; readonly description: "URL of the 128px inline-emoji rendition, if available."; }; readonly name: { readonly type: "string"; }; readonly alt: { readonly type: "string"; }; readonly aspectRatio: { readonly type: "ref"; readonly ref: "lex:app.bsky.embed.defs#aspectRatio"; }; readonly record: { readonly type: "ref"; readonly ref: "lex:com.atproto.repo.strongRef"; }; readonly labels: { readonly type: "array"; readonly description: "AppViews producing this view MUST populate labels (and reflect the source item's adultOnly) from the verified blue.moji.collection.item record, not from the embed's own self-attested fields — see the security note on #sticker. Consumers SHOULD warn or blur before rendering fullsize/thumb when present."; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.feed.defs"; readonly defs: { readonly reactionView: { readonly type: "object"; readonly description: "A single reaction by a single actor."; readonly required: ["uri", "actor", "emoji", "createdAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly actor: { readonly type: "ref"; readonly ref: "lex:app.bsky.actor.defs#profileViewBasic"; }; readonly emoji: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.reaction#emojiRef"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly reactionGroup: { readonly type: "object"; readonly description: "Aggregated reactions to a subject, grouped by emoji item URI."; readonly required: ["emoji", "count"]; readonly properties: { readonly emoji: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.reaction#emojiRef"; }; readonly count: { readonly type: "integer"; readonly minimum: 0; }; readonly viewer: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the requesting account's reaction record in this group, if any. Enables un-reacting."; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.feed.getReactionCounts"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Batch version of blue.moji.feed.getReactions for timelines: aggregated reaction groups (counts only, no paginated individual reactions) for many posts in one call, avoiding an N+1 fetch per rendered post. Use getReactions for a single post's full detail (e.g. its own dedicated view with an actor list)."; readonly parameters: { readonly type: "params"; readonly required: ["uris"]; readonly properties: { readonly uris: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 50; readonly description: "AT-URIs of the subject posts. Send as a single comma-joined value (e.g. 'uris=at://a,at://b'), not repeated 'uris=' keys — this AppView's implementation currently only sees the last occurrence of a repeated query key. AT-URIs never contain commas (record keys exclude them), so this is unambiguous."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["counts"]; readonly properties: { readonly counts: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.getReactionCounts#subjectReactionCounts"; }; }; }; }; }; }; readonly subjectReactionCounts: { readonly type: "object"; readonly required: ["uri", "groups"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the subject post. Subjects with zero reactions are omitted from the response rather than included with an empty groups array."; }; readonly groups: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionGroup"; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.feed.getReactions"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get reactions for a post: aggregated per-emoji groups plus a paginated list of individual reactions."; readonly parameters: { readonly type: "params"; readonly required: ["uri"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the subject post."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["uri", "groups", "reactions"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cursor: { readonly type: "string"; }; readonly groups: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionGroup"; }; }; readonly reactions: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionView"; }; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.feed.getTrending"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "AppView-computed \"Weekly Top Bluemoji\": the custom emoji reacted with by the most distinct actors in a recent window. Purely a discovery/trending signal derived from indexed blue.moji.feed.reaction records verified against their source blue.moji.collection.item — not a network-wide count (only reflects reactions this AppView has indexed), and not the same per-post cap applied by getReactions/getReactionCounts."; readonly parameters: { readonly type: "params"; readonly properties: { readonly period: { readonly type: "string"; readonly default: "week"; readonly description: "Trending window: 'day', 'week', or 'month'. Any other value is rejected."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 25; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["period", "items"]; readonly properties: { readonly period: { readonly type: "string"; }; readonly items: { readonly type: "array"; readonly description: "blue.moji.feed.defs#reactionGroup entries reused here: 'count' is the distinct-reactor count within the window (not a per-post count), and 'viewer' is always omitted since there's no single subject."; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.defs#reactionGroup"; }; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.feed.reaction"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "A custom-emoji reaction to a post. Analogous to app.bsky.feed.like, but the reaction glyph is a Bluemoji. Duplicate reactions (same subject + same emoji URI by the same actor) should be ignored by AppViews."; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["subject", "emoji", "createdAt"]; readonly properties: { readonly subject: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the post being reacted to."; }; readonly subjectCid: { readonly type: "string"; readonly format: "cid"; readonly description: "CID of the subject post at reaction time, for strong referencing."; }; readonly emoji: { readonly type: "ref"; readonly ref: "lex:blue.moji.feed.reaction#emojiRef"; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; }; readonly emojiRef: { readonly type: "object"; readonly description: "Denormalized reference to the Bluemoji used, mirroring blue.moji.richtext.facet: CID-only formats let consumers build blob/CDN URLs without a getRecord round-trip. AppViews should verify against the indexed item where possible."; readonly required: ["uri", "name", "formats"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; readonly description: "AT-URI of the blue.moji.collection.item record. The owning DID is derived from this."; }; readonly cid: { readonly type: "string"; readonly format: "cid"; readonly description: "CID of the blue.moji.collection.item record, populated by AppViews at hydration time (like adultOnly) so consumers can build a com.atproto.repo.strongRef for moderation reports without a separate lookup. Not meaningful on write."; }; readonly name: { readonly type: "string"; readonly description: "Colon-wrapped alias, e.g. :blobcat:. Used as fallback text."; }; readonly alt: { readonly type: "string"; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; readonly description: "MUST be populated by AppViews from the source item's adultOnly at hydration time (the source item is the trust anchor; do not trust a reactor-supplied value on write). Consumers SHOULD warn or blur before rendering when true, consistent with how the same item's adultOnly is handled elsewhere (facets, collection views)."; }; readonly formats: { readonly type: "union"; readonly refs: ["lex:blue.moji.richtext.facet#formats_v0", "lex:blue.moji.richtext.facet#formats_v1"]; readonly closed: false; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.packs.defs"; readonly defs: { readonly packViewBasic: { readonly type: "object"; readonly required: ["uri", "cid", "name"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.richtext.facet"; }; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly itemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly labels: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; readonly viewer: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewerState"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly packView: { readonly type: "object"; readonly required: ["uri", "cid", "creator", "name", "indexedAt"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly creator: { readonly type: "ref"; readonly ref: "lex:app.bsky.actor.defs#profileView"; }; readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:app.bsky.richtext.facet"; }; }; readonly avatar: { readonly type: "string"; readonly format: "uri"; }; readonly packItemCount: { readonly type: "integer"; readonly minimum: 0; }; readonly labels: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#label"; }; }; readonly viewer: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewerState"; }; readonly indexedAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; readonly packItemView: { readonly type: "object"; readonly required: ["uri", "subject"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly subject: { readonly type: "ref"; readonly ref: "lex:blue.moji.collection.item#itemView"; }; }; }; readonly packViewerState: { readonly type: "object"; readonly properties: { readonly savedToCollection: { readonly type: "boolean"; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.packs.getActorPacks"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get a list of Bluemoji packs created by the actor."; readonly parameters: { readonly type: "params"; readonly required: ["actor"]; readonly properties: { readonly actor: { readonly type: "string"; readonly format: "at-identifier"; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["packs"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly packs: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewBasic"; }; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.packs.getPack"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Gets a 'view' (with additional context) of a specified pack."; readonly parameters: { readonly type: "params"; readonly required: ["pack"]; readonly properties: { readonly pack: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) of the pack record to hydrate."; }; readonly limit: { readonly type: "integer"; readonly minimum: 1; readonly maximum: 100; readonly default: 50; }; readonly cursor: { readonly type: "string"; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["pack", "items"]; readonly properties: { readonly cursor: { readonly type: "string"; }; readonly pack: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packView"; }; readonly items: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packItemView"; }; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.packs.getPacks"; readonly defs: { readonly main: { readonly type: "query"; readonly description: "Get views for a list of Bluemoji packs."; readonly parameters: { readonly type: "params"; readonly required: ["uris"]; readonly properties: { readonly uris: { readonly type: "array"; readonly items: { readonly type: "string"; readonly format: "at-uri"; }; readonly maxLength: 25; readonly description: "Send as a single comma-joined value (e.g. 'uris=at://a,at://b'), not repeated 'uris=' keys — this AppView's implementation currently only sees the last occurrence of a repeated query key. AT-URIs never contain commas (record keys exclude them), so this is unambiguous."; }; }; }; readonly output: { readonly encoding: "application/json"; readonly schema: { readonly type: "object"; readonly required: ["packs"]; readonly properties: { readonly packs: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.packs.defs#packViewBasic"; }; }; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.packs.pack"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "A shareable Bluemoji pack"; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["name", "createdAt"]; readonly properties: { readonly name: { readonly type: "string"; readonly maxLength: 64; readonly minLength: 1; }; readonly description: { readonly type: "string"; readonly maxGraphemes: 300; readonly maxLength: 3000; }; readonly descriptionFacets: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:blue.moji.richtext.facet"; }; }; readonly icon: { readonly type: "blob"; readonly accept: ["image/png", "image/jpeg"]; readonly maxSize: 1000000; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this emoji. Effectively content warnings."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.packs.packitem"; readonly defs: { readonly main: { readonly type: "record"; readonly description: "Record representing a Bluemoji's inclusion in a specific pack. The AppView will ignore duplicate item records."; readonly key: "tid"; readonly record: { readonly type: "object"; readonly required: ["subject", "pack", "createdAt"]; readonly properties: { readonly subject: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the Bluemoji item record (blue.moji.collection.item)."; }; readonly pack: { readonly type: "string"; readonly format: "at-uri"; readonly description: "Reference (AT-URI) to the pack record (blue.moji.packs.pack)."; }; readonly createdAt: { readonly type: "string"; readonly format: "datetime"; }; }; }; }; }; } | { readonly lexicon: 1; readonly id: "blue.moji.richtext.facet"; readonly defs: { readonly main: { readonly type: "object"; readonly description: "SECURITY: did/name/formats/adultOnly/labels are all self-attested by the posting client at write time and are not re-validated by the PDS. Consumers that render an image from this facet without first verifying it against the referenced blue.moji.collection.item record (e.g. via an AppView's blue.moji.collection.getItem, hydrated from firehose-verified data) are trusting the poster to have told the truth about whose emoji it is, what it looks like, and whether it needs a content warning. In particular, adultOnly/labels here MUST NOT be trusted for moderation decisions — a poster could simply omit them to bypass a warning the source item's own record carries. Verified renderers should use the source item's adultOnly/labels instead. Renderers that skip verification SHOULD treat the facet as decorative/best-effort only, exactly as they would an unverified embed."; readonly required: ["did", "name", "formats"]; readonly properties: { readonly did: { readonly type: "string"; readonly description: "DID of the user posting the Bluemoji. Self-attested; see security note on this object."; }; readonly name: { readonly type: "string"; readonly description: "Name of the Bluemoji in :emoji: format"; }; readonly alt: { readonly type: "string"; }; readonly adultOnly: { readonly type: "boolean"; readonly default: false; readonly description: "Self-attested by the poster; see security note on this object. Verified renderers SHOULD use the source item's adultOnly instead."; }; readonly labels: { readonly type: "union"; readonly description: "Self-label values for this emoji. Effectively content warnings. Self-attested by the poster; see security note on this object."; readonly refs: ["lex:com.atproto.label.defs#selfLabels"]; }; readonly formats: { readonly type: "union"; readonly description: "#formats_v0 is deprecated (see RFC 0001); writers MUST produce #formats_v1."; readonly refs: ["lex:blue.moji.richtext.facet#formats_v0", "lex:blue.moji.richtext.facet#formats_v1"]; readonly closed: false; }; }; }; readonly formats_v1: { readonly type: "object"; readonly description: "Only the CID is provided; combine with the facet's did to construct a blob/CDN URL with no additional round-trip. All formats, including animated ones, are CIDs of Blob-typed values on the source record."; readonly properties: { readonly png_128: { readonly type: "string"; readonly format: "cid"; }; readonly webp_128: { readonly type: "string"; readonly format: "cid"; }; readonly gif_128: { readonly type: "string"; readonly format: "cid"; }; readonly apng_128: { readonly type: "string"; readonly format: "cid"; }; readonly lottie: { readonly type: "string"; readonly format: "cid"; }; }; }; readonly formats_v0: { readonly type: "object"; readonly description: "DEPRECATED, corresponds to blue.moji.collection.item#formats_v0. png/webp/gif are CIDs combinable with the facet's did to build a blob/CDN URL; apng_128/lottie are raw Bytes on the source record (not Blob) so are only marked present here as a boolean and require a com.atproto.repo.getRecord round-trip to render."; readonly properties: { readonly png_128: { readonly type: "string"; readonly format: "cid"; }; readonly webp_128: { readonly type: "string"; readonly format: "cid"; }; readonly gif_128: { readonly type: "string"; readonly format: "cid"; }; readonly apng_128: { readonly type: "boolean"; readonly default: false; }; readonly lottie: { readonly type: "boolean"; readonly default: false; }; }; }; }; } | { readonly lexicon: 1; readonly id: "com.atproto.label.defs"; readonly defs: { readonly label: { readonly type: "object"; readonly description: "Metadata tag on an atproto resource (eg, repo or record)."; readonly required: ["src", "uri", "val", "cts"]; readonly properties: { readonly ver: { readonly type: "integer"; }; readonly src: { readonly type: "string"; readonly format: "did"; }; readonly uri: { readonly type: "string"; readonly format: "uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; readonly val: { readonly type: "string"; readonly maxLength: 128; }; readonly neg: { readonly type: "boolean"; }; readonly cts: { readonly type: "string"; readonly format: "datetime"; }; readonly exp: { readonly type: "string"; readonly format: "datetime"; }; readonly sig: { readonly type: "bytes"; }; }; }; readonly selfLabels: { readonly type: "object"; readonly description: "Metadata tags on an atproto record, published by the author within the record."; readonly required: ["values"]; readonly properties: { readonly values: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#selfLabel"; }; readonly maxLength: 10; }; }; }; readonly selfLabel: { readonly type: "object"; readonly required: ["val"]; readonly properties: { readonly val: { readonly type: "string"; readonly maxLength: 128; }; }; }; readonly labelValueDefinition: { readonly type: "object"; readonly description: "Declares a label value and its expected interpretations and behaviors."; readonly required: ["identifier", "severity", "blurs", "locales"]; readonly properties: { readonly identifier: { readonly type: "string"; readonly maxLength: 100; }; readonly severity: { readonly type: "string"; readonly knownValues: ["inform", "alert", "none"]; }; readonly blurs: { readonly type: "string"; readonly knownValues: ["content", "media", "none"]; }; readonly defaultSetting: { readonly type: "string"; readonly knownValues: ["ignore", "warn", "hide"]; }; readonly adultOnly: { readonly type: "boolean"; }; readonly locales: { readonly type: "array"; readonly items: { readonly type: "ref"; readonly ref: "lex:com.atproto.label.defs#labelValueDefinitionStrings"; }; }; }; }; readonly labelValueDefinitionStrings: { readonly type: "object"; readonly required: ["lang", "name", "description"]; readonly properties: { readonly lang: { readonly type: "string"; readonly format: "language"; }; readonly name: { readonly type: "string"; readonly maxLength: 640; }; readonly description: { readonly type: "string"; readonly maxLength: 100000; }; }; }; readonly labelValue: { readonly type: "string"; readonly knownValues: ["!hide", "!no-promote", "!warn", "!no-unauthenticated", "dmca-violation", "doxxing", "porn", "sexual", "nudity", "nsfl", "gore"]; }; }; } | { readonly lexicon: 1; readonly id: "com.atproto.moderation.defs"; readonly defs: { readonly reasonType: { readonly type: "string"; readonly knownValues: ["com.atproto.moderation.defs#reasonSpam", "com.atproto.moderation.defs#reasonViolation", "com.atproto.moderation.defs#reasonMisleading", "com.atproto.moderation.defs#reasonSexual", "com.atproto.moderation.defs#reasonRude", "com.atproto.moderation.defs#reasonOther", "com.atproto.moderation.defs#reasonAppeal"]; }; readonly reasonSpam: { readonly type: "token"; readonly description: "Spam: frequent unwanted promotion, replies, mentions."; }; readonly reasonViolation: { readonly type: "token"; readonly description: "Direct violation of server rules, laws, terms of service."; }; readonly reasonMisleading: { readonly type: "token"; readonly description: "Misleading identity, affiliation, or content."; }; readonly reasonSexual: { readonly type: "token"; readonly description: "Unwanted or mislabeled sexual content."; }; readonly reasonRude: { readonly type: "token"; readonly description: "Rude, harassing, explicit, or otherwise unwelcoming behavior."; }; readonly reasonOther: { readonly type: "token"; readonly description: "Reports not falling under another report category."; }; readonly reasonAppeal: { readonly type: "token"; readonly description: "Appeal a previously taken moderation action."; }; readonly subjectType: { readonly type: "string"; readonly description: "Tag describing a type of subject that might be reported."; readonly knownValues: ["account", "record", "chat"]; }; }; } | { readonly lexicon: 1; readonly id: "com.atproto.repo.strongRef"; readonly description: "A URI with a content-hash fingerprint."; readonly defs: { readonly main: { readonly type: "object"; readonly required: ["uri", "cid"]; readonly properties: { readonly uri: { readonly type: "string"; readonly format: "at-uri"; }; readonly cid: { readonly type: "string"; readonly format: "cid"; }; }; }; }; })[]; export declare const lexicons: Lexicons; export declare function validate(v: unknown, id: string, hash: string, requiredType: true): ValidationResult; export declare function validate(v: unknown, id: string, hash: string, requiredType?: false): ValidationResult; export declare const ids: { readonly AppBskyActorDefs: "app.bsky.actor.defs"; readonly AppBskyEmbedDefs: "app.bsky.embed.defs"; readonly AppBskyEmbedExternal: "app.bsky.embed.external"; readonly AppBskyEmbedImages: "app.bsky.embed.images"; readonly AppBskyEmbedRecord: "app.bsky.embed.record"; readonly AppBskyEmbedRecordWithMedia: "app.bsky.embed.recordWithMedia"; readonly AppBskyEmbedVideo: "app.bsky.embed.video"; readonly AppBskyFeedDefs: "app.bsky.feed.defs"; readonly AppBskyFeedPost: "app.bsky.feed.post"; readonly AppBskyFeedPostgate: "app.bsky.feed.postgate"; readonly AppBskyFeedThreadgate: "app.bsky.feed.threadgate"; readonly AppBskyGraphDefs: "app.bsky.graph.defs"; readonly AppBskyLabelerDefs: "app.bsky.labeler.defs"; readonly AppBskyNotificationDefs: "app.bsky.notification.defs"; readonly AppBskyRichtextFacet: "app.bsky.richtext.facet"; readonly BlueMojiCollectionDefs: "blue.moji.collection.defs"; readonly BlueMojiCollectionGetItem: "blue.moji.collection.getItem"; readonly BlueMojiCollectionItem: "blue.moji.collection.item"; readonly BlueMojiCollectionListCollection: "blue.moji.collection.listCollection"; readonly BlueMojiCollectionPutItem: "blue.moji.collection.putItem"; readonly BlueMojiCollectionSaveToCollection: "blue.moji.collection.saveToCollection"; readonly BlueMojiCollectionSearchItems: "blue.moji.collection.searchItems"; readonly BlueMojiCollectionTranscodeAnimation: "blue.moji.collection.transcodeAnimation"; readonly BlueMojiEmbedSticker: "blue.moji.embed.sticker"; readonly BlueMojiFeedDefs: "blue.moji.feed.defs"; readonly BlueMojiFeedGetReactionCounts: "blue.moji.feed.getReactionCounts"; readonly BlueMojiFeedGetReactions: "blue.moji.feed.getReactions"; readonly BlueMojiFeedGetTrending: "blue.moji.feed.getTrending"; readonly BlueMojiFeedReaction: "blue.moji.feed.reaction"; readonly BlueMojiPacksDefs: "blue.moji.packs.defs"; readonly BlueMojiPacksGetActorPacks: "blue.moji.packs.getActorPacks"; readonly BlueMojiPacksGetPack: "blue.moji.packs.getPack"; readonly BlueMojiPacksGetPacks: "blue.moji.packs.getPacks"; readonly BlueMojiPacksPack: "blue.moji.packs.pack"; readonly BlueMojiPacksPackitem: "blue.moji.packs.packitem"; readonly BlueMojiRichtextFacet: "blue.moji.richtext.facet"; readonly ComAtprotoLabelDefs: "com.atproto.label.defs"; readonly ComAtprotoModerationDefs: "com.atproto.moderation.defs"; readonly ComAtprotoRepoStrongRef: "com.atproto.repo.strongRef"; };