···11{
22- "id": "app.bsky.feed.postgate",
33- "defs": {
44- "main": {
55- "key": "tid",
66- "type": "record",
77- "record": {
88- "type": "object",
99- "required": [
1010- "post",
1111- "createdAt"
1212- ],
1313- "properties": {
1414- "post": {
1515- "type": "string",
1616- "format": "at-uri",
1717- "description": "Reference (AT-URI) to the post record."
1818- },
1919- "createdAt": {
2020- "type": "string",
2121- "format": "datetime"
2222- },
2323- "embeddingRules": {
2424- "type": "array",
2525- "items": {
2626- "refs": [
2727- "#disableRule"
2828- ],
2929- "type": "union"
3030- },
3131- "maxLength": 5,
3232- "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."
3333- },
3434- "detachedEmbeddingUris": {
3535- "type": "array",
3636- "items": {
3737- "type": "string",
3838- "format": "at-uri"
3939- },
4040- "maxLength": 50,
4141- "description": "List of AT-URIs embedding this post that the author has detached from."
4242- }
4343- }
4444- },
4545- "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."
4646- },
4747- "disableRule": {
4848- "type": "object",
4949- "properties": {},
5050- "description": "Disables embedding of this post."
5151- }
5252- },
5353- "$type": "com.atproto.lexicon.schema",
5454- "lexicon": 1
5555-}22+ "id": "app.bsky.feed.postgate",
33+ "defs": {
44+ "main": {
55+ "key": "tid",
66+ "type": "record",
77+ "record": {
88+ "type": "object",
99+ "required": ["post", "createdAt"],
1010+ "properties": {
1111+ "post": {
1212+ "type": "string",
1313+ "format": "at-uri",
1414+ "description": "Reference (AT-URI) to the post record."
1515+ },
1616+ "createdAt": {
1717+ "type": "string",
1818+ "format": "datetime"
1919+ },
2020+ "embeddingRules": {
2121+ "type": "array",
2222+ "items": {
2323+ "refs": ["#disableRule"],
2424+ "type": "union"
2525+ },
2626+ "maxLength": 5,
2727+ "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."
2828+ },
2929+ "detachedEmbeddingUris": {
3030+ "type": "array",
3131+ "items": {
3232+ "type": "string",
3333+ "format": "at-uri"
3434+ },
3535+ "maxLength": 50,
3636+ "description": "List of AT-URIs embedding this post that the author has detached from."
3737+ }
3838+ }
3939+ },
4040+ "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."
4141+ },
4242+ "disableRule": {
4343+ "type": "object",
4444+ "properties": {},
4545+ "description": "Disables embedding of this post."
4646+ }
4747+ },
4848+ "$type": "com.atproto.lexicon.schema",
4949+ "lexicon": 1
5050+}
+70-80
lexicons/app/bsky/feed/threadgate.json
···11{
22- "id": "app.bsky.feed.threadgate",
33- "defs": {
44- "main": {
55- "key": "tid",
66- "type": "record",
77- "record": {
88- "type": "object",
99- "required": [
1010- "post",
1111- "createdAt"
1212- ],
1313- "properties": {
1414- "post": {
1515- "type": "string",
1616- "format": "at-uri",
1717- "description": "Reference (AT-URI) to the post record."
1818- },
1919- "allow": {
2020- "type": "array",
2121- "items": {
2222- "refs": [
2323- "#mentionRule",
2424- "#followerRule",
2525- "#followingRule",
2626- "#listRule"
2727- ],
2828- "type": "union"
2929- },
3030- "maxLength": 5,
3131- "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."
3232- },
3333- "createdAt": {
3434- "type": "string",
3535- "format": "datetime"
3636- },
3737- "hiddenReplies": {
3838- "type": "array",
3939- "items": {
4040- "type": "string",
4141- "format": "at-uri"
4242- },
4343- "maxLength": 300,
4444- "description": "List of hidden reply URIs."
4545- }
4646- }
4747- },
4848- "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."
4949- },
5050- "listRule": {
5151- "type": "object",
5252- "required": [
5353- "list"
5454- ],
5555- "properties": {
5656- "list": {
5757- "type": "string",
5858- "format": "at-uri"
5959- }
6060- },
6161- "description": "Allow replies from actors on a list."
6262- },
6363- "mentionRule": {
6464- "type": "object",
6565- "properties": {},
6666- "description": "Allow replies from actors mentioned in your post."
6767- },
6868- "followerRule": {
6969- "type": "object",
7070- "properties": {},
7171- "description": "Allow replies from actors who follow you."
7272- },
7373- "followingRule": {
7474- "type": "object",
7575- "properties": {},
7676- "description": "Allow replies from actors you follow."
7777- }
7878- },
7979- "$type": "com.atproto.lexicon.schema",
8080- "lexicon": 1
8181-}22+ "id": "app.bsky.feed.threadgate",
33+ "defs": {
44+ "main": {
55+ "key": "tid",
66+ "type": "record",
77+ "record": {
88+ "type": "object",
99+ "required": ["post", "createdAt"],
1010+ "properties": {
1111+ "post": {
1212+ "type": "string",
1313+ "format": "at-uri",
1414+ "description": "Reference (AT-URI) to the post record."
1515+ },
1616+ "allow": {
1717+ "type": "array",
1818+ "items": {
1919+ "refs": ["#mentionRule", "#followerRule", "#followingRule", "#listRule"],
2020+ "type": "union"
2121+ },
2222+ "maxLength": 5,
2323+ "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."
2424+ },
2525+ "createdAt": {
2626+ "type": "string",
2727+ "format": "datetime"
2828+ },
2929+ "hiddenReplies": {
3030+ "type": "array",
3131+ "items": {
3232+ "type": "string",
3333+ "format": "at-uri"
3434+ },
3535+ "maxLength": 300,
3636+ "description": "List of hidden reply URIs."
3737+ }
3838+ }
3939+ },
4040+ "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."
4141+ },
4242+ "listRule": {
4343+ "type": "object",
4444+ "required": ["list"],
4545+ "properties": {
4646+ "list": {
4747+ "type": "string",
4848+ "format": "at-uri"
4949+ }
5050+ },
5151+ "description": "Allow replies from actors on a list."
5252+ },
5353+ "mentionRule": {
5454+ "type": "object",
5555+ "properties": {},
5656+ "description": "Allow replies from actors mentioned in your post."
5757+ },
5858+ "followerRule": {
5959+ "type": "object",
6060+ "properties": {},
6161+ "description": "Allow replies from actors who follow you."
6262+ },
6363+ "followingRule": {
6464+ "type": "object",
6565+ "properties": {},
6666+ "description": "Allow replies from actors you follow."
6767+ }
6868+ },
6969+ "$type": "com.atproto.lexicon.schema",
7070+ "lexicon": 1
7171+}
···11{
22- "id": "app.bsky.richtext.facet",
33- "defs": {
44- "tag": {
55- "type": "object",
66- "required": [
77- "tag"
88- ],
99- "properties": {
1010- "tag": {
1111- "type": "string",
1212- "maxLength": 640,
1313- "maxGraphemes": 64
1414- }
1515- },
1616- "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')."
1717- },
1818- "link": {
1919- "type": "object",
2020- "required": [
2121- "uri"
2222- ],
2323- "properties": {
2424- "uri": {
2525- "type": "string",
2626- "format": "uri"
2727- }
2828- },
2929- "description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL."
3030- },
3131- "main": {
3232- "type": "object",
3333- "required": [
3434- "index",
3535- "features"
3636- ],
3737- "properties": {
3838- "index": {
3939- "ref": "#byteSlice",
4040- "type": "ref"
4141- },
4242- "features": {
4343- "type": "array",
4444- "items": {
4545- "refs": [
4646- "#mention",
4747- "#link",
4848- "#tag"
4949- ],
5050- "type": "union"
5151- }
5252- }
5353- },
5454- "description": "Annotation of a sub-string within rich text."
5555- },
5656- "mention": {
5757- "type": "object",
5858- "required": [
5959- "did"
6060- ],
6161- "properties": {
6262- "did": {
6363- "type": "string",
6464- "format": "did"
6565- }
6666- },
6767- "description": "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID."
6868- },
6969- "byteSlice": {
7070- "type": "object",
7171- "required": [
7272- "byteStart",
7373- "byteEnd"
7474- ],
7575- "properties": {
7676- "byteEnd": {
7777- "type": "integer",
7878- "minimum": 0
7979- },
8080- "byteStart": {
8181- "type": "integer",
8282- "minimum": 0
8383- }
8484- },
8585- "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."
8686- }
8787- },
8888- "$type": "com.atproto.lexicon.schema",
8989- "lexicon": 1
9090-}22+ "id": "app.bsky.richtext.facet",
33+ "defs": {
44+ "tag": {
55+ "type": "object",
66+ "required": ["tag"],
77+ "properties": {
88+ "tag": {
99+ "type": "string",
1010+ "maxLength": 640,
1111+ "maxGraphemes": 64
1212+ }
1313+ },
1414+ "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')."
1515+ },
1616+ "link": {
1717+ "type": "object",
1818+ "required": ["uri"],
1919+ "properties": {
2020+ "uri": {
2121+ "type": "string",
2222+ "format": "uri"
2323+ }
2424+ },
2525+ "description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL."
2626+ },
2727+ "main": {
2828+ "type": "object",
2929+ "required": ["index", "features"],
3030+ "properties": {
3131+ "index": {
3232+ "ref": "#byteSlice",
3333+ "type": "ref"
3434+ },
3535+ "features": {
3636+ "type": "array",
3737+ "items": {
3838+ "refs": ["#mention", "#link", "#tag"],
3939+ "type": "union"
4040+ }
4141+ }
4242+ },
4343+ "description": "Annotation of a sub-string within rich text."
4444+ },
4545+ "mention": {
4646+ "type": "object",
4747+ "required": ["did"],
4848+ "properties": {
4949+ "did": {
5050+ "type": "string",
5151+ "format": "did"
5252+ }
5353+ },
5454+ "description": "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID."
5555+ },
5656+ "byteSlice": {
5757+ "type": "object",
5858+ "required": ["byteStart", "byteEnd"],
5959+ "properties": {
6060+ "byteEnd": {
6161+ "type": "integer",
6262+ "minimum": 0
6363+ },
6464+ "byteStart": {
6565+ "type": "integer",
6666+ "minimum": 0
6767+ }
6868+ },
6969+ "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."
7070+ }
7171+ },
7272+ "$type": "com.atproto.lexicon.schema",
7373+ "lexicon": 1
7474+}
+40-44
lexicons/com/atproto/identity/resolveHandle.json
···11{
22- "id": "com.atproto.identity.resolveHandle",
33- "defs": {
44- "main": {
55- "type": "query",
66- "errors": [
77- {
88- "name": "HandleNotFound",
99- "description": "The resolution process confirmed that the handle does not resolve to any DID."
1010- }
1111- ],
1212- "output": {
1313- "schema": {
1414- "type": "object",
1515- "required": [
1616- "did"
1717- ],
1818- "properties": {
1919- "did": {
2020- "type": "string",
2121- "format": "did"
2222- }
2323- }
2424- },
2525- "encoding": "application/json"
2626- },
2727- "parameters": {
2828- "type": "params",
2929- "required": [
3030- "handle"
3131- ],
3232- "properties": {
3333- "handle": {
3434- "type": "string",
3535- "format": "handle",
3636- "description": "The handle to resolve."
3737- }
3838- }
3939- },
4040- "description": "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document."
4141- }
4242- },
4343- "$type": "com.atproto.lexicon.schema",
4444- "lexicon": 1
4545-}22+ "id": "com.atproto.identity.resolveHandle",
33+ "defs": {
44+ "main": {
55+ "type": "query",
66+ "errors": [
77+ {
88+ "name": "HandleNotFound",
99+ "description": "The resolution process confirmed that the handle does not resolve to any DID."
1010+ }
1111+ ],
1212+ "output": {
1313+ "schema": {
1414+ "type": "object",
1515+ "required": ["did"],
1616+ "properties": {
1717+ "did": {
1818+ "type": "string",
1919+ "format": "did"
2020+ }
2121+ }
2222+ },
2323+ "encoding": "application/json"
2424+ },
2525+ "parameters": {
2626+ "type": "params",
2727+ "required": ["handle"],
2828+ "properties": {
2929+ "handle": {
3030+ "type": "string",
3131+ "format": "handle",
3232+ "description": "The handle to resolve."
3333+ }
3434+ }
3535+ },
3636+ "description": "Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document."
3737+ }
3838+ },
3939+ "$type": "com.atproto.lexicon.schema",
4040+ "lexicon": 1
4141+}
+162-192
lexicons/com/atproto/label/defs.json
···11{
22- "id": "com.atproto.label.defs",
33- "defs": {
44- "label": {
55- "type": "object",
66- "required": [
77- "src",
88- "uri",
99- "val",
1010- "cts"
1111- ],
1212- "properties": {
1313- "cid": {
1414- "type": "string",
1515- "format": "cid",
1616- "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to."
1717- },
1818- "cts": {
1919- "type": "string",
2020- "format": "datetime",
2121- "description": "Timestamp when this label was created."
2222- },
2323- "exp": {
2424- "type": "string",
2525- "format": "datetime",
2626- "description": "Timestamp at which this label expires (no longer applies)."
2727- },
2828- "neg": {
2929- "type": "boolean",
3030- "description": "If true, this is a negation label, overwriting a previous label."
3131- },
3232- "sig": {
3333- "type": "bytes",
3434- "description": "Signature of dag-cbor encoded label."
3535- },
3636- "src": {
3737- "type": "string",
3838- "format": "did",
3939- "description": "DID of the actor who created this label."
4040- },
4141- "uri": {
4242- "type": "string",
4343- "format": "uri",
4444- "description": "AT URI of the record, repository (account), or other resource that this label applies to."
4545- },
4646- "val": {
4747- "type": "string",
4848- "maxLength": 128,
4949- "description": "The short string name of the value or type of this label."
5050- },
5151- "ver": {
5252- "type": "integer",
5353- "description": "The AT Protocol version of the label object."
5454- }
5555- },
5656- "description": "Metadata tag on an atproto resource (eg, repo or record)."
5757- },
5858- "selfLabel": {
5959- "type": "object",
6060- "required": [
6161- "val"
6262- ],
6363- "properties": {
6464- "val": {
6565- "type": "string",
6666- "maxLength": 128,
6767- "description": "The short string name of the value or type of this label."
6868- }
6969- },
7070- "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel."
7171- },
7272- "labelValue": {
7373- "type": "string",
7474- "knownValues": [
7575- "!hide",
7676- "!no-promote",
7777- "!warn",
7878- "!no-unauthenticated",
7979- "dmca-violation",
8080- "doxxing",
8181- "porn",
8282- "sexual",
8383- "nudity",
8484- "nsfl",
8585- "gore"
8686- ]
8787- },
8888- "selfLabels": {
8989- "type": "object",
9090- "required": [
9191- "values"
9292- ],
9393- "properties": {
9494- "values": {
9595- "type": "array",
9696- "items": {
9797- "ref": "#selfLabel",
9898- "type": "ref"
9999- },
100100- "maxLength": 10
101101- }
102102- },
103103- "description": "Metadata tags on an atproto record, published by the author within the record."
104104- },
105105- "labelValueDefinition": {
106106- "type": "object",
107107- "required": [
108108- "identifier",
109109- "severity",
110110- "blurs",
111111- "locales"
112112- ],
113113- "properties": {
114114- "blurs": {
115115- "type": "string",
116116- "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.",
117117- "knownValues": [
118118- "content",
119119- "media",
120120- "none"
121121- ]
122122- },
123123- "locales": {
124124- "type": "array",
125125- "items": {
126126- "ref": "#labelValueDefinitionStrings",
127127- "type": "ref"
128128- }
129129- },
130130- "severity": {
131131- "type": "string",
132132- "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.",
133133- "knownValues": [
134134- "inform",
135135- "alert",
136136- "none"
137137- ]
138138- },
139139- "adultOnly": {
140140- "type": "boolean",
141141- "description": "Does the user need to have adult content enabled in order to configure this label?"
142142- },
143143- "identifier": {
144144- "type": "string",
145145- "maxLength": 100,
146146- "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).",
147147- "maxGraphemes": 100
148148- },
149149- "defaultSetting": {
150150- "type": "string",
151151- "default": "warn",
152152- "description": "The default setting for this label.",
153153- "knownValues": [
154154- "ignore",
155155- "warn",
156156- "hide"
157157- ]
158158- }
159159- },
160160- "description": "Declares a label value and its expected interpretations and behaviors."
161161- },
162162- "labelValueDefinitionStrings": {
163163- "type": "object",
164164- "required": [
165165- "lang",
166166- "name",
167167- "description"
168168- ],
169169- "properties": {
170170- "lang": {
171171- "type": "string",
172172- "format": "language",
173173- "description": "The code of the language these strings are written in."
174174- },
175175- "name": {
176176- "type": "string",
177177- "maxLength": 640,
178178- "description": "A short human-readable name for the label.",
179179- "maxGraphemes": 64
180180- },
181181- "description": {
182182- "type": "string",
183183- "maxLength": 100000,
184184- "description": "A longer description of what the label means and why it might be applied.",
185185- "maxGraphemes": 10000
186186- }
187187- },
188188- "description": "Strings which describe the label in the UI, localized into a specific language."
189189- }
190190- },
191191- "$type": "com.atproto.lexicon.schema",
192192- "lexicon": 1
193193-}22+ "id": "com.atproto.label.defs",
33+ "defs": {
44+ "label": {
55+ "type": "object",
66+ "required": ["src", "uri", "val", "cts"],
77+ "properties": {
88+ "cid": {
99+ "type": "string",
1010+ "format": "cid",
1111+ "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to."
1212+ },
1313+ "cts": {
1414+ "type": "string",
1515+ "format": "datetime",
1616+ "description": "Timestamp when this label was created."
1717+ },
1818+ "exp": {
1919+ "type": "string",
2020+ "format": "datetime",
2121+ "description": "Timestamp at which this label expires (no longer applies)."
2222+ },
2323+ "neg": {
2424+ "type": "boolean",
2525+ "description": "If true, this is a negation label, overwriting a previous label."
2626+ },
2727+ "sig": {
2828+ "type": "bytes",
2929+ "description": "Signature of dag-cbor encoded label."
3030+ },
3131+ "src": {
3232+ "type": "string",
3333+ "format": "did",
3434+ "description": "DID of the actor who created this label."
3535+ },
3636+ "uri": {
3737+ "type": "string",
3838+ "format": "uri",
3939+ "description": "AT URI of the record, repository (account), or other resource that this label applies to."
4040+ },
4141+ "val": {
4242+ "type": "string",
4343+ "maxLength": 128,
4444+ "description": "The short string name of the value or type of this label."
4545+ },
4646+ "ver": {
4747+ "type": "integer",
4848+ "description": "The AT Protocol version of the label object."
4949+ }
5050+ },
5151+ "description": "Metadata tag on an atproto resource (eg, repo or record)."
5252+ },
5353+ "selfLabel": {
5454+ "type": "object",
5555+ "required": ["val"],
5656+ "properties": {
5757+ "val": {
5858+ "type": "string",
5959+ "maxLength": 128,
6060+ "description": "The short string name of the value or type of this label."
6161+ }
6262+ },
6363+ "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel."
6464+ },
6565+ "labelValue": {
6666+ "type": "string",
6767+ "knownValues": [
6868+ "!hide",
6969+ "!no-promote",
7070+ "!warn",
7171+ "!no-unauthenticated",
7272+ "dmca-violation",
7373+ "doxxing",
7474+ "porn",
7575+ "sexual",
7676+ "nudity",
7777+ "nsfl",
7878+ "gore"
7979+ ]
8080+ },
8181+ "selfLabels": {
8282+ "type": "object",
8383+ "required": ["values"],
8484+ "properties": {
8585+ "values": {
8686+ "type": "array",
8787+ "items": {
8888+ "ref": "#selfLabel",
8989+ "type": "ref"
9090+ },
9191+ "maxLength": 10
9292+ }
9393+ },
9494+ "description": "Metadata tags on an atproto record, published by the author within the record."
9595+ },
9696+ "labelValueDefinition": {
9797+ "type": "object",
9898+ "required": ["identifier", "severity", "blurs", "locales"],
9999+ "properties": {
100100+ "blurs": {
101101+ "type": "string",
102102+ "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.",
103103+ "knownValues": ["content", "media", "none"]
104104+ },
105105+ "locales": {
106106+ "type": "array",
107107+ "items": {
108108+ "ref": "#labelValueDefinitionStrings",
109109+ "type": "ref"
110110+ }
111111+ },
112112+ "severity": {
113113+ "type": "string",
114114+ "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.",
115115+ "knownValues": ["inform", "alert", "none"]
116116+ },
117117+ "adultOnly": {
118118+ "type": "boolean",
119119+ "description": "Does the user need to have adult content enabled in order to configure this label?"
120120+ },
121121+ "identifier": {
122122+ "type": "string",
123123+ "maxLength": 100,
124124+ "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).",
125125+ "maxGraphemes": 100
126126+ },
127127+ "defaultSetting": {
128128+ "type": "string",
129129+ "default": "warn",
130130+ "description": "The default setting for this label.",
131131+ "knownValues": ["ignore", "warn", "hide"]
132132+ }
133133+ },
134134+ "description": "Declares a label value and its expected interpretations and behaviors."
135135+ },
136136+ "labelValueDefinitionStrings": {
137137+ "type": "object",
138138+ "required": ["lang", "name", "description"],
139139+ "properties": {
140140+ "lang": {
141141+ "type": "string",
142142+ "format": "language",
143143+ "description": "The code of the language these strings are written in."
144144+ },
145145+ "name": {
146146+ "type": "string",
147147+ "maxLength": 640,
148148+ "description": "A short human-readable name for the label.",
149149+ "maxGraphemes": 64
150150+ },
151151+ "description": {
152152+ "type": "string",
153153+ "maxLength": 100000,
154154+ "description": "A longer description of what the label means and why it might be applied.",
155155+ "maxGraphemes": 10000
156156+ }
157157+ },
158158+ "description": "Strings which describe the label in the UI, localized into a specific language."
159159+ }
160160+ },
161161+ "$type": "com.atproto.lexicon.schema",
162162+ "lexicon": 1
163163+}
···5757 return fail(400, { error: 'Title must be 300 characters or less', url, title, text });
5858 }
5959 if (text && text.length > 10000) {
6060- return fail(400, { error: 'Description must be 10,000 characters or less', url, title, text });
6060+ return fail(400, {
6161+ error: 'Description must be 10,000 characters or less',
6262+ url,
6363+ title,
6464+ text
6565+ });
6166 }
62676368 const now = new Date().toISOString();