check in lexicons

This commit is contained in:
Samuel Newman
2026-05-13 17:51:14 +03:00
parent 334dc018bf
commit 7e1e0c202f
24 changed files with 3811 additions and 1 deletions
+544
View File
@@ -0,0 +1,544 @@
{
"id": "app.bsky.feed.defs",
"defs": {
"postView": {
"type": "object",
"required": [
"uri",
"cid",
"author",
"record",
"indexedAt"
],
"properties": {
"cid": {
"type": "string",
"format": "cid"
},
"uri": {
"type": "string",
"format": "at-uri"
},
"debug": {
"type": "unknown",
"description": "Debug information for internal development"
},
"embed": {
"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"
],
"type": "union"
},
"author": {
"ref": "app.bsky.actor.defs#profileViewBasic",
"type": "ref"
},
"labels": {
"type": "array",
"items": {
"ref": "com.atproto.label.defs#label",
"type": "ref"
}
},
"record": {
"type": "unknown"
},
"viewer": {
"ref": "#viewerState",
"type": "ref"
},
"indexedAt": {
"type": "string",
"format": "datetime"
},
"likeCount": {
"type": "integer"
},
"quoteCount": {
"type": "integer"
},
"replyCount": {
"type": "integer"
},
"threadgate": {
"ref": "#threadgateView",
"type": "ref"
},
"repostCount": {
"type": "integer"
},
"bookmarkCount": {
"type": "integer"
}
}
},
"replyRef": {
"type": "object",
"required": [
"root",
"parent"
],
"properties": {
"root": {
"refs": [
"#postView",
"#notFoundPost",
"#blockedPost"
],
"type": "union"
},
"parent": {
"refs": [
"#postView",
"#notFoundPost",
"#blockedPost"
],
"type": "union"
},
"grandparentAuthor": {
"ref": "app.bsky.actor.defs#profileViewBasic",
"type": "ref",
"description": "When parent is a reply to another post, this is the author of that post."
}
}
},
"reasonPin": {
"type": "object",
"properties": {}
},
"blockedPost": {
"type": "object",
"required": [
"uri",
"blocked",
"author"
],
"properties": {
"uri": {
"type": "string",
"format": "at-uri"
},
"author": {
"ref": "#blockedAuthor",
"type": "ref"
},
"blocked": {
"type": "boolean",
"const": true
}
}
},
"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"
]
},
"reqId": {
"type": "string",
"maxLength": 100,
"description": "Unique identifier per request that may be passed back alongside interactions."
},
"feedContext": {
"type": "string",
"maxLength": 2000,
"description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton."
}
}
},
"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"
},
"viewerState": {
"type": "object",
"properties": {
"like": {
"type": "string",
"format": "at-uri"
},
"pinned": {
"type": "boolean"
},
"repost": {
"type": "string",
"format": "at-uri"
},
"bookmarked": {
"type": "boolean"
},
"threadMuted": {
"type": "boolean"
},
"replyDisabled": {
"type": "boolean"
},
"embeddingDisabled": {
"type": "boolean"
}
},
"description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."
},
"feedViewPost": {
"type": "object",
"required": [
"post"
],
"properties": {
"post": {
"ref": "#postView",
"type": "ref"
},
"reply": {
"ref": "#replyRef",
"type": "ref"
},
"reqId": {
"type": "string",
"maxLength": 100,
"description": "Unique identifier per request that may be passed back alongside interactions."
},
"reason": {
"refs": [
"#reasonRepost",
"#reasonPin"
],
"type": "union"
},
"feedContext": {
"type": "string",
"maxLength": 2000,
"description": "Context provided by feed generator that may be passed back alongside interactions."
}
}
},
"notFoundPost": {
"type": "object",
"required": [
"uri",
"notFound"
],
"properties": {
"uri": {
"type": "string",
"format": "at-uri"
},
"notFound": {
"type": "boolean",
"const": true
}
}
},
"reasonRepost": {
"type": "object",
"required": [
"by",
"indexedAt"
],
"properties": {
"by": {
"ref": "app.bsky.actor.defs#profileViewBasic",
"type": "ref"
},
"cid": {
"type": "string",
"format": "cid"
},
"uri": {
"type": "string",
"format": "at-uri"
},
"indexedAt": {
"type": "string",
"format": "datetime"
}
}
},
"blockedAuthor": {
"type": "object",
"required": [
"did"
],
"properties": {
"did": {
"type": "string",
"format": "did"
},
"viewer": {
"ref": "app.bsky.actor.defs#viewerState",
"type": "ref"
}
}
},
"generatorView": {
"type": "object",
"required": [
"uri",
"cid",
"did",
"creator",
"displayName",
"indexedAt"
],
"properties": {
"cid": {
"type": "string",
"format": "cid"
},
"did": {
"type": "string",
"format": "did"
},
"uri": {
"type": "string",
"format": "at-uri"
},
"avatar": {
"type": "string",
"format": "uri"
},
"labels": {
"type": "array",
"items": {
"ref": "com.atproto.label.defs#label",
"type": "ref"
}
},
"viewer": {
"ref": "#generatorViewerState",
"type": "ref"
},
"creator": {
"ref": "app.bsky.actor.defs#profileView",
"type": "ref"
},
"indexedAt": {
"type": "string",
"format": "datetime"
},
"likeCount": {
"type": "integer",
"minimum": 0
},
"contentMode": {
"type": "string",
"knownValues": [
"app.bsky.feed.defs#contentModeUnspecified",
"app.bsky.feed.defs#contentModeVideo"
]
},
"description": {
"type": "string",
"maxLength": 3000,
"maxGraphemes": 300
},
"displayName": {
"type": "string"
},
"descriptionFacets": {
"type": "array",
"items": {
"ref": "app.bsky.richtext.facet",
"type": "ref"
}
},
"acceptsInteractions": {
"type": "boolean"
}
}
},
"threadContext": {
"type": "object",
"properties": {
"rootAuthorLike": {
"type": "string",
"format": "at-uri"
}
},
"description": "Metadata about this post within the context of the thread it is in."
},
"threadViewPost": {
"type": "object",
"required": [
"post"
],
"properties": {
"post": {
"ref": "#postView",
"type": "ref"
},
"parent": {
"refs": [
"#threadViewPost",
"#notFoundPost",
"#blockedPost"
],
"type": "union"
},
"replies": {
"type": "array",
"items": {
"refs": [
"#threadViewPost",
"#notFoundPost",
"#blockedPost"
],
"type": "union"
}
},
"threadContext": {
"ref": "#threadContext",
"type": "ref"
}
}
},
"threadgateView": {
"type": "object",
"properties": {
"cid": {
"type": "string",
"format": "cid"
},
"uri": {
"type": "string",
"format": "at-uri"
},
"lists": {
"type": "array",
"items": {
"ref": "app.bsky.graph.defs#listViewBasic",
"type": "ref"
}
},
"record": {
"type": "unknown"
}
}
},
"interactionLike": {
"type": "token",
"description": "User liked the feed item"
},
"interactionSeen": {
"type": "token",
"description": "Feed item was seen by user"
},
"clickthroughItem": {
"type": "token",
"description": "User clicked through to the feed item"
},
"contentModeVideo": {
"type": "token",
"description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds."
},
"interactionQuote": {
"type": "token",
"description": "User quoted the feed item"
},
"interactionReply": {
"type": "token",
"description": "User replied to the feed item"
},
"interactionShare": {
"type": "token",
"description": "User shared the feed item"
},
"skeletonFeedPost": {
"type": "object",
"required": [
"post"
],
"properties": {
"post": {
"type": "string",
"format": "at-uri"
},
"reason": {
"refs": [
"#skeletonReasonRepost",
"#skeletonReasonPin"
],
"type": "union"
},
"feedContext": {
"type": "string",
"maxLength": 2000,
"description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions."
}
}
},
"clickthroughEmbed": {
"type": "token",
"description": "User clicked through to the embedded content of the feed item"
},
"interactionRepost": {
"type": "token",
"description": "User reposted the feed item"
},
"skeletonReasonPin": {
"type": "object",
"properties": {}
},
"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"
},
"generatorViewerState": {
"type": "object",
"properties": {
"like": {
"type": "string",
"format": "at-uri"
}
}
},
"skeletonReasonRepost": {
"type": "object",
"required": [
"repost"
],
"properties": {
"repost": {
"type": "string",
"format": "at-uri"
}
}
},
"contentModeUnspecified": {
"type": "token",
"description": "Declares the feed generator returns any types of posts."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}
@@ -0,0 +1,46 @@
{
"id": "app.bsky.feed.getPosts",
"defs": {
"main": {
"type": "query",
"output": {
"schema": {
"type": "object",
"required": [
"posts"
],
"properties": {
"posts": {
"type": "array",
"items": {
"ref": "app.bsky.feed.defs#postView",
"type": "ref"
}
}
}
},
"encoding": "application/json"
},
"parameters": {
"type": "params",
"required": [
"uris"
],
"properties": {
"uris": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
},
"maxLength": 25,
"description": "List of post AT-URIs to return hydrated views for."
}
}
},
"description": "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}
+145
View File
@@ -0,0 +1,145 @@
{
"id": "app.bsky.feed.post",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"text",
"createdAt"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64
},
"maxLength": 8,
"description": "Additional hashtags, in addition to any included in post text and facets."
},
"text": {
"type": "string",
"maxLength": 3000,
"description": "The primary post content. May be an empty string, if there are embeds.",
"maxGraphemes": 300
},
"embed": {
"refs": [
"app.bsky.embed.images",
"app.bsky.embed.video",
"app.bsky.embed.external",
"app.bsky.embed.record",
"app.bsky.embed.recordWithMedia"
],
"type": "union"
},
"langs": {
"type": "array",
"items": {
"type": "string",
"format": "language"
},
"maxLength": 3,
"description": "Indicates human language of post primary text content."
},
"reply": {
"ref": "#replyRef",
"type": "ref"
},
"facets": {
"type": "array",
"items": {
"ref": "app.bsky.richtext.facet",
"type": "ref"
},
"description": "Annotations of text (mentions, URLs, hashtags, etc)"
},
"labels": {
"refs": [
"com.atproto.label.defs#selfLabels"
],
"type": "union",
"description": "Self-label values for this post. Effectively content warnings."
},
"entities": {
"type": "array",
"items": {
"ref": "#entity",
"type": "ref"
},
"description": "DEPRECATED: replaced by app.bsky.richtext.facet."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this post was originally created."
}
}
},
"description": "Record containing a Bluesky post."
},
"entity": {
"type": "object",
"required": [
"index",
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"description": "Expected values are 'mention' and 'link'."
},
"index": {
"ref": "#textSlice",
"type": "ref"
},
"value": {
"type": "string"
}
},
"description": "Deprecated: use facets instead."
},
"replyRef": {
"type": "object",
"required": [
"root",
"parent"
],
"properties": {
"root": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"parent": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
}
}
},
"textSlice": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": "integer",
"minimum": 0
},
"start": {
"type": "integer",
"minimum": 0
}
},
"description": "Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}
@@ -0,0 +1,55 @@
{
"id": "app.bsky.feed.postgate",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"post",
"createdAt"
],
"properties": {
"post": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the post record."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"embeddingRules": {
"type": "array",
"items": {
"refs": [
"#disableRule"
],
"type": "union"
},
"maxLength": 5,
"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."
},
"detachedEmbeddingUris": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
},
"maxLength": 50,
"description": "List of AT-URIs embedding this post that the author has detached from."
}
}
},
"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."
},
"disableRule": {
"type": "object",
"properties": {},
"description": "Disables embedding of this post."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}
@@ -0,0 +1,81 @@
{
"id": "app.bsky.feed.threadgate",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"post",
"createdAt"
],
"properties": {
"post": {
"type": "string",
"format": "at-uri",
"description": "Reference (AT-URI) to the post record."
},
"allow": {
"type": "array",
"items": {
"refs": [
"#mentionRule",
"#followerRule",
"#followingRule",
"#listRule"
],
"type": "union"
},
"maxLength": 5,
"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."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"hiddenReplies": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
},
"maxLength": 300,
"description": "List of hidden reply URIs."
}
}
},
"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."
},
"listRule": {
"type": "object",
"required": [
"list"
],
"properties": {
"list": {
"type": "string",
"format": "at-uri"
}
},
"description": "Allow replies from actors on a list."
},
"mentionRule": {
"type": "object",
"properties": {},
"description": "Allow replies from actors mentioned in your post."
},
"followerRule": {
"type": "object",
"properties": {},
"description": "Allow replies from actors who follow you."
},
"followingRule": {
"type": "object",
"properties": {},
"description": "Allow replies from actors you follow."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}