Compare commits

...

5 Commits

Author SHA1 Message Date
Samuel Newman 54c9d2e19d fix codegen script 2025-04-30 21:39:31 +03:00
Samuel Newman cfcececf4e sync codegen files 2025-04-30 21:35:46 +03:00
Samuel Newman ef8def3dfb add codegen script 2025-04-30 21:19:09 +03:00
Samuel Newman d5b5b21617 check in lexicons 2025-04-30 21:15:55 +03:00
Samuel Newman 727a696970 add lexicons:sync script 2025-04-30 21:15:31 +03:00
266 changed files with 13655 additions and 1 deletions
+170
View File
@@ -0,0 +1,170 @@
[
{
"identifier": "!hide",
"configurable": false,
"defaultSetting": "hide",
"flags": ["no-override", "no-self"],
"severity": "alert",
"blurs": "content",
"behaviors": {
"account": {
"profileList": "blur",
"profileView": "blur",
"avatar": "blur",
"banner": "blur",
"displayName": "blur",
"contentList": "blur",
"contentView": "blur"
},
"profile": {
"avatar": "blur",
"banner": "blur",
"displayName": "blur"
},
"content": {
"contentList": "blur",
"contentView": "blur"
}
}
},
{
"identifier": "!warn",
"configurable": false,
"defaultSetting": "warn",
"flags": ["no-self"],
"severity": "none",
"blurs": "content",
"behaviors": {
"account": {
"profileList": "blur",
"profileView": "blur",
"avatar": "blur",
"banner": "blur",
"contentList": "blur",
"contentView": "blur"
},
"profile": {
"avatar": "blur",
"banner": "blur",
"displayName": "blur"
},
"content": {
"contentList": "blur",
"contentView": "blur"
}
}
},
{
"identifier": "!no-unauthenticated",
"configurable": false,
"defaultSetting": "hide",
"flags": ["no-override", "unauthed"],
"severity": "none",
"blurs": "content",
"behaviors": {
"account": {
"profileList": "blur",
"profileView": "blur",
"avatar": "blur",
"banner": "blur",
"displayName": "blur",
"contentList": "blur",
"contentView": "blur"
},
"profile": {
"avatar": "blur",
"banner": "blur",
"displayName": "blur"
},
"content": {
"contentList": "blur",
"contentView": "blur"
}
}
},
{
"identifier": "porn",
"configurable": true,
"defaultSetting": "hide",
"flags": ["adult"],
"severity": "none",
"blurs": "media",
"behaviors": {
"account": {
"avatar": "blur",
"banner": "blur"
},
"profile": {
"avatar": "blur",
"banner": "blur"
},
"content": {
"contentMedia": "blur"
}
}
},
{
"identifier": "sexual",
"configurable": true,
"defaultSetting": "warn",
"flags": ["adult"],
"severity": "none",
"blurs": "media",
"behaviors": {
"account": {
"avatar": "blur",
"banner": "blur"
},
"profile": {
"avatar": "blur",
"banner": "blur"
},
"content": {
"contentMedia": "blur"
}
}
},
{
"identifier": "nudity",
"configurable": true,
"defaultSetting": "ignore",
"flags": [],
"severity": "none",
"blurs": "media",
"behaviors": {
"account": {
"avatar": "blur",
"banner": "blur"
},
"profile": {
"avatar": "blur",
"banner": "blur"
},
"content": {
"contentMedia": "blur"
}
}
},
{
"identifier": "graphic-media",
"alias": ["gore"],
"flags": ["adult"],
"configurable": true,
"defaultSetting": "warn",
"severity": "none",
"blurs": "media",
"behaviors": {
"account": {
"avatar": "blur",
"banner": "blur"
},
"profile": {
"avatar": "blur",
"banner": "blur"
},
"content": {
"contentMedia": "blur"
}
}
}
]
+577
View File
@@ -0,0 +1,577 @@
{
"lexicon": 1,
"id": "app.bsky.actor.defs",
"defs": {
"profileViewBasic": {
"type": "object",
"required": ["did", "handle"],
"properties": {
"did": { "type": "string", "format": "did" },
"handle": { "type": "string", "format": "handle" },
"displayName": {
"type": "string",
"maxGraphemes": 64,
"maxLength": 640
},
"avatar": { "type": "string", "format": "uri" },
"associated": {
"type": "ref",
"ref": "#profileAssociated"
},
"viewer": { "type": "ref", "ref": "#viewerState" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"createdAt": { "type": "string", "format": "datetime" },
"verification": {
"type": "ref",
"ref": "#verificationState"
}
}
},
"profileView": {
"type": "object",
"required": ["did", "handle"],
"properties": {
"did": { "type": "string", "format": "did" },
"handle": { "type": "string", "format": "handle" },
"displayName": {
"type": "string",
"maxGraphemes": 64,
"maxLength": 640
},
"description": {
"type": "string",
"maxGraphemes": 256,
"maxLength": 2560
},
"avatar": { "type": "string", "format": "uri" },
"associated": {
"type": "ref",
"ref": "#profileAssociated"
},
"indexedAt": { "type": "string", "format": "datetime" },
"createdAt": { "type": "string", "format": "datetime" },
"viewer": { "type": "ref", "ref": "#viewerState" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"verification": {
"type": "ref",
"ref": "#verificationState"
}
}
},
"profileViewDetailed": {
"type": "object",
"required": ["did", "handle"],
"properties": {
"did": { "type": "string", "format": "did" },
"handle": { "type": "string", "format": "handle" },
"displayName": {
"type": "string",
"maxGraphemes": 64,
"maxLength": 640
},
"description": {
"type": "string",
"maxGraphemes": 256,
"maxLength": 2560
},
"avatar": { "type": "string", "format": "uri" },
"banner": { "type": "string", "format": "uri" },
"followersCount": { "type": "integer" },
"followsCount": { "type": "integer" },
"postsCount": { "type": "integer" },
"associated": {
"type": "ref",
"ref": "#profileAssociated"
},
"joinedViaStarterPack": {
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackViewBasic"
},
"indexedAt": { "type": "string", "format": "datetime" },
"createdAt": { "type": "string", "format": "datetime" },
"viewer": { "type": "ref", "ref": "#viewerState" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"pinnedPost": {
"type": "ref",
"ref": "com.atproto.repo.strongRef"
},
"verification": {
"type": "ref",
"ref": "#verificationState"
}
}
},
"profileAssociated": {
"type": "object",
"properties": {
"lists": { "type": "integer" },
"feedgens": { "type": "integer" },
"starterPacks": { "type": "integer" },
"labeler": { "type": "boolean" },
"chat": { "type": "ref", "ref": "#profileAssociatedChat" }
}
},
"profileAssociatedChat": {
"type": "object",
"required": ["allowIncoming"],
"properties": {
"allowIncoming": {
"type": "string",
"knownValues": ["all", "none", "following"]
}
}
},
"viewerState": {
"type": "object",
"description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.",
"properties": {
"muted": { "type": "boolean" },
"mutedByList": {
"type": "ref",
"ref": "app.bsky.graph.defs#listViewBasic"
},
"blockedBy": { "type": "boolean" },
"blocking": { "type": "string", "format": "at-uri" },
"blockingByList": {
"type": "ref",
"ref": "app.bsky.graph.defs#listViewBasic"
},
"following": { "type": "string", "format": "at-uri" },
"followedBy": { "type": "string", "format": "at-uri" },
"knownFollowers": {
"type": "ref",
"ref": "#knownFollowers"
}
}
},
"knownFollowers": {
"type": "object",
"description": "The subject's followers whom you also follow",
"required": ["count", "followers"],
"properties": {
"count": { "type": "integer" },
"followers": {
"type": "array",
"minLength": 0,
"maxLength": 5,
"items": {
"type": "ref",
"ref": "#profileViewBasic"
}
}
}
},
"verificationState": {
"type": "object",
"description": "Represents the verification information about the user this object is attached to.",
"required": ["verifications", "verifiedStatus", "trustedVerifierStatus"],
"properties": {
"verifications": {
"type": "array",
"description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.",
"items": { "type": "ref", "ref": "#verificationView" }
},
"verifiedStatus": {
"type": "string",
"description": "The user's status as a verified account.",
"knownValues": ["valid", "invalid", "none"]
},
"trustedVerifierStatus": {
"type": "string",
"description": "The user's status as a trusted verifier.",
"knownValues": ["valid", "invalid", "none"]
}
}
},
"verificationView": {
"type": "object",
"description": "An individual verification for an associated subject.",
"required": ["issuer", "uri", "isValid", "createdAt"],
"properties": {
"issuer": {
"type": "string",
"description": "The user who issued this verification.",
"format": "did"
},
"uri": {
"type": "string",
"description": "The AT-URI of the verification record.",
"format": "at-uri"
},
"isValid": {
"type": "boolean",
"description": "True if the verification passes validation, otherwise false."
},
"createdAt": {
"type": "string",
"description": "Timestamp when the verification was created.",
"format": "datetime"
}
}
},
"preferences": {
"type": "array",
"items": {
"type": "union",
"refs": [
"#adultContentPref",
"#contentLabelPref",
"#savedFeedsPref",
"#savedFeedsPrefV2",
"#personalDetailsPref",
"#feedViewPref",
"#threadViewPref",
"#interestsPref",
"#mutedWordsPref",
"#hiddenPostsPref",
"#bskyAppStatePref",
"#labelersPref",
"#postInteractionSettingsPref",
"#verificationPrefs"
]
}
},
"adultContentPref": {
"type": "object",
"required": ["enabled"],
"properties": {
"enabled": { "type": "boolean", "default": false }
}
},
"contentLabelPref": {
"type": "object",
"required": ["label", "visibility"],
"properties": {
"labelerDid": {
"type": "string",
"description": "Which labeler does this preference apply to? If undefined, applies globally.",
"format": "did"
},
"label": { "type": "string" },
"visibility": {
"type": "string",
"knownValues": ["ignore", "show", "warn", "hide"]
}
}
},
"savedFeed": {
"type": "object",
"required": ["id", "type", "value", "pinned"],
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string",
"knownValues": ["feed", "list", "timeline"]
},
"value": {
"type": "string"
},
"pinned": {
"type": "boolean"
}
}
},
"savedFeedsPrefV2": {
"type": "object",
"required": ["items"],
"properties": {
"items": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#savedFeed"
}
}
}
},
"savedFeedsPref": {
"type": "object",
"required": ["pinned", "saved"],
"properties": {
"pinned": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
}
},
"saved": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
}
},
"timelineIndex": {
"type": "integer"
}
}
},
"personalDetailsPref": {
"type": "object",
"properties": {
"birthDate": {
"type": "string",
"format": "datetime",
"description": "The birth date of account owner."
}
}
},
"feedViewPref": {
"type": "object",
"required": ["feed"],
"properties": {
"feed": {
"type": "string",
"description": "The URI of the feed, or an identifier which describes the feed."
},
"hideReplies": {
"type": "boolean",
"description": "Hide replies in the feed."
},
"hideRepliesByUnfollowed": {
"type": "boolean",
"description": "Hide replies in the feed if they are not by followed users.",
"default": true
},
"hideRepliesByLikeCount": {
"type": "integer",
"description": "Hide replies in the feed if they do not have this number of likes."
},
"hideReposts": {
"type": "boolean",
"description": "Hide reposts in the feed."
},
"hideQuotePosts": {
"type": "boolean",
"description": "Hide quote posts in the feed."
}
}
},
"threadViewPref": {
"type": "object",
"properties": {
"sort": {
"type": "string",
"description": "Sorting mode for threads.",
"knownValues": ["oldest", "newest", "most-likes", "random", "hotness"]
},
"prioritizeFollowedUsers": {
"type": "boolean",
"description": "Show followed users at the top of all replies."
}
}
},
"interestsPref": {
"type": "object",
"required": ["tags"],
"properties": {
"tags": {
"type": "array",
"maxLength": 100,
"items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 },
"description": "A list of tags which describe the account owner's interests gathered during onboarding."
}
}
},
"mutedWordTarget": {
"type": "string",
"knownValues": ["content", "tag"],
"maxLength": 640,
"maxGraphemes": 64
},
"mutedWord": {
"type": "object",
"description": "A word that the account owner has muted.",
"required": ["value", "targets"],
"properties": {
"id": { "type": "string" },
"value": {
"type": "string",
"description": "The muted word itself.",
"maxLength": 10000,
"maxGraphemes": 1000
},
"targets": {
"type": "array",
"description": "The intended targets of the muted word.",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#mutedWordTarget"
}
},
"actorTarget": {
"type": "string",
"description": "Groups of users to apply the muted word to. If undefined, applies to all users.",
"knownValues": ["all", "exclude-following"],
"default": "all"
},
"expiresAt": {
"type": "string",
"format": "datetime",
"description": "The date and time at which the muted word will expire and no longer be applied."
}
}
},
"mutedWordsPref": {
"type": "object",
"required": ["items"],
"properties": {
"items": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#mutedWord"
},
"description": "A list of words the account owner has muted."
}
}
},
"hiddenPostsPref": {
"type": "object",
"required": ["items"],
"properties": {
"items": {
"type": "array",
"items": { "type": "string", "format": "at-uri" },
"description": "A list of URIs of posts the account owner has hidden."
}
}
},
"labelersPref": {
"type": "object",
"required": ["labelers"],
"properties": {
"labelers": {
"type": "array",
"items": {
"type": "ref",
"ref": "#labelerPrefItem"
}
}
}
},
"labelerPrefItem": {
"type": "object",
"required": ["did"],
"properties": {
"did": {
"type": "string",
"format": "did"
}
}
},
"bskyAppStatePref": {
"description": "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.",
"type": "object",
"properties": {
"activeProgressGuide": {
"type": "ref",
"ref": "#bskyAppProgressGuide"
},
"queuedNudges": {
"description": "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.",
"type": "array",
"maxLength": 1000,
"items": { "type": "string", "maxLength": 100 }
},
"nuxs": {
"description": "Storage for NUXs the user has encountered.",
"type": "array",
"maxLength": 100,
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#nux"
}
}
}
},
"bskyAppProgressGuide": {
"description": "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.",
"type": "object",
"required": ["guide"],
"properties": {
"guide": { "type": "string", "maxLength": 100 }
}
},
"nux": {
"type": "object",
"description": "A new user experiences (NUX) storage object",
"required": ["id", "completed"],
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"completed": {
"type": "boolean",
"default": false
},
"data": {
"description": "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.",
"type": "string",
"maxLength": 3000,
"maxGraphemes": 300
},
"expiresAt": {
"type": "string",
"format": "datetime",
"description": "The date and time at which the NUX will expire and should be considered completed."
}
}
},
"verificationPrefs": {
"type": "object",
"description": "Preferences for how verified accounts appear in the app.",
"required": [],
"properties": {
"hideBadges": {
"description": "Hide the blue check badges for verified accounts and trusted verifiers.",
"type": "boolean",
"default": false
}
}
},
"postInteractionSettingsPref": {
"type": "object",
"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.",
"required": [],
"properties": {
"threadgateAllowRules": {
"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.",
"type": "array",
"maxLength": 5,
"items": {
"type": "union",
"refs": [
"app.bsky.feed.threadgate#mentionRule",
"app.bsky.feed.threadgate#followerRule",
"app.bsky.feed.threadgate#followingRule",
"app.bsky.feed.threadgate#listRule"
]
}
},
"postgateEmbeddingRules": {
"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.",
"type": "array",
"maxLength": 5,
"items": {
"type": "union",
"refs": ["app.bsky.feed.postgate#disableRule"]
}
}
}
}
}
}
@@ -0,0 +1,27 @@
{
"lexicon": 1,
"id": "app.bsky.actor.getPreferences",
"defs": {
"main": {
"type": "query",
"description": "Get private preferences attached to the current account. Expected use is synchronization between multiple devices, and import/export during account migration. Requires auth.",
"parameters": {
"type": "params",
"properties": {}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["preferences"],
"properties": {
"preferences": {
"type": "ref",
"ref": "app.bsky.actor.defs#preferences"
}
}
}
}
}
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"lexicon": 1,
"id": "app.bsky.actor.getProfile",
"defs": {
"main": {
"type": "query",
"description": "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": {
"type": "string",
"format": "at-identifier",
"description": "Handle or DID of account to fetch profile of."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewDetailed"
}
}
}
}
}
+37
View File
@@ -0,0 +1,37 @@
{
"lexicon": 1,
"id": "app.bsky.actor.getProfiles",
"defs": {
"main": {
"type": "query",
"description": "Get detailed profile views of multiple actors.",
"parameters": {
"type": "params",
"required": ["actors"],
"properties": {
"actors": {
"type": "array",
"items": { "type": "string", "format": "at-identifier" },
"maxLength": 25
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["profiles"],
"properties": {
"profiles": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewDetailed"
}
}
}
}
}
}
}
}
@@ -0,0 +1,43 @@
{
"lexicon": 1,
"id": "app.bsky.actor.getSuggestions",
"defs": {
"main": {
"type": "query",
"description": "Get a list of suggested actors. Expected use is discovery of accounts to follow during new account onboarding.",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actors"],
"properties": {
"cursor": { "type": "string" },
"actors": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
},
"recId": {
"type": "integer",
"description": "Snowflake for this recommendation, use when submitting recommendation events."
}
}
}
}
}
}
}
+53
View File
@@ -0,0 +1,53 @@
{
"lexicon": 1,
"id": "app.bsky.actor.profile",
"defs": {
"main": {
"type": "record",
"description": "A declaration of a Bluesky account profile.",
"key": "literal:self",
"record": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"maxGraphemes": 64,
"maxLength": 640
},
"description": {
"type": "string",
"description": "Free-form profile description text.",
"maxGraphemes": 256,
"maxLength": 2560
},
"avatar": {
"type": "blob",
"description": "Small image to be displayed next to posts from account. AKA, 'profile picture'",
"accept": ["image/png", "image/jpeg"],
"maxSize": 1000000
},
"banner": {
"type": "blob",
"description": "Larger horizontal image to display behind profile view.",
"accept": ["image/png", "image/jpeg"],
"maxSize": 1000000
},
"labels": {
"type": "union",
"description": "Self-label values, specific to the Bluesky application, on the overall account.",
"refs": ["com.atproto.label.defs#selfLabels"]
},
"joinedViaStarterPack": {
"type": "ref",
"ref": "com.atproto.repo.strongRef"
},
"pinnedPost": {
"type": "ref",
"ref": "com.atproto.repo.strongRef"
},
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
@@ -0,0 +1,23 @@
{
"lexicon": 1,
"id": "app.bsky.actor.putPreferences",
"defs": {
"main": {
"type": "procedure",
"description": "Set the private preferences attached to the account.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["preferences"],
"properties": {
"preferences": {
"type": "ref",
"ref": "app.bsky.actor.defs#preferences"
}
}
}
}
}
}
}
+47
View File
@@ -0,0 +1,47 @@
{
"lexicon": 1,
"id": "app.bsky.actor.searchActors",
"defs": {
"main": {
"type": "query",
"description": "Find actors (profiles) matching search criteria. Does not require auth.",
"parameters": {
"type": "params",
"properties": {
"term": {
"type": "string",
"description": "DEPRECATED: use 'q' instead."
},
"q": {
"type": "string",
"description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actors"],
"properties": {
"cursor": { "type": "string" },
"actors": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,45 @@
{
"lexicon": 1,
"id": "app.bsky.actor.searchActorsTypeahead",
"defs": {
"main": {
"type": "query",
"description": "Find actor suggestions for a prefix search term. Expected use is for auto-completion during text field entry. Does not require auth.",
"parameters": {
"type": "params",
"properties": {
"term": {
"type": "string",
"description": "DEPRECATED: use 'q' instead."
},
"q": {
"type": "string",
"description": "Search query prefix; not a full query string."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actors"],
"properties": {
"actors": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
}
}
}
}
}
}
}
}
+15
View File
@@ -0,0 +1,15 @@
{
"lexicon": 1,
"id": "app.bsky.embed.defs",
"defs": {
"aspectRatio": {
"type": "object",
"description": "width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.",
"required": ["width", "height"],
"properties": {
"width": { "type": "integer", "minimum": 1 },
"height": { "type": "integer", "minimum": 1 }
}
}
}
}
+51
View File
@@ -0,0 +1,51 @@
{
"lexicon": 1,
"id": "app.bsky.embed.external",
"defs": {
"main": {
"type": "object",
"description": "A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).",
"required": ["external"],
"properties": {
"external": {
"type": "ref",
"ref": "#external"
}
}
},
"external": {
"type": "object",
"required": ["uri", "title", "description"],
"properties": {
"uri": { "type": "string", "format": "uri" },
"title": { "type": "string" },
"description": { "type": "string" },
"thumb": {
"type": "blob",
"accept": ["image/*"],
"maxSize": 1000000
}
}
},
"view": {
"type": "object",
"required": ["external"],
"properties": {
"external": {
"type": "ref",
"ref": "#viewExternal"
}
}
},
"viewExternal": {
"type": "object",
"required": ["uri", "title", "description"],
"properties": {
"uri": { "type": "string", "format": "uri" },
"title": { "type": "string" },
"description": { "type": "string" },
"thumb": { "type": "string", "format": "uri" }
}
}
}
}
+72
View File
@@ -0,0 +1,72 @@
{
"lexicon": 1,
"id": "app.bsky.embed.images",
"description": "A set of images embedded in a Bluesky record (eg, a post).",
"defs": {
"main": {
"type": "object",
"required": ["images"],
"properties": {
"images": {
"type": "array",
"items": { "type": "ref", "ref": "#image" },
"maxLength": 4
}
}
},
"image": {
"type": "object",
"required": ["image", "alt"],
"properties": {
"image": {
"type": "blob",
"accept": ["image/*"],
"maxSize": 1000000
},
"alt": {
"type": "string",
"description": "Alt text description of the image, for accessibility."
},
"aspectRatio": {
"type": "ref",
"ref": "app.bsky.embed.defs#aspectRatio"
}
}
},
"view": {
"type": "object",
"required": ["images"],
"properties": {
"images": {
"type": "array",
"items": { "type": "ref", "ref": "#viewImage" },
"maxLength": 4
}
}
},
"viewImage": {
"type": "object",
"required": ["thumb", "fullsize", "alt"],
"properties": {
"thumb": {
"type": "string",
"format": "uri",
"description": "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."
},
"fullsize": {
"type": "string",
"format": "uri",
"description": "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View."
},
"alt": {
"type": "string",
"description": "Alt text description of the image, for accessibility."
},
"aspectRatio": {
"type": "ref",
"ref": "app.bsky.embed.defs#aspectRatio"
}
}
}
}
}
+96
View File
@@ -0,0 +1,96 @@
{
"lexicon": 1,
"id": "app.bsky.embed.record",
"description": "A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.",
"defs": {
"main": {
"type": "object",
"required": ["record"],
"properties": {
"record": { "type": "ref", "ref": "com.atproto.repo.strongRef" }
}
},
"view": {
"type": "object",
"required": ["record"],
"properties": {
"record": {
"type": "union",
"refs": [
"#viewRecord",
"#viewNotFound",
"#viewBlocked",
"#viewDetached",
"app.bsky.feed.defs#generatorView",
"app.bsky.graph.defs#listView",
"app.bsky.labeler.defs#labelerView",
"app.bsky.graph.defs#starterPackViewBasic"
]
}
}
},
"viewRecord": {
"type": "object",
"required": ["uri", "cid", "author", "value", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"author": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
},
"value": {
"type": "unknown",
"description": "The record data itself."
},
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"replyCount": { "type": "integer" },
"repostCount": { "type": "integer" },
"likeCount": { "type": "integer" },
"quoteCount": { "type": "integer" },
"embeds": {
"type": "array",
"items": {
"type": "union",
"refs": [
"app.bsky.embed.images#view",
"app.bsky.embed.video#view",
"app.bsky.embed.external#view",
"app.bsky.embed.record#view",
"app.bsky.embed.recordWithMedia#view"
]
}
},
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"viewNotFound": {
"type": "object",
"required": ["uri", "notFound"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"notFound": { "type": "boolean", "const": true }
}
},
"viewBlocked": {
"type": "object",
"required": ["uri", "blocked", "author"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"blocked": { "type": "boolean", "const": true },
"author": { "type": "ref", "ref": "app.bsky.feed.defs#blockedAuthor" }
}
},
"viewDetached": {
"type": "object",
"required": ["uri", "detached"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"detached": { "type": "boolean", "const": true }
}
}
}
}
@@ -0,0 +1,43 @@
{
"lexicon": 1,
"id": "app.bsky.embed.recordWithMedia",
"description": "A representation of a record embedded in a Bluesky record (eg, a post), alongside other compatible embeds. For example, a quote post and image, or a quote post and external URL card.",
"defs": {
"main": {
"type": "object",
"required": ["record", "media"],
"properties": {
"record": {
"type": "ref",
"ref": "app.bsky.embed.record"
},
"media": {
"type": "union",
"refs": [
"app.bsky.embed.images",
"app.bsky.embed.video",
"app.bsky.embed.external"
]
}
}
},
"view": {
"type": "object",
"required": ["record", "media"],
"properties": {
"record": {
"type": "ref",
"ref": "app.bsky.embed.record#view"
},
"media": {
"type": "union",
"refs": [
"app.bsky.embed.images#view",
"app.bsky.embed.video#view",
"app.bsky.embed.external#view"
]
}
}
}
}
}
+67
View File
@@ -0,0 +1,67 @@
{
"lexicon": 1,
"id": "app.bsky.embed.video",
"description": "A video embedded in a Bluesky record (eg, a post).",
"defs": {
"main": {
"type": "object",
"required": ["video"],
"properties": {
"video": {
"type": "blob",
"description": "The mp4 video file. May be up to 100mb, formerly limited to 50mb.",
"accept": ["video/mp4"],
"maxSize": 100000000
},
"captions": {
"type": "array",
"items": { "type": "ref", "ref": "#caption" },
"maxLength": 20
},
"alt": {
"type": "string",
"description": "Alt text description of the video, for accessibility.",
"maxGraphemes": 1000,
"maxLength": 10000
},
"aspectRatio": {
"type": "ref",
"ref": "app.bsky.embed.defs#aspectRatio"
}
}
},
"caption": {
"type": "object",
"required": ["lang", "file"],
"properties": {
"lang": {
"type": "string",
"format": "language"
},
"file": {
"type": "blob",
"accept": ["text/vtt"],
"maxSize": 20000
}
}
},
"view": {
"type": "object",
"required": ["cid", "playlist"],
"properties": {
"cid": { "type": "string", "format": "cid" },
"playlist": { "type": "string", "format": "uri" },
"thumbnail": { "type": "string", "format": "uri" },
"alt": {
"type": "string",
"maxGraphemes": 1000,
"maxLength": 10000
},
"aspectRatio": {
"type": "ref",
"ref": "app.bsky.embed.defs#aspectRatio"
}
}
}
}
}
+313
View File
@@ -0,0 +1,313 @@
{
"lexicon": 1,
"id": "app.bsky.feed.defs",
"defs": {
"postView": {
"type": "object",
"required": ["uri", "cid", "author", "record", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"author": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
},
"record": { "type": "unknown" },
"embed": {
"type": "union",
"refs": [
"app.bsky.embed.images#view",
"app.bsky.embed.video#view",
"app.bsky.embed.external#view",
"app.bsky.embed.record#view",
"app.bsky.embed.recordWithMedia#view"
]
},
"replyCount": { "type": "integer" },
"repostCount": { "type": "integer" },
"likeCount": { "type": "integer" },
"quoteCount": { "type": "integer" },
"indexedAt": { "type": "string", "format": "datetime" },
"viewer": { "type": "ref", "ref": "#viewerState" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"threadgate": { "type": "ref", "ref": "#threadgateView" }
}
},
"viewerState": {
"type": "object",
"description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.",
"properties": {
"repost": { "type": "string", "format": "at-uri" },
"like": { "type": "string", "format": "at-uri" },
"threadMuted": { "type": "boolean" },
"replyDisabled": { "type": "boolean" },
"embeddingDisabled": { "type": "boolean" },
"pinned": { "type": "boolean" }
}
},
"threadContext": {
"type": "object",
"description": "Metadata about this post within the context of the thread it is in.",
"properties": {
"rootAuthorLike": { "type": "string", "format": "at-uri" }
}
},
"feedViewPost": {
"type": "object",
"required": ["post"],
"properties": {
"post": { "type": "ref", "ref": "#postView" },
"reply": { "type": "ref", "ref": "#replyRef" },
"reason": { "type": "union", "refs": ["#reasonRepost", "#reasonPin"] },
"feedContext": {
"type": "string",
"description": "Context provided by feed generator that may be passed back alongside interactions.",
"maxLength": 2000
}
}
},
"replyRef": {
"type": "object",
"required": ["root", "parent"],
"properties": {
"root": {
"type": "union",
"refs": ["#postView", "#notFoundPost", "#blockedPost"]
},
"parent": {
"type": "union",
"refs": ["#postView", "#notFoundPost", "#blockedPost"]
},
"grandparentAuthor": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic",
"description": "When parent is a reply to another post, this is the author of that post."
}
}
},
"reasonRepost": {
"type": "object",
"required": ["by", "indexedAt"],
"properties": {
"by": { "type": "ref", "ref": "app.bsky.actor.defs#profileViewBasic" },
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"reasonPin": {
"type": "object",
"properties": {}
},
"threadViewPost": {
"type": "object",
"required": ["post"],
"properties": {
"post": { "type": "ref", "ref": "#postView" },
"parent": {
"type": "union",
"refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"]
},
"replies": {
"type": "array",
"items": {
"type": "union",
"refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"]
}
},
"threadContext": { "type": "ref", "ref": "#threadContext" }
}
},
"notFoundPost": {
"type": "object",
"required": ["uri", "notFound"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"notFound": { "type": "boolean", "const": true }
}
},
"blockedPost": {
"type": "object",
"required": ["uri", "blocked", "author"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"blocked": { "type": "boolean", "const": true },
"author": { "type": "ref", "ref": "#blockedAuthor" }
}
},
"blockedAuthor": {
"type": "object",
"required": ["did"],
"properties": {
"did": { "type": "string", "format": "did" },
"viewer": { "type": "ref", "ref": "app.bsky.actor.defs#viewerState" }
}
},
"generatorView": {
"type": "object",
"required": ["uri", "cid", "did", "creator", "displayName", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"did": { "type": "string", "format": "did" },
"creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
"displayName": { "type": "string" },
"description": {
"type": "string",
"maxGraphemes": 300,
"maxLength": 3000
},
"descriptionFacets": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
},
"avatar": { "type": "string", "format": "uri" },
"likeCount": { "type": "integer", "minimum": 0 },
"acceptsInteractions": { "type": "boolean" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"viewer": { "type": "ref", "ref": "#generatorViewerState" },
"contentMode": {
"type": "string",
"knownValues": [
"app.bsky.feed.defs#contentModeUnspecified",
"app.bsky.feed.defs#contentModeVideo"
]
},
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"generatorViewerState": {
"type": "object",
"properties": {
"like": { "type": "string", "format": "at-uri" }
}
},
"skeletonFeedPost": {
"type": "object",
"required": ["post"],
"properties": {
"post": { "type": "string", "format": "at-uri" },
"reason": {
"type": "union",
"refs": ["#skeletonReasonRepost", "#skeletonReasonPin"]
},
"feedContext": {
"type": "string",
"description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions.",
"maxLength": 2000
}
}
},
"skeletonReasonRepost": {
"type": "object",
"required": ["repost"],
"properties": {
"repost": { "type": "string", "format": "at-uri" }
}
},
"skeletonReasonPin": {
"type": "object",
"properties": {}
},
"threadgateView": {
"type": "object",
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"record": { "type": "unknown" },
"lists": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.graph.defs#listViewBasic" }
}
}
},
"interaction": {
"type": "object",
"properties": {
"item": { "type": "string", "format": "at-uri" },
"event": {
"type": "string",
"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"
]
},
"feedContext": {
"type": "string",
"description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.",
"maxLength": 2000
}
}
},
"requestLess": {
"type": "token",
"description": "Request that less content like the given feed item be shown in the feed"
},
"requestMore": {
"type": "token",
"description": "Request that more content like the given feed item be shown in the feed"
},
"clickthroughItem": {
"type": "token",
"description": "User clicked through to the feed item"
},
"clickthroughAuthor": {
"type": "token",
"description": "User clicked through to the author of the feed item"
},
"clickthroughReposter": {
"type": "token",
"description": "User clicked through to the reposter of the feed item"
},
"clickthroughEmbed": {
"type": "token",
"description": "User clicked through to the embedded content of the feed item"
},
"contentModeUnspecified": {
"type": "token",
"description": "Declares the feed generator returns any types of posts."
},
"contentModeVideo": {
"type": "token",
"description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds."
},
"interactionSeen": {
"type": "token",
"description": "Feed item was seen by user"
},
"interactionLike": {
"type": "token",
"description": "User liked the feed item"
},
"interactionRepost": {
"type": "token",
"description": "User reposted the feed item"
},
"interactionReply": {
"type": "token",
"description": "User replied to the feed item"
},
"interactionQuote": {
"type": "token",
"description": "User quoted the feed item"
},
"interactionShare": {
"type": "token",
"description": "User shared the feed item"
}
}
}
@@ -0,0 +1,39 @@
{
"lexicon": 1,
"id": "app.bsky.feed.describeFeedGenerator",
"defs": {
"main": {
"type": "query",
"description": "Get information about a feed generator, including policies and offered feed URIs. Does not require auth; implemented by Feed Generator services (not App View).",
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["did", "feeds"],
"properties": {
"did": { "type": "string", "format": "did" },
"feeds": {
"type": "array",
"items": { "type": "ref", "ref": "#feed" }
},
"links": { "type": "ref", "ref": "#links" }
}
}
}
},
"feed": {
"type": "object",
"required": ["uri"],
"properties": {
"uri": { "type": "string", "format": "at-uri" }
}
},
"links": {
"type": "object",
"properties": {
"privacyPolicy": { "type": "string" },
"termsOfService": { "type": "string" }
}
}
}
}
+54
View File
@@ -0,0 +1,54 @@
{
"lexicon": 1,
"id": "app.bsky.feed.generator",
"defs": {
"main": {
"type": "record",
"description": "Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.",
"key": "any",
"record": {
"type": "object",
"required": ["did", "displayName", "createdAt"],
"properties": {
"did": { "type": "string", "format": "did" },
"displayName": {
"type": "string",
"maxGraphemes": 24,
"maxLength": 240
},
"description": {
"type": "string",
"maxGraphemes": 300,
"maxLength": 3000
},
"descriptionFacets": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
},
"avatar": {
"type": "blob",
"accept": ["image/png", "image/jpeg"],
"maxSize": 1000000
},
"acceptsInteractions": {
"type": "boolean",
"description": "Declaration that a feed accepts feedback interactions from a client through app.bsky.feed.sendInteractions"
},
"labels": {
"type": "union",
"description": "Self-label values",
"refs": ["com.atproto.label.defs#selfLabels"]
},
"contentMode": {
"type": "string",
"knownValues": [
"app.bsky.feed.defs#contentModeUnspecified",
"app.bsky.feed.defs#contentModeVideo"
]
},
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
+41
View File
@@ -0,0 +1,41 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getActorFeeds",
"defs": {
"main": {
"type": "query",
"description": "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feeds"],
"properties": {
"cursor": { "type": "string" },
"feeds": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#generatorView"
}
}
}
}
}
}
}
}
+42
View File
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getActorLikes",
"defs": {
"main": {
"type": "query",
"description": "Get a list of posts liked by an actor. Requires auth, actor must be the requesting account.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feed"],
"properties": {
"cursor": { "type": "string" },
"feed": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#feedViewPost"
}
}
}
}
},
"errors": [{ "name": "BlockedActor" }, { "name": "BlockedByActor" }]
}
}
}
+58
View File
@@ -0,0 +1,58 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getAuthorFeed",
"defs": {
"main": {
"type": "query",
"description": "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" },
"filter": {
"type": "string",
"description": "Combinations of post/repost types to include in response.",
"knownValues": [
"posts_with_replies",
"posts_no_replies",
"posts_with_media",
"posts_and_author_threads",
"posts_with_video"
],
"default": "posts_with_replies"
},
"includePins": {
"type": "boolean",
"default": false
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feed"],
"properties": {
"cursor": { "type": "string" },
"feed": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#feedViewPost"
}
}
}
}
},
"errors": [{ "name": "BlockedActor" }, { "name": "BlockedByActor" }]
}
}
}
+42
View File
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getFeed",
"defs": {
"main": {
"type": "query",
"description": "Get a hydrated feed from an actor's selected feed generator. Implemented by App View.",
"parameters": {
"type": "params",
"required": ["feed"],
"properties": {
"feed": { "type": "string", "format": "at-uri" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feed"],
"properties": {
"cursor": { "type": "string" },
"feed": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#feedViewPost"
}
}
}
}
},
"errors": [{ "name": "UnknownFeed" }]
}
}
}
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getFeedGenerator",
"defs": {
"main": {
"type": "query",
"description": "Get information about a feed generator. Implemented by AppView.",
"parameters": {
"type": "params",
"required": ["feed"],
"properties": {
"feed": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the feed generator record."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["view", "isOnline", "isValid"],
"properties": {
"view": {
"type": "ref",
"ref": "app.bsky.feed.defs#generatorView"
},
"isOnline": {
"type": "boolean",
"description": "Indicates whether the feed generator service has been online recently, or else seems to be inactive."
},
"isValid": {
"type": "boolean",
"description": "Indicates whether the feed generator service is compatible with the record declaration."
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getFeedGenerators",
"defs": {
"main": {
"type": "query",
"description": "Get information about a list of feed generators.",
"parameters": {
"type": "params",
"required": ["feeds"],
"properties": {
"feeds": {
"type": "array",
"items": { "type": "string", "format": "at-uri" }
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feeds"],
"properties": {
"feeds": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#generatorView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,46 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getFeedSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Get a skeleton of a feed provided by a feed generator. Auth is optional, depending on provider requirements, and provides the DID of the requester. Implemented by Feed Generator Service.",
"parameters": {
"type": "params",
"required": ["feed"],
"properties": {
"feed": {
"type": "string",
"format": "at-uri",
"description": "Reference to feed generator record describing the specific feed being requested."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feed"],
"properties": {
"cursor": { "type": "string" },
"feed": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#skeletonFeedPost"
}
}
}
}
},
"errors": [{ "name": "UnknownFeed" }]
}
}
}
+58
View File
@@ -0,0 +1,58 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getLikes",
"defs": {
"main": {
"type": "query",
"description": "Get like records which reference a subject (by AT-URI and CID).",
"parameters": {
"type": "params",
"required": ["uri"],
"properties": {
"uri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the subject (eg, a post record)."
},
"cid": {
"type": "string",
"format": "cid",
"description": "CID of the subject record (aka, specific version of record), to filter likes."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["uri", "likes"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"cursor": { "type": "string" },
"likes": {
"type": "array",
"items": { "type": "ref", "ref": "#like" }
}
}
}
}
},
"like": {
"type": "object",
"required": ["indexedAt", "createdAt", "actor"],
"properties": {
"indexedAt": { "type": "string", "format": "datetime" },
"createdAt": { "type": "string", "format": "datetime" },
"actor": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }
}
}
}
}
+46
View File
@@ -0,0 +1,46 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getListFeed",
"defs": {
"main": {
"type": "query",
"description": "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.",
"parameters": {
"type": "params",
"required": ["list"],
"properties": {
"list": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the list record."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feed"],
"properties": {
"cursor": { "type": "string" },
"feed": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#feedViewPost"
}
}
}
}
},
"errors": [{ "name": "UnknownList" }]
}
}
}
+57
View File
@@ -0,0 +1,57 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getPostThread",
"defs": {
"main": {
"type": "query",
"description": "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.",
"parameters": {
"type": "params",
"required": ["uri"],
"properties": {
"uri": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to post record."
},
"depth": {
"type": "integer",
"description": "How many levels of reply depth should be included in response.",
"default": 6,
"minimum": 0,
"maximum": 1000
},
"parentHeight": {
"type": "integer",
"description": "How many levels of parent (and grandparent, etc) post to include.",
"default": 80,
"minimum": 0,
"maximum": 1000
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["thread"],
"properties": {
"thread": {
"type": "union",
"refs": [
"app.bsky.feed.defs#threadViewPost",
"app.bsky.feed.defs#notFoundPost",
"app.bsky.feed.defs#blockedPost"
]
},
"threadgate": {
"type": "ref",
"ref": "app.bsky.feed.defs#threadgateView"
}
}
}
},
"errors": [{ "name": "NotFound" }]
}
}
}
+35
View File
@@ -0,0 +1,35 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getPosts",
"defs": {
"main": {
"type": "query",
"description": "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.",
"parameters": {
"type": "params",
"required": ["uris"],
"properties": {
"uris": {
"type": "array",
"description": "List of post AT-URIs to return hydrated views for.",
"items": { "type": "string", "format": "at-uri" },
"maxLength": 25
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["posts"],
"properties": {
"posts": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.feed.defs#postView" }
}
}
}
}
}
}
}
+52
View File
@@ -0,0 +1,52 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getQuotes",
"defs": {
"main": {
"type": "query",
"description": "Get a list of quotes for a given post.",
"parameters": {
"type": "params",
"required": ["uri"],
"properties": {
"uri": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) of post record"
},
"cid": {
"type": "string",
"format": "cid",
"description": "If supplied, filters to quotes of specific version (by CID) of the post record."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["uri", "posts"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"cursor": { "type": "string" },
"posts": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#postView"
}
}
}
}
}
}
}
}
+52
View File
@@ -0,0 +1,52 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getRepostedBy",
"defs": {
"main": {
"type": "query",
"description": "Get a list of reposts for a given post.",
"parameters": {
"type": "params",
"required": ["uri"],
"properties": {
"uri": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) of post record"
},
"cid": {
"type": "string",
"format": "cid",
"description": "If supplied, filters to reposts of specific version (by CID) of the post record."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["uri", "repostedBy"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"cursor": { "type": "string" },
"repostedBy": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,39 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getSuggestedFeeds",
"defs": {
"main": {
"type": "query",
"description": "Get a list of suggested feeds (feed generators) for the requesting account.",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feeds"],
"properties": {
"cursor": { "type": "string" },
"feeds": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#generatorView"
}
}
}
}
}
}
}
}
+43
View File
@@ -0,0 +1,43 @@
{
"lexicon": 1,
"id": "app.bsky.feed.getTimeline",
"defs": {
"main": {
"type": "query",
"description": "Get a view of the requesting account's home timeline. This is expected to be some form of reverse-chronological feed.",
"parameters": {
"type": "params",
"properties": {
"algorithm": {
"type": "string",
"description": "Variant 'algorithm' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feed"],
"properties": {
"cursor": { "type": "string" },
"feed": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#feedViewPost"
}
}
}
}
}
}
}
}
+19
View File
@@ -0,0 +1,19 @@
{
"lexicon": 1,
"id": "app.bsky.feed.like",
"defs": {
"main": {
"type": "record",
"description": "Record declaring a 'like' of a piece of subject content.",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "createdAt"],
"properties": {
"subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
+96
View File
@@ -0,0 +1,96 @@
{
"lexicon": 1,
"id": "app.bsky.feed.post",
"defs": {
"main": {
"type": "record",
"description": "Record containing a Bluesky post.",
"key": "tid",
"record": {
"type": "object",
"required": ["text", "createdAt"],
"properties": {
"text": {
"type": "string",
"maxLength": 3000,
"maxGraphemes": 300,
"description": "The primary post content. May be an empty string, if there are embeds."
},
"entities": {
"type": "array",
"description": "DEPRECATED: replaced by app.bsky.richtext.facet.",
"items": { "type": "ref", "ref": "#entity" }
},
"facets": {
"type": "array",
"description": "Annotations of text (mentions, URLs, hashtags, etc)",
"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
},
"reply": { "type": "ref", "ref": "#replyRef" },
"embed": {
"type": "union",
"refs": [
"app.bsky.embed.images",
"app.bsky.embed.video",
"app.bsky.embed.external",
"app.bsky.embed.record",
"app.bsky.embed.recordWithMedia"
]
},
"langs": {
"type": "array",
"description": "Indicates human language of post primary text content.",
"maxLength": 3,
"items": { "type": "string", "format": "language" }
},
"labels": {
"type": "union",
"description": "Self-label values for this post. Effectively content warnings.",
"refs": ["com.atproto.label.defs#selfLabels"]
},
"tags": {
"type": "array",
"description": "Additional hashtags, in addition to any included in post text and facets.",
"maxLength": 8,
"items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 }
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this post was originally created."
}
}
}
},
"replyRef": {
"type": "object",
"required": ["root", "parent"],
"properties": {
"root": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
"parent": { "type": "ref", "ref": "com.atproto.repo.strongRef" }
}
},
"entity": {
"type": "object",
"description": "Deprecated: use facets instead.",
"required": ["index", "type", "value"],
"properties": {
"index": { "type": "ref", "ref": "#textSlice" },
"type": {
"type": "string",
"description": "Expected values are 'mention' and 'link'."
},
"value": { "type": "string" }
}
},
"textSlice": {
"type": "object",
"description": "Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.",
"required": ["start", "end"],
"properties": {
"start": { "type": "integer", "minimum": 0 },
"end": { "type": "integer", "minimum": 0 }
}
}
}
}
+46
View File
@@ -0,0 +1,46 @@
{
"lexicon": 1,
"id": "app.bsky.feed.postgate",
"defs": {
"main": {
"type": "record",
"key": "tid",
"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.",
"record": {
"type": "object",
"required": ["post", "createdAt"],
"properties": {
"createdAt": { "type": "string", "format": "datetime" },
"post": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the post record."
},
"detachedEmbeddingUris": {
"type": "array",
"maxLength": 50,
"items": {
"type": "string",
"format": "at-uri"
},
"description": "List of AT-URIs embedding this post that the author has detached from."
},
"embeddingRules": {
"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.",
"type": "array",
"maxLength": 5,
"items": {
"type": "union",
"refs": ["#disableRule"]
}
}
}
}
},
"disableRule": {
"type": "object",
"description": "Disables embedding of this post.",
"properties": {}
}
}
}
+19
View File
@@ -0,0 +1,19 @@
{
"lexicon": 1,
"id": "app.bsky.feed.repost",
"defs": {
"main": {
"description": "Record representing a 'repost' of an existing Bluesky post.",
"type": "record",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "createdAt"],
"properties": {
"subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
+99
View File
@@ -0,0 +1,99 @@
{
"lexicon": 1,
"id": "app.bsky.feed.searchPosts",
"defs": {
"main": {
"type": "query",
"description": "Find posts matching search criteria, returning views of those posts.",
"parameters": {
"type": "params",
"required": ["q"],
"properties": {
"q": {
"type": "string",
"description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
},
"sort": {
"type": "string",
"knownValues": ["top", "latest"],
"default": "latest",
"description": "Specifies the ranking order of results."
},
"since": {
"type": "string",
"description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD)."
},
"until": {
"type": "string",
"description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD)."
},
"mentions": {
"type": "string",
"format": "at-identifier",
"description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions."
},
"author": {
"type": "string",
"format": "at-identifier",
"description": "Filter to posts by the given account. Handles are resolved to DID before query-time."
},
"lang": {
"type": "string",
"format": "language",
"description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection."
},
"domain": {
"type": "string",
"description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization."
},
"url": {
"type": "string",
"format": "uri",
"description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching."
},
"tag": {
"type": "array",
"items": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64
},
"description": "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": "string",
"description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["posts"],
"properties": {
"cursor": { "type": "string" },
"hitsTotal": {
"type": "integer",
"description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits."
},
"posts": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#postView"
}
}
}
}
},
"errors": [{ "name": "BadQueryString" }]
}
}
}
@@ -0,0 +1,33 @@
{
"lexicon": 1,
"id": "app.bsky.feed.sendInteractions",
"defs": {
"main": {
"type": "procedure",
"description": "Send information about interactions with feed items back to the feed generator that served them.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["interactions"],
"properties": {
"interactions": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#interaction"
}
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"properties": {}
}
}
}
}
}
+69
View File
@@ -0,0 +1,69 @@
{
"lexicon": 1,
"id": "app.bsky.feed.threadgate",
"defs": {
"main": {
"type": "record",
"key": "tid",
"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.",
"record": {
"type": "object",
"required": ["post", "createdAt"],
"properties": {
"post": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the post record."
},
"allow": {
"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.",
"type": "array",
"maxLength": 5,
"items": {
"type": "union",
"refs": [
"#mentionRule",
"#followerRule",
"#followingRule",
"#listRule"
]
}
},
"createdAt": { "type": "string", "format": "datetime" },
"hiddenReplies": {
"type": "array",
"maxLength": 50,
"items": {
"type": "string",
"format": "at-uri"
},
"description": "List of hidden reply URIs."
}
}
}
},
"mentionRule": {
"type": "object",
"description": "Allow replies from actors mentioned in your post.",
"properties": {}
},
"followerRule": {
"type": "object",
"description": "Allow replies from actors who follow you.",
"properties": {}
},
"followingRule": {
"type": "object",
"description": "Allow replies from actors you follow.",
"properties": {}
},
"listRule": {
"type": "object",
"description": "Allow replies from actors on a list.",
"required": ["list"],
"properties": {
"list": { "type": "string", "format": "at-uri" }
}
}
}
}
+23
View File
@@ -0,0 +1,23 @@
{
"lexicon": 1,
"id": "app.bsky.graph.block",
"defs": {
"main": {
"type": "record",
"description": "Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details.",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "createdAt"],
"properties": {
"subject": {
"type": "string",
"format": "did",
"description": "DID of the account to be blocked."
},
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
+166
View File
@@ -0,0 +1,166 @@
{
"lexicon": 1,
"id": "app.bsky.graph.defs",
"defs": {
"listViewBasic": {
"type": "object",
"required": ["uri", "cid", "name", "purpose"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"name": { "type": "string", "maxLength": 64, "minLength": 1 },
"purpose": { "type": "ref", "ref": "#listPurpose" },
"avatar": { "type": "string", "format": "uri" },
"listItemCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"viewer": { "type": "ref", "ref": "#listViewerState" },
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"listView": {
"type": "object",
"required": ["uri", "cid", "creator", "name", "purpose", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
"name": { "type": "string", "maxLength": 64, "minLength": 1 },
"purpose": { "type": "ref", "ref": "#listPurpose" },
"description": {
"type": "string",
"maxGraphemes": 300,
"maxLength": 3000
},
"descriptionFacets": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
},
"avatar": { "type": "string", "format": "uri" },
"listItemCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"viewer": { "type": "ref", "ref": "#listViewerState" },
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"listItemView": {
"type": "object",
"required": ["uri", "subject"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"subject": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }
}
},
"starterPackView": {
"type": "object",
"required": ["uri", "cid", "record", "creator", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"record": { "type": "unknown" },
"creator": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
},
"list": { "type": "ref", "ref": "#listViewBasic" },
"listItemsSample": {
"type": "array",
"maxLength": 12,
"items": { "type": "ref", "ref": "#listItemView" }
},
"feeds": {
"type": "array",
"maxLength": 3,
"items": { "type": "ref", "ref": "app.bsky.feed.defs#generatorView" }
},
"joinedWeekCount": { "type": "integer", "minimum": 0 },
"joinedAllTimeCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"starterPackViewBasic": {
"type": "object",
"required": ["uri", "cid", "record", "creator", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"record": { "type": "unknown" },
"creator": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
},
"listItemCount": { "type": "integer", "minimum": 0 },
"joinedWeekCount": { "type": "integer", "minimum": 0 },
"joinedAllTimeCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"listPurpose": {
"type": "string",
"knownValues": [
"app.bsky.graph.defs#modlist",
"app.bsky.graph.defs#curatelist",
"app.bsky.graph.defs#referencelist"
]
},
"modlist": {
"type": "token",
"description": "A list of actors to apply an aggregate moderation action (mute/block) on."
},
"curatelist": {
"type": "token",
"description": "A list of actors used for curation purposes such as list feeds or interaction gating."
},
"referencelist": {
"type": "token",
"description": "A list of actors used for only for reference purposes such as within a starter pack."
},
"listViewerState": {
"type": "object",
"properties": {
"muted": { "type": "boolean" },
"blocked": { "type": "string", "format": "at-uri" }
}
},
"notFoundActor": {
"type": "object",
"description": "indicates that a handle or DID could not be resolved",
"required": ["actor", "notFound"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"notFound": { "type": "boolean", "const": true }
}
},
"relationship": {
"type": "object",
"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)",
"required": ["did"],
"properties": {
"did": { "type": "string", "format": "did" },
"following": {
"type": "string",
"format": "at-uri",
"description": "if the actor follows this DID, this is the AT-URI of the follow record"
},
"followedBy": {
"type": "string",
"format": "at-uri",
"description": "if the actor is followed by this DID, contains the AT-URI of the follow record"
}
}
}
}
}
+19
View File
@@ -0,0 +1,19 @@
{
"lexicon": 1,
"id": "app.bsky.graph.follow",
"defs": {
"main": {
"type": "record",
"description": "Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "createdAt"],
"properties": {
"subject": { "type": "string", "format": "did" },
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
@@ -0,0 +1,41 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getActorStarterPacks",
"defs": {
"main": {
"type": "query",
"description": "Get a list of starter packs created by the actor.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPacks"],
"properties": {
"cursor": { "type": "string" },
"starterPacks": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackViewBasic"
}
}
}
}
}
}
}
}
+39
View File
@@ -0,0 +1,39 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getBlocks",
"defs": {
"main": {
"type": "query",
"description": "Enumerates which accounts the requesting account is currently blocking. Requires auth.",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["blocks"],
"properties": {
"cursor": { "type": "string" },
"blocks": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
+45
View File
@@ -0,0 +1,45 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getFollowers",
"defs": {
"main": {
"type": "query",
"description": "Enumerates accounts which follow a specified account (actor).",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["subject", "followers"],
"properties": {
"subject": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
},
"cursor": { "type": "string" },
"followers": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
+45
View File
@@ -0,0 +1,45 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getFollows",
"defs": {
"main": {
"type": "query",
"description": "Enumerates accounts which a specified account (actor) follows.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["subject", "follows"],
"properties": {
"subject": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
},
"cursor": { "type": "string" },
"follows": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,45 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getKnownFollowers",
"defs": {
"main": {
"type": "query",
"description": "Enumerates accounts which follow a specified account (actor) and are followed by the viewer.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["subject", "followers"],
"properties": {
"subject": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
},
"cursor": { "type": "string" },
"followers": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
+46
View File
@@ -0,0 +1,46 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getList",
"defs": {
"main": {
"type": "query",
"description": "Gets a 'view' (with additional context) of a specified list.",
"parameters": {
"type": "params",
"required": ["list"],
"properties": {
"list": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) of the list record to hydrate."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["list", "items"],
"properties": {
"cursor": { "type": "string" },
"list": { "type": "ref", "ref": "app.bsky.graph.defs#listView" },
"items": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.graph.defs#listItemView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getListBlocks",
"defs": {
"main": {
"type": "query",
"description": "Get mod lists that the requesting account (actor) is blocking. Requires auth.",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["lists"],
"properties": {
"cursor": { "type": "string" },
"lists": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.graph.defs#listView" }
}
}
}
}
}
}
}
+36
View File
@@ -0,0 +1,36 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getListMutes",
"defs": {
"main": {
"type": "query",
"description": "Enumerates mod lists that the requesting account (actor) currently has muted. Requires auth.",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["lists"],
"properties": {
"cursor": { "type": "string" },
"lists": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.graph.defs#listView" }
}
}
}
}
}
}
}
+42
View File
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getLists",
"defs": {
"main": {
"type": "query",
"description": "Enumerates the lists created by a specified account (actor).",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": {
"type": "string",
"format": "at-identifier",
"description": "The account (actor) to enumerate lists from."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["lists"],
"properties": {
"cursor": { "type": "string" },
"lists": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.graph.defs#listView" }
}
}
}
}
}
}
}
+39
View File
@@ -0,0 +1,39 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getMutes",
"defs": {
"main": {
"type": "query",
"description": "Enumerates accounts that the requesting account (actor) currently has muted. Requires auth.",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["mutes"],
"properties": {
"cursor": { "type": "string" },
"mutes": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,56 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getRelationships",
"defs": {
"main": {
"type": "query",
"description": "Enumerates public relationships between one account, and a list of other accounts. Does not require auth.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": {
"type": "string",
"format": "at-identifier",
"description": "Primary account requesting relationships for."
},
"others": {
"type": "array",
"description": "List of 'other' accounts to be related back to the primary.",
"maxLength": 30,
"items": {
"type": "string",
"format": "at-identifier"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["relationships"],
"properties": {
"actor": { "type": "string", "format": "did" },
"relationships": {
"type": "array",
"items": {
"type": "union",
"refs": [
"app.bsky.graph.defs#relationship",
"app.bsky.graph.defs#notFoundActor"
]
}
}
}
}
},
"errors": [
{
"name": "ActorNotFound",
"description": "the primary actor at-identifier could not be resolved"
}
]
}
}
}
@@ -0,0 +1,34 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getStarterPack",
"defs": {
"main": {
"type": "query",
"description": "Gets a view of a starter pack.",
"parameters": {
"type": "params",
"required": ["starterPack"],
"properties": {
"starterPack": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) of the starter pack record."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPack"],
"properties": {
"starterPack": {
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackView"
}
}
}
}
}
}
}
@@ -0,0 +1,37 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getStarterPacks",
"defs": {
"main": {
"type": "query",
"description": "Get views for a list of starter packs.",
"parameters": {
"type": "params",
"required": ["uris"],
"properties": {
"uris": {
"type": "array",
"items": { "type": "string", "format": "at-uri" },
"maxLength": 25
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPacks"],
"properties": {
"starterPacks": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackViewBasic"
}
}
}
}
}
}
}
}
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.graph.getSuggestedFollowsByActor",
"defs": {
"main": {
"type": "query",
"description": "Enumerates follows similar to a given account (actor). Expected use is to recommend additional accounts immediately after following one account.",
"parameters": {
"type": "params",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["suggestions"],
"properties": {
"suggestions": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
},
"isFallback": {
"type": "boolean",
"description": "If true, response has fallen-back to generic results, and is not scoped using relativeToDid",
"default": false
},
"recId": {
"type": "integer",
"description": "Snowflake for this recommendation, use when submitting recommendation events."
}
}
}
}
}
}
}
+47
View File
@@ -0,0 +1,47 @@
{
"lexicon": 1,
"id": "app.bsky.graph.list",
"defs": {
"main": {
"type": "record",
"description": "Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.",
"key": "tid",
"record": {
"type": "object",
"required": ["name", "purpose", "createdAt"],
"properties": {
"purpose": {
"type": "ref",
"description": "Defines the purpose of the list (aka, moderation-oriented or curration-oriented)",
"ref": "app.bsky.graph.defs#listPurpose"
},
"name": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Display name for list; can not be empty."
},
"description": {
"type": "string",
"maxGraphemes": 300,
"maxLength": 3000
},
"descriptionFacets": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
},
"avatar": {
"type": "blob",
"accept": ["image/png", "image/jpeg"],
"maxSize": 1000000
},
"labels": {
"type": "union",
"refs": ["com.atproto.label.defs#selfLabels"]
},
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
+23
View File
@@ -0,0 +1,23 @@
{
"lexicon": 1,
"id": "app.bsky.graph.listblock",
"defs": {
"main": {
"type": "record",
"description": "Record representing a block relationship against an entire an entire list of accounts (actors).",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "createdAt"],
"properties": {
"subject": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the mod list record."
},
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"lexicon": 1,
"id": "app.bsky.graph.listitem",
"defs": {
"main": {
"type": "record",
"description": "Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "list", "createdAt"],
"properties": {
"subject": {
"type": "string",
"format": "did",
"description": "The account which is included on the list."
},
"list": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the list record (app.bsky.graph.list)."
},
"createdAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.graph.muteActor",
"defs": {
"main": {
"type": "procedure",
"description": "Creates a mute relationship for the specified account. Mutes are private in Bluesky. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" }
}
}
}
}
}
}
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.graph.muteActorList",
"defs": {
"main": {
"type": "procedure",
"description": "Creates a mute relationship for the specified list of accounts. Mutes are private in Bluesky. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["list"],
"properties": {
"list": { "type": "string", "format": "at-uri" }
}
}
}
}
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.graph.muteThread",
"defs": {
"main": {
"type": "procedure",
"description": "Mutes a thread preventing notifications from the thread and any of its children. Mutes are private in Bluesky. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["root"],
"properties": {
"root": { "type": "string", "format": "at-uri" }
}
}
}
}
}
}
@@ -0,0 +1,48 @@
{
"lexicon": 1,
"id": "app.bsky.graph.searchStarterPacks",
"defs": {
"main": {
"type": "query",
"description": "Find starter packs matching search criteria. Does not require auth.",
"parameters": {
"type": "params",
"required": ["q"],
"properties": {
"q": {
"type": "string",
"description": "Search query string. Syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": "string"
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPacks"],
"properties": {
"cursor": {
"type": "string"
},
"starterPacks": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackViewBasic"
}
}
}
}
}
}
}
}
+51
View File
@@ -0,0 +1,51 @@
{
"lexicon": 1,
"id": "app.bsky.graph.starterpack",
"defs": {
"main": {
"type": "record",
"description": "Record defining a starter pack of actors and feeds for new users.",
"key": "tid",
"record": {
"type": "object",
"required": ["name", "list", "createdAt"],
"properties": {
"name": {
"type": "string",
"maxGraphemes": 50,
"maxLength": 500,
"minLength": 1,
"description": "Display name for starter pack; can not be empty."
},
"description": {
"type": "string",
"maxGraphemes": 300,
"maxLength": 3000
},
"descriptionFacets": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
},
"list": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the list record."
},
"feeds": {
"type": "array",
"maxLength": 3,
"items": { "type": "ref", "ref": "#feedItem" }
},
"createdAt": { "type": "string", "format": "datetime" }
}
}
},
"feedItem": {
"type": "object",
"required": ["uri"],
"properties": {
"uri": { "type": "string", "format": "at-uri" }
}
}
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.graph.unmuteActor",
"defs": {
"main": {
"type": "procedure",
"description": "Unmutes the specified account. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actor"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" }
}
}
}
}
}
}
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.graph.unmuteActorList",
"defs": {
"main": {
"type": "procedure",
"description": "Unmutes the specified list of accounts. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["list"],
"properties": {
"list": { "type": "string", "format": "at-uri" }
}
}
}
}
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.graph.unmuteThread",
"defs": {
"main": {
"type": "procedure",
"description": "Unmutes the specified thread. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["root"],
"properties": {
"root": { "type": "string", "format": "at-uri" }
}
}
}
}
}
}
+36
View File
@@ -0,0 +1,36 @@
{
"lexicon": 1,
"id": "app.bsky.graph.verification",
"defs": {
"main": {
"type": "record",
"description": "Record declaring a verification relationship between two accounts. Verifications are only considered valid by an app if issued by an account the app considers trusted.",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "handle", "displayName", "createdAt"],
"properties": {
"subject": {
"description": "DID of the subject the verification applies to.",
"type": "string",
"format": "did"
},
"handle": {
"description": "Handle of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current handle matches the one at the time of verifying.",
"type": "string",
"format": "handle"
},
"displayName": {
"description": "Display name of the subject the verification applies to at the moment of verifying, which might not be the same at the time of viewing. The verification is only valid if the current displayName matches the one at the time of verifying.",
"type": "string"
},
"createdAt": {
"description": "Date of when the verification was created.",
"type": "string",
"format": "datetime"
}
}
}
}
}
}
+91
View File
@@ -0,0 +1,91 @@
{
"lexicon": 1,
"id": "app.bsky.labeler.defs",
"defs": {
"labelerView": {
"type": "object",
"required": ["uri", "cid", "creator", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
"likeCount": { "type": "integer", "minimum": 0 },
"viewer": { "type": "ref", "ref": "#labelerViewerState" },
"indexedAt": { "type": "string", "format": "datetime" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
}
}
},
"labelerViewDetailed": {
"type": "object",
"required": ["uri", "cid", "creator", "policies", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
"policies": {
"type": "ref",
"ref": "app.bsky.labeler.defs#labelerPolicies"
},
"likeCount": { "type": "integer", "minimum": 0 },
"viewer": { "type": "ref", "ref": "#labelerViewerState" },
"indexedAt": { "type": "string", "format": "datetime" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"reasonTypes": {
"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.",
"type": "array",
"items": {
"type": "ref",
"ref": "com.atproto.moderation.defs#reasonType"
}
},
"subjectTypes": {
"description": "The set of subject types (account, record, etc) this service accepts reports on.",
"type": "array",
"items": {
"type": "ref",
"ref": "com.atproto.moderation.defs#subjectType"
}
},
"subjectCollections": {
"type": "array",
"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.",
"items": { "type": "string", "format": "nsid" }
}
}
},
"labelerViewerState": {
"type": "object",
"properties": {
"like": { "type": "string", "format": "at-uri" }
}
},
"labelerPolicies": {
"type": "object",
"required": ["labelValues"],
"properties": {
"labelValues": {
"type": "array",
"description": "The label values which this labeler publishes. May include global or custom labels.",
"items": {
"type": "ref",
"ref": "com.atproto.label.defs#labelValue"
}
},
"labelValueDefinitions": {
"type": "array",
"description": "Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.",
"items": {
"type": "ref",
"ref": "com.atproto.label.defs#labelValueDefinition"
}
}
}
}
}
}
@@ -0,0 +1,43 @@
{
"lexicon": 1,
"id": "app.bsky.labeler.getServices",
"defs": {
"main": {
"type": "query",
"description": "Get information about a list of labeler services.",
"parameters": {
"type": "params",
"required": ["dids"],
"properties": {
"dids": {
"type": "array",
"items": { "type": "string", "format": "did" }
},
"detailed": {
"type": "boolean",
"default": false
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["views"],
"properties": {
"views": {
"type": "array",
"items": {
"type": "union",
"refs": [
"app.bsky.labeler.defs#labelerView",
"app.bsky.labeler.defs#labelerViewDetailed"
]
}
}
}
}
}
}
}
}
+47
View File
@@ -0,0 +1,47 @@
{
"lexicon": 1,
"id": "app.bsky.labeler.service",
"defs": {
"main": {
"type": "record",
"description": "A declaration of the existence of labeler service.",
"key": "literal:self",
"record": {
"type": "object",
"required": ["policies", "createdAt"],
"properties": {
"policies": {
"type": "ref",
"ref": "app.bsky.labeler.defs#labelerPolicies"
},
"labels": {
"type": "union",
"refs": ["com.atproto.label.defs#selfLabels"]
},
"createdAt": { "type": "string", "format": "datetime" },
"reasonTypes": {
"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.",
"type": "array",
"items": {
"type": "ref",
"ref": "com.atproto.moderation.defs#reasonType"
}
},
"subjectTypes": {
"description": "The set of subject types (account, record, etc) this service accepts reports on.",
"type": "array",
"items": {
"type": "ref",
"ref": "com.atproto.moderation.defs#subjectType"
}
},
"subjectCollections": {
"type": "array",
"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.",
"items": { "type": "string", "format": "nsid" }
}
}
}
}
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"lexicon": 1,
"id": "app.bsky.notification.defs",
"defs": {
"recordDeleted": {
"type": "object",
"properties": {}
}
}
}
@@ -0,0 +1,27 @@
{
"lexicon": 1,
"id": "app.bsky.notification.getUnreadCount",
"defs": {
"main": {
"type": "query",
"description": "Count the number of unread notifications for the requesting account. Requires auth.",
"parameters": {
"type": "params",
"properties": {
"priority": { "type": "boolean" },
"seenAt": { "type": "string", "format": "datetime" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["count"],
"properties": {
"count": { "type": "integer" }
}
}
}
}
}
}
@@ -0,0 +1,88 @@
{
"lexicon": 1,
"id": "app.bsky.notification.listNotifications",
"defs": {
"main": {
"type": "query",
"description": "Enumerate notifications for the requesting account. Requires auth.",
"parameters": {
"type": "params",
"properties": {
"reasons": {
"description": "Notification reasons to include in response.",
"type": "array",
"items": {
"type": "string",
"description": "A reason that matches the reason property of #notification."
}
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"priority": { "type": "boolean" },
"cursor": { "type": "string" },
"seenAt": { "type": "string", "format": "datetime" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["notifications"],
"properties": {
"cursor": { "type": "string" },
"notifications": {
"type": "array",
"items": { "type": "ref", "ref": "#notification" }
},
"priority": { "type": "boolean" },
"seenAt": { "type": "string", "format": "datetime" }
}
}
}
},
"notification": {
"type": "object",
"required": [
"uri",
"cid",
"author",
"reason",
"record",
"isRead",
"indexedAt"
],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"author": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
"reason": {
"type": "string",
"description": "Expected values are 'like', 'repost', 'follow', 'mention', 'reply', 'quote', 'starterpack-joined', 'verified', and 'unverified'.",
"knownValues": [
"like",
"repost",
"follow",
"mention",
"reply",
"quote",
"starterpack-joined",
"verified",
"unverified"
]
},
"reasonSubject": { "type": "string", "format": "at-uri" },
"record": { "type": "unknown" },
"isRead": { "type": "boolean" },
"indexedAt": { "type": "string", "format": "datetime" },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
}
}
}
}
}
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.notification.putPreferences",
"defs": {
"main": {
"type": "procedure",
"description": "Set notification-related preferences for an account. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["priority"],
"properties": {
"priority": { "type": "boolean" }
}
}
}
}
}
}
@@ -0,0 +1,26 @@
{
"lexicon": 1,
"id": "app.bsky.notification.registerPush",
"defs": {
"main": {
"type": "procedure",
"description": "Register to receive push notifications, via a specified service, for the requesting account. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["serviceDid", "token", "platform", "appId"],
"properties": {
"serviceDid": { "type": "string", "format": "did" },
"token": { "type": "string" },
"platform": {
"type": "string",
"knownValues": ["ios", "android", "web"]
},
"appId": { "type": "string" }
}
}
}
}
}
}
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.notification.updateSeen",
"defs": {
"main": {
"type": "procedure",
"description": "Notify server that the requesting account has seen notifications. Requires auth.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["seenAt"],
"properties": {
"seenAt": { "type": "string", "format": "datetime" }
}
}
}
}
}
}
+51
View File
@@ -0,0 +1,51 @@
{
"lexicon": 1,
"id": "app.bsky.richtext.facet",
"defs": {
"main": {
"type": "object",
"description": "Annotation of a sub-string within rich text.",
"required": ["index", "features"],
"properties": {
"index": { "type": "ref", "ref": "#byteSlice" },
"features": {
"type": "array",
"items": { "type": "union", "refs": ["#mention", "#link", "#tag"] }
}
}
},
"mention": {
"type": "object",
"description": "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.",
"required": ["did"],
"properties": {
"did": { "type": "string", "format": "did" }
}
},
"link": {
"type": "object",
"description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.",
"required": ["uri"],
"properties": {
"uri": { "type": "string", "format": "uri" }
}
},
"tag": {
"type": "object",
"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').",
"required": ["tag"],
"properties": {
"tag": { "type": "string", "maxLength": 640, "maxGraphemes": 64 }
}
},
"byteSlice": {
"type": "object",
"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.",
"required": ["byteStart", "byteEnd"],
"properties": {
"byteStart": { "type": "integer", "minimum": 0 },
"byteEnd": { "type": "integer", "minimum": 0 }
}
}
}
}
+91
View File
@@ -0,0 +1,91 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.defs",
"defs": {
"skeletonSearchPost": {
"type": "object",
"required": ["uri"],
"properties": {
"uri": { "type": "string", "format": "at-uri" }
}
},
"skeletonSearchActor": {
"type": "object",
"required": ["did"],
"properties": {
"did": { "type": "string", "format": "did" }
}
},
"skeletonSearchStarterPack": {
"type": "object",
"required": ["uri"],
"properties": {
"uri": { "type": "string", "format": "at-uri" }
}
},
"trendingTopic": {
"type": "object",
"required": ["topic", "link"],
"properties": {
"topic": { "type": "string" },
"displayName": { "type": "string" },
"description": { "type": "string" },
"link": { "type": "string" }
}
},
"skeletonTrend": {
"type": "object",
"required": [
"topic",
"displayName",
"link",
"startedAt",
"postCount",
"dids"
],
"properties": {
"topic": { "type": "string" },
"displayName": { "type": "string" },
"link": { "type": "string" },
"startedAt": { "type": "string", "format": "datetime" },
"postCount": { "type": "integer" },
"status": { "type": "string", "knownValues": ["hot"] },
"category": { "type": "string" },
"dids": {
"type": "array",
"items": {
"type": "string",
"format": "did"
}
}
}
},
"trendView": {
"type": "object",
"required": [
"topic",
"displayName",
"link",
"startedAt",
"postCount",
"actors"
],
"properties": {
"topic": { "type": "string" },
"displayName": { "type": "string" },
"link": { "type": "string" },
"startedAt": { "type": "string", "format": "datetime" },
"postCount": { "type": "integer" },
"status": { "type": "string", "knownValues": ["hot"] },
"category": { "type": "string" },
"actors": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
}
}
}
}
}
}
@@ -0,0 +1,20 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getConfig",
"defs": {
"main": {
"type": "query",
"description": "Get miscellaneous runtime configuration.",
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": [],
"properties": {
"checkEmailConfirmed": { "type": "boolean" }
}
}
}
}
}
}
@@ -0,0 +1,40 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getPopularFeedGenerators",
"defs": {
"main": {
"type": "query",
"description": "An unspecced view of globally popular feed generators.",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" },
"query": { "type": "string" }
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feeds"],
"properties": {
"cursor": { "type": "string" },
"feeds": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#generatorView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,37 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getSuggestedFeeds",
"defs": {
"main": {
"type": "query",
"description": "Get a list of suggested feeds",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feeds"],
"properties": {
"feeds": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.feed.defs#generatorView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getSuggestedFeedsSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Get a skeleton of suggested feeds. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedFeeds",
"parameters": {
"type": "params",
"properties": {
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["feeds"],
"properties": {
"feeds": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
}
}
}
}
}
}
}
}
@@ -0,0 +1,37 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getSuggestedStarterPacks",
"defs": {
"main": {
"type": "query",
"description": "Get a list of suggested starterpacks",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPacks"],
"properties": {
"starterPacks": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.graph.defs#starterPackView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getSuggestedStarterPacksSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Get a skeleton of suggested starterpacks. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedStarterpacks",
"parameters": {
"type": "params",
"properties": {
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPacks"],
"properties": {
"starterPacks": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
}
}
}
}
}
}
}
}
@@ -0,0 +1,41 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getSuggestedUsers",
"defs": {
"main": {
"type": "query",
"description": "Get a list of suggested users",
"parameters": {
"type": "params",
"properties": {
"category": {
"type": "string",
"description": "Category of users to get suggestions for."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 25
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actors"],
"properties": {
"actors": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,46 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getSuggestedUsersSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Get a skeleton of suggested users. Intended to be called and hydrated by app.bsky.unspecced.getSuggestedUsers",
"parameters": {
"type": "params",
"properties": {
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
},
"category": {
"type": "string",
"description": "Category of users to get suggestions for."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 25
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["dids"],
"properties": {
"dids": {
"type": "array",
"items": {
"type": "string",
"format": "did"
}
}
}
}
}
}
}
}
@@ -0,0 +1,58 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getSuggestionsSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Get a skeleton of suggested actors. Intended to be called and then hydrated through app.bsky.actor.getSuggestions",
"parameters": {
"type": "params",
"properties": {
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": { "type": "string" },
"relativeToDid": {
"type": "string",
"format": "did",
"description": "DID of the account to get suggestions relative to. If not provided, suggestions will be based on the viewer."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actors"],
"properties": {
"cursor": { "type": "string" },
"actors": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#skeletonSearchActor"
}
},
"relativeToDid": {
"type": "string",
"format": "did",
"description": "DID of the account these suggestions are relative to. If this is returned undefined, suggestions are based on the viewer."
},
"recId": {
"type": "integer",
"description": "Snowflake for this recommendation, use when submitting recommendation events."
}
}
}
}
}
}
}
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getTaggedSuggestions",
"defs": {
"main": {
"type": "query",
"description": "Get a list of suggestions (feeds and users) tagged with categories",
"parameters": {
"type": "params",
"properties": {}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["suggestions"],
"properties": {
"suggestions": {
"type": "array",
"items": {
"type": "ref",
"ref": "#suggestion"
}
}
}
}
}
},
"suggestion": {
"type": "object",
"required": ["tag", "subjectType", "subject"],
"properties": {
"tag": { "type": "string" },
"subjectType": {
"type": "string",
"knownValues": ["actor", "feed"]
},
"subject": { "type": "string", "format": "uri" }
}
}
}
}
@@ -0,0 +1,49 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getTrendingTopics",
"defs": {
"main": {
"type": "query",
"description": "Get a list of trending topics",
"parameters": {
"type": "params",
"properties": {
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["topics", "suggested"],
"properties": {
"topics": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#trendingTopic"
}
},
"suggested": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#trendingTopic"
}
}
}
}
}
}
}
}
@@ -0,0 +1,37 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getTrends",
"defs": {
"main": {
"type": "query",
"description": "Get the current trends on the network",
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["trends"],
"properties": {
"trends": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#trendView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.getTrendsSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Get the skeleton of trends on the network. Intended to be called and then hydrated through app.bsky.unspecced.getTrends",
"parameters": {
"type": "params",
"properties": {
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["trends"],
"properties": {
"trends": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#skeletonTrend"
}
}
}
}
}
}
}
}
@@ -0,0 +1,61 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.searchActorsSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Backend Actors (profile) search, returns only skeleton.",
"parameters": {
"type": "params",
"required": ["q"],
"properties": {
"q": {
"type": "string",
"description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax."
},
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries). Used to boost followed accounts in ranking."
},
"typeahead": {
"type": "boolean",
"description": "If true, acts as fast/simple 'typeahead' query."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": "string",
"description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["actors"],
"properties": {
"cursor": { "type": "string" },
"hitsTotal": {
"type": "integer",
"description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits."
},
"actors": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#skeletonSearchActor"
}
}
}
}
},
"errors": [{ "name": "BadQueryString" }]
}
}
}
@@ -0,0 +1,104 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.searchPostsSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Backend Posts search, returns only skeleton",
"parameters": {
"type": "params",
"required": ["q"],
"properties": {
"q": {
"type": "string",
"description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
},
"sort": {
"type": "string",
"knownValues": ["top", "latest"],
"default": "latest",
"description": "Specifies the ranking order of results."
},
"since": {
"type": "string",
"description": "Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYYY-MM-DD)."
},
"until": {
"type": "string",
"description": "Filter results for posts before the indicated datetime (not inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or just an ISO date (YYY-MM-DD)."
},
"mentions": {
"type": "string",
"format": "at-identifier",
"description": "Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions."
},
"author": {
"type": "string",
"format": "at-identifier",
"description": "Filter to posts by the given account. Handles are resolved to DID before query-time."
},
"lang": {
"type": "string",
"format": "language",
"description": "Filter to posts in the given language. Expected to be based on post language field, though server may override language detection."
},
"domain": {
"type": "string",
"description": "Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization."
},
"url": {
"type": "string",
"format": "uri",
"description": "Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching."
},
"tag": {
"type": "array",
"items": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64
},
"description": "Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'AND' matching."
},
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries). Used for 'from:me' queries."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": "string",
"description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["posts"],
"properties": {
"cursor": { "type": "string" },
"hitsTotal": {
"type": "integer",
"description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits."
},
"posts": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#skeletonSearchPost"
}
}
}
}
},
"errors": [{ "name": "BadQueryString" }]
}
}
}
@@ -0,0 +1,63 @@
{
"lexicon": 1,
"id": "app.bsky.unspecced.searchStarterPacksSkeleton",
"defs": {
"main": {
"type": "query",
"description": "Backend Starter Pack search, returns only skeleton.",
"parameters": {
"type": "params",
"required": ["q"],
"properties": {
"q": {
"type": "string",
"description": "Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended."
},
"viewer": {
"type": "string",
"format": "did",
"description": "DID of the account making the request (not included for public/unauthenticated queries)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": "string",
"description": "Optional pagination mechanism; may not necessarily allow scrolling through entire result set."
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["starterPacks"],
"properties": {
"cursor": {
"type": "string"
},
"hitsTotal": {
"type": "integer",
"description": "Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits."
},
"starterPacks": {
"type": "array",
"items": {
"type": "ref",
"ref": "app.bsky.unspecced.defs#skeletonSearchStarterPack"
}
}
}
}
},
"errors": [
{
"name": "BadQueryString"
}
]
}
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"lexicon": 1,
"id": "app.bsky.video.defs",
"defs": {
"jobStatus": {
"type": "object",
"required": ["jobId", "did", "state"],
"properties": {
"jobId": { "type": "string" },
"did": { "type": "string", "format": "did" },
"state": {
"type": "string",
"description": "The state of the video processing job. All values not listed as a known value indicate that the job is in process.",
"knownValues": ["JOB_STATE_COMPLETED", "JOB_STATE_FAILED"]
},
"progress": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Progress within the current processing state."
},
"blob": { "type": "blob" },
"error": { "type": "string" },
"message": { "type": "string" }
}
}
}
}
+32
View File
@@ -0,0 +1,32 @@
{
"lexicon": 1,
"id": "app.bsky.video.getJobStatus",
"defs": {
"main": {
"type": "query",
"description": "Get status details for a video processing job.",
"parameters": {
"type": "params",
"required": ["jobId"],
"properties": {
"jobId": {
"type": "string"
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["jobStatus"],
"properties": {
"jobStatus": {
"type": "ref",
"ref": "app.bsky.video.defs#jobStatus"
}
}
}
}
}
}
}
@@ -0,0 +1,24 @@
{
"lexicon": 1,
"id": "app.bsky.video.getUploadLimits",
"defs": {
"main": {
"type": "query",
"description": "Get video upload limits for the authenticated user.",
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["canUpload"],
"properties": {
"canUpload": { "type": "boolean" },
"remainingDailyVideos": { "type": "integer" },
"remainingDailyBytes": { "type": "integer" },
"message": { "type": "string" },
"error": { "type": "string" }
}
}
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More