···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.feed.postgate",
44+ "defs": {
55+ "main": {
66+ "key": "tid",
77+ "type": "record",
88+ "record": {
99+ "type": "object",
1010+ "required": [
1111+ "post",
1212+ "createdAt"
1313+ ],
1414+ "properties": {
1515+ "post": {
1616+ "type": "string",
1717+ "format": "at-uri",
1818+ "description": "Reference (AT-URI) to the post record."
1919+ },
2020+ "createdAt": {
2121+ "type": "string",
2222+ "format": "datetime"
2323+ },
2424+ "embeddingRules": {
2525+ "type": "array",
2626+ "items": {
2727+ "refs": [
2828+ "#disableRule"
2929+ ],
3030+ "type": "union"
3131+ },
3232+ "maxLength": 5,
3333+ "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."
3434+ },
3535+ "detachedEmbeddingUris": {
3636+ "type": "array",
3737+ "items": {
3838+ "type": "string",
3939+ "format": "at-uri"
4040+ },
4141+ "maxLength": 50,
4242+ "description": "List of AT-URIs embedding this post that the author has detached from."
4343+ }
4444+ }
4545+ },
4646+ "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."
4747+ },
4848+ "disableRule": {
4949+ "type": "object",
5050+ "properties": {},
5151+ "description": "Disables embedding of this post."
5252+ }
5353+ }
5454+}
+80
lexicons/app/bsky/feed/threadgate.json
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.feed.threadgate",
44+ "defs": {
55+ "main": {
66+ "key": "tid",
77+ "type": "record",
88+ "record": {
99+ "type": "object",
1010+ "required": [
1111+ "post",
1212+ "createdAt"
1313+ ],
1414+ "properties": {
1515+ "post": {
1616+ "type": "string",
1717+ "format": "at-uri",
1818+ "description": "Reference (AT-URI) to the post record."
1919+ },
2020+ "allow": {
2121+ "type": "array",
2222+ "items": {
2323+ "refs": [
2424+ "#mentionRule",
2525+ "#followerRule",
2626+ "#followingRule",
2727+ "#listRule"
2828+ ],
2929+ "type": "union"
3030+ },
3131+ "maxLength": 5,
3232+ "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."
3333+ },
3434+ "createdAt": {
3535+ "type": "string",
3636+ "format": "datetime"
3737+ },
3838+ "hiddenReplies": {
3939+ "type": "array",
4040+ "items": {
4141+ "type": "string",
4242+ "format": "at-uri"
4343+ },
4444+ "maxLength": 50,
4545+ "description": "List of hidden reply URIs."
4646+ }
4747+ }
4848+ },
4949+ "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."
5050+ },
5151+ "listRule": {
5252+ "type": "object",
5353+ "required": [
5454+ "list"
5555+ ],
5656+ "properties": {
5757+ "list": {
5858+ "type": "string",
5959+ "format": "at-uri"
6060+ }
6161+ },
6262+ "description": "Allow replies from actors on a list."
6363+ },
6464+ "mentionRule": {
6565+ "type": "object",
6666+ "properties": {},
6767+ "description": "Allow replies from actors mentioned in your post."
6868+ },
6969+ "followerRule": {
7070+ "type": "object",
7171+ "properties": {},
7272+ "description": "Allow replies from actors who follow you."
7373+ },
7474+ "followingRule": {
7575+ "type": "object",
7676+ "properties": {},
7777+ "description": "Allow replies from actors you follow."
7878+ }
7979+ }
8080+}
···11+{
22+ "lexicon": 1,
33+ "id": "app.bsky.richtext.facet",
44+ "defs": {
55+ "tag": {
66+ "type": "object",
77+ "required": [
88+ "tag"
99+ ],
1010+ "properties": {
1111+ "tag": {
1212+ "type": "string",
1313+ "maxLength": 640,
1414+ "maxGraphemes": 64
1515+ }
1616+ },
1717+ "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')."
1818+ },
1919+ "link": {
2020+ "type": "object",
2121+ "required": [
2222+ "uri"
2323+ ],
2424+ "properties": {
2525+ "uri": {
2626+ "type": "string",
2727+ "format": "uri"
2828+ }
2929+ },
3030+ "description": "Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL."
3131+ },
3232+ "main": {
3333+ "type": "object",
3434+ "required": [
3535+ "index",
3636+ "features"
3737+ ],
3838+ "properties": {
3939+ "index": {
4040+ "ref": "#byteSlice",
4141+ "type": "ref"
4242+ },
4343+ "features": {
4444+ "type": "array",
4545+ "items": {
4646+ "refs": [
4747+ "#mention",
4848+ "#link",
4949+ "#tag"
5050+ ],
5151+ "type": "union"
5252+ }
5353+ }
5454+ },
5555+ "description": "Annotation of a sub-string within rich text."
5656+ },
5757+ "mention": {
5858+ "type": "object",
5959+ "required": [
6060+ "did"
6161+ ],
6262+ "properties": {
6363+ "did": {
6464+ "type": "string",
6565+ "format": "did"
6666+ }
6767+ },
6868+ "description": "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID."
6969+ },
7070+ "byteSlice": {
7171+ "type": "object",
7272+ "required": [
7373+ "byteStart",
7474+ "byteEnd"
7575+ ],
7676+ "properties": {
7777+ "byteEnd": {
7878+ "type": "integer",
7979+ "minimum": 0
8080+ },
8181+ "byteStart": {
8282+ "type": "integer",
8383+ "minimum": 0
8484+ }
8585+ },
8686+ "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."
8787+ }
8888+ }
8989+}
+124-88
lexicons/com/atproto/label/defs.json
···44 "defs": {
55 "label": {
66 "type": "object",
77- "description": "Metadata tag on an atproto resource (eg, repo or record).",
88- "required": ["src", "uri", "val", "cts"],
77+ "required": [
88+ "src",
99+ "uri",
1010+ "val",
1111+ "cts"
1212+ ],
913 "properties": {
1010- "ver": {
1111- "type": "integer",
1212- "description": "The AT Protocol version of the label object."
1313- },
1414- "src": {
1515- "type": "string",
1616- "format": "did",
1717- "description": "DID of the actor who created this label."
1818- },
1919- "uri": {
2020- "type": "string",
2121- "format": "uri",
2222- "description": "AT URI of the record, repository (account), or other resource that this label applies to."
2323- },
2414 "cid": {
2515 "type": "string",
2616 "format": "cid",
2717 "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to."
2818 },
2929- "val": {
3030- "type": "string",
3131- "maxLength": 128,
3232- "description": "The short string name of the value or type of this label."
3333- },
3434- "neg": {
3535- "type": "boolean",
3636- "description": "If true, this is a negation label, overwriting a previous label."
3737- },
3819 "cts": {
3920 "type": "string",
4021 "format": "datetime",
···4526 "format": "datetime",
4627 "description": "Timestamp at which this label expires (no longer applies)."
4728 },
2929+ "neg": {
3030+ "type": "boolean",
3131+ "description": "If true, this is a negation label, overwriting a previous label."
3232+ },
4833 "sig": {
4934 "type": "bytes",
5035 "description": "Signature of dag-cbor encoded label."
5151- }
5252- }
5353- },
5454- "selfLabels": {
5555- "type": "object",
5656- "description": "Metadata tags on an atproto record, published by the author within the record.",
5757- "required": ["values"],
5858- "properties": {
5959- "values": {
6060- "type": "array",
6161- "items": { "type": "ref", "ref": "#selfLabel" },
6262- "maxLength": 10
3636+ },
3737+ "src": {
3838+ "type": "string",
3939+ "format": "did",
4040+ "description": "DID of the actor who created this label."
4141+ },
4242+ "uri": {
4343+ "type": "string",
4444+ "format": "uri",
4545+ "description": "AT URI of the record, repository (account), or other resource that this label applies to."
4646+ },
4747+ "val": {
4848+ "type": "string",
4949+ "maxLength": 128,
5050+ "description": "The short string name of the value or type of this label."
5151+ },
5252+ "ver": {
5353+ "type": "integer",
5454+ "description": "The AT Protocol version of the label object."
6355 }
6464- }
5656+ },
5757+ "description": "Metadata tag on an atproto resource (eg, repo or record)."
6558 },
6659 "selfLabel": {
6760 "type": "object",
6868- "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.",
6969- "required": ["val"],
6161+ "required": [
6262+ "val"
6363+ ],
7064 "properties": {
7165 "val": {
7266 "type": "string",
7367 "maxLength": 128,
7468 "description": "The short string name of the value or type of this label."
7569 }
7676- }
7070+ },
7171+ "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel."
7272+ },
7373+ "labelValue": {
7474+ "type": "string",
7575+ "knownValues": [
7676+ "!hide",
7777+ "!no-promote",
7878+ "!warn",
7979+ "!no-unauthenticated",
8080+ "dmca-violation",
8181+ "doxxing",
8282+ "porn",
8383+ "sexual",
8484+ "nudity",
8585+ "nsfl",
8686+ "gore"
8787+ ]
8888+ },
8989+ "selfLabels": {
9090+ "type": "object",
9191+ "required": [
9292+ "values"
9393+ ],
9494+ "properties": {
9595+ "values": {
9696+ "type": "array",
9797+ "items": {
9898+ "ref": "#selfLabel",
9999+ "type": "ref"
100100+ },
101101+ "maxLength": 10
102102+ }
103103+ },
104104+ "description": "Metadata tags on an atproto record, published by the author within the record."
77105 },
78106 "labelValueDefinition": {
79107 "type": "object",
8080- "description": "Declares a label value and its expected interpretations and behaviors.",
8181- "required": ["identifier", "severity", "blurs", "locales"],
108108+ "required": [
109109+ "identifier",
110110+ "severity",
111111+ "blurs",
112112+ "locales"
113113+ ],
82114 "properties": {
8383- "identifier": {
115115+ "blurs": {
84116 "type": "string",
8585- "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).",
8686- "maxLength": 100,
8787- "maxGraphemes": 100
117117+ "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.",
118118+ "knownValues": [
119119+ "content",
120120+ "media",
121121+ "none"
122122+ ]
123123+ },
124124+ "locales": {
125125+ "type": "array",
126126+ "items": {
127127+ "ref": "#labelValueDefinitionStrings",
128128+ "type": "ref"
129129+ }
88130 },
89131 "severity": {
90132 "type": "string",
91133 "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.",
9292- "knownValues": ["inform", "alert", "none"]
134134+ "knownValues": [
135135+ "inform",
136136+ "alert",
137137+ "none"
138138+ ]
93139 },
9494- "blurs": {
140140+ "adultOnly": {
141141+ "type": "boolean",
142142+ "description": "Does the user need to have adult content enabled in order to configure this label?"
143143+ },
144144+ "identifier": {
95145 "type": "string",
9696- "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.",
9797- "knownValues": ["content", "media", "none"]
146146+ "maxLength": 100,
147147+ "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).",
148148+ "maxGraphemes": 100
98149 },
99150 "defaultSetting": {
100151 "type": "string",
152152+ "default": "warn",
101153 "description": "The default setting for this label.",
102102- "knownValues": ["ignore", "warn", "hide"],
103103- "default": "warn"
104104- },
105105- "adultOnly": {
106106- "type": "boolean",
107107- "description": "Does the user need to have adult content enabled in order to configure this label?"
108108- },
109109- "locales": {
110110- "type": "array",
111111- "items": { "type": "ref", "ref": "#labelValueDefinitionStrings" }
154154+ "knownValues": [
155155+ "ignore",
156156+ "warn",
157157+ "hide"
158158+ ]
112159 }
113113- }
160160+ },
161161+ "description": "Declares a label value and its expected interpretations and behaviors."
114162 },
115163 "labelValueDefinitionStrings": {
116164 "type": "object",
117117- "description": "Strings which describe the label in the UI, localized into a specific language.",
118118- "required": ["lang", "name", "description"],
165165+ "required": [
166166+ "lang",
167167+ "name",
168168+ "description"
169169+ ],
119170 "properties": {
120171 "lang": {
121172 "type": "string",
122122- "description": "The code of the language these strings are written in.",
123123- "format": "language"
173173+ "format": "language",
174174+ "description": "The code of the language these strings are written in."
124175 },
125176 "name": {
126177 "type": "string",
178178+ "maxLength": 640,
127179 "description": "A short human-readable name for the label.",
128128- "maxGraphemes": 64,
129129- "maxLength": 640
180180+ "maxGraphemes": 64
130181 },
131182 "description": {
132183 "type": "string",
184184+ "maxLength": 100000,
133185 "description": "A longer description of what the label means and why it might be applied.",
134134- "maxGraphemes": 10000,
135135- "maxLength": 100000
186186+ "maxGraphemes": 10000
136187 }
137137- }
138138- },
139139- "labelValue": {
140140- "type": "string",
141141- "knownValues": [
142142- "!hide",
143143- "!no-promote",
144144- "!warn",
145145- "!no-unauthenticated",
146146- "dmca-violation",
147147- "doxxing",
148148- "porn",
149149- "sexual",
150150- "nudity",
151151- "nsfl",
152152- "gore"
153153- ]
188188+ },
189189+ "description": "Strings which describe the label in the UI, localized into a specific language."
154190 }
155191 }
156156-}
192192+}
+119-55
lexicons/com/atproto/repo/applyWrites.json
···44 "defs": {
55 "main": {
66 "type": "procedure",
77- "description": "Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.",
87 "input": {
99- "encoding": "application/json",
108 "schema": {
119 "type": "object",
1212- "required": ["repo", "writes"],
1010+ "required": [
1111+ "repo",
1212+ "writes"
1313+ ],
1314 "properties": {
1415 "repo": {
1516 "type": "string",
1617 "format": "at-identifier",
1718 "description": "The handle or DID of the repo (aka, current account)."
1818- },
1919- "validate": {
2020- "type": "boolean",
2121- "description": "Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons."
2219 },
2320 "writes": {
2421 "type": "array",
2522 "items": {
2323+ "refs": [
2424+ "#create",
2525+ "#update",
2626+ "#delete"
2727+ ],
2628 "type": "union",
2727- "refs": ["#create", "#update", "#delete"],
2829 "closed": true
2930 }
3031 },
3232+ "validate": {
3333+ "type": "boolean",
3434+ "description": "Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons."
3535+ },
3136 "swapCommit": {
3237 "type": "string",
3333- "description": "If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.",
3434- "format": "cid"
3838+ "format": "cid",
3939+ "description": "If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations."
3540 }
3641 }
4242+ },
4343+ "encoding": "application/json"
4444+ },
4545+ "errors": [
4646+ {
4747+ "name": "InvalidSwap",
4848+ "description": "Indicates that the 'swapCommit' parameter did not match current commit."
3749 }
3838- },
5050+ ],
3951 "output": {
4040- "encoding": "application/json",
4152 "schema": {
4253 "type": "object",
4354 "required": [],
4455 "properties": {
4556 "commit": {
4646- "type": "ref",
4747- "ref": "com.atproto.repo.defs#commitMeta"
5757+ "ref": "com.atproto.repo.defs#commitMeta",
5858+ "type": "ref"
4859 },
4960 "results": {
5061 "type": "array",
5162 "items": {
6363+ "refs": [
6464+ "#createResult",
6565+ "#updateResult",
6666+ "#deleteResult"
6767+ ],
5268 "type": "union",
5353- "refs": ["#createResult", "#updateResult", "#deleteResult"],
5469 "closed": true
5570 }
5671 }
5772 }
5858- }
7373+ },
7474+ "encoding": "application/json"
5975 },
6060- "errors": [
6161- {
6262- "name": "InvalidSwap",
6363- "description": "Indicates that the 'swapCommit' parameter did not match current commit."
6464- }
6565- ]
7676+ "description": "Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS."
6677 },
6778 "create": {
6879 "type": "object",
6969- "description": "Operation which creates a new record.",
7070- "required": ["collection", "value"],
8080+ "required": [
8181+ "collection",
8282+ "value"
8383+ ],
7184 "properties": {
7272- "collection": { "type": "string", "format": "nsid" },
7385 "rkey": {
7486 "type": "string",
8787+ "format": "record-key",
7588 "maxLength": 512,
7676- "format": "record-key",
7789 "description": "NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility."
7890 },
7979- "value": { "type": "unknown" }
8080- }
9191+ "value": {
9292+ "type": "unknown"
9393+ },
9494+ "collection": {
9595+ "type": "string",
9696+ "format": "nsid"
9797+ }
9898+ },
9999+ "description": "Operation which creates a new record."
81100 },
8282- "update": {
101101+ "delete": {
83102 "type": "object",
8484- "description": "Operation which updates an existing record.",
8585- "required": ["collection", "rkey", "value"],
103103+ "required": [
104104+ "collection",
105105+ "rkey"
106106+ ],
86107 "properties": {
8787- "collection": { "type": "string", "format": "nsid" },
8888- "rkey": { "type": "string", "format": "record-key" },
8989- "value": { "type": "unknown" }
9090- }
108108+ "rkey": {
109109+ "type": "string",
110110+ "format": "record-key"
111111+ },
112112+ "collection": {
113113+ "type": "string",
114114+ "format": "nsid"
115115+ }
116116+ },
117117+ "description": "Operation which deletes an existing record."
91118 },
9292- "delete": {
119119+ "update": {
93120 "type": "object",
9494- "description": "Operation which deletes an existing record.",
9595- "required": ["collection", "rkey"],
121121+ "required": [
122122+ "collection",
123123+ "rkey",
124124+ "value"
125125+ ],
96126 "properties": {
9797- "collection": { "type": "string", "format": "nsid" },
9898- "rkey": { "type": "string", "format": "record-key" }
9999- }
127127+ "rkey": {
128128+ "type": "string",
129129+ "format": "record-key"
130130+ },
131131+ "value": {
132132+ "type": "unknown"
133133+ },
134134+ "collection": {
135135+ "type": "string",
136136+ "format": "nsid"
137137+ }
138138+ },
139139+ "description": "Operation which updates an existing record."
100140 },
101141 "createResult": {
102142 "type": "object",
103103- "required": ["uri", "cid"],
143143+ "required": [
144144+ "uri",
145145+ "cid"
146146+ ],
104147 "properties": {
105105- "uri": { "type": "string", "format": "at-uri" },
106106- "cid": { "type": "string", "format": "cid" },
148148+ "cid": {
149149+ "type": "string",
150150+ "format": "cid"
151151+ },
152152+ "uri": {
153153+ "type": "string",
154154+ "format": "at-uri"
155155+ },
107156 "validationStatus": {
108157 "type": "string",
109109- "knownValues": ["valid", "unknown"]
158158+ "knownValues": [
159159+ "valid",
160160+ "unknown"
161161+ ]
110162 }
111163 }
112164 },
165165+ "deleteResult": {
166166+ "type": "object",
167167+ "required": [],
168168+ "properties": {}
169169+ },
113170 "updateResult": {
114171 "type": "object",
115115- "required": ["uri", "cid"],
172172+ "required": [
173173+ "uri",
174174+ "cid"
175175+ ],
116176 "properties": {
117117- "uri": { "type": "string", "format": "at-uri" },
118118- "cid": { "type": "string", "format": "cid" },
177177+ "cid": {
178178+ "type": "string",
179179+ "format": "cid"
180180+ },
181181+ "uri": {
182182+ "type": "string",
183183+ "format": "at-uri"
184184+ },
119185 "validationStatus": {
120186 "type": "string",
121121- "knownValues": ["valid", "unknown"]
187187+ "knownValues": [
188188+ "valid",
189189+ "unknown"
190190+ ]
122191 }
123192 }
124124- },
125125- "deleteResult": {
126126- "type": "object",
127127- "required": [],
128128- "properties": {}
129193 }
130194 }
131131-}
195195+}
+45-29
lexicons/com/atproto/repo/createRecord.json
···44 "defs": {
55 "main": {
66 "type": "procedure",
77- "description": "Create a single new repository record. Requires auth, implemented by PDS.",
87 "input": {
99- "encoding": "application/json",
108 "schema": {
119 "type": "object",
1212- "required": ["repo", "collection", "record"],
1010+ "required": [
1111+ "repo",
1212+ "collection",
1313+ "record"
1414+ ],
1315 "properties": {
1416 "repo": {
1517 "type": "string",
1618 "format": "at-identifier",
1719 "description": "The handle or DID of the repo (aka, current account)."
1820 },
1919- "collection": {
2020- "type": "string",
2121- "format": "nsid",
2222- "description": "The NSID of the record collection."
2323- },
2421 "rkey": {
2522 "type": "string",
2623 "format": "record-key",
2727- "description": "The Record Key.",
2828- "maxLength": 512
2424+ "maxLength": 512,
2525+ "description": "The Record Key."
2626+ },
2727+ "record": {
2828+ "type": "unknown",
2929+ "description": "The record itself. Must contain a $type field."
2930 },
3031 "validate": {
3132 "type": "boolean",
3233 "description": "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons."
3334 },
3434- "record": {
3535- "type": "unknown",
3636- "description": "The record itself. Must contain a $type field."
3535+ "collection": {
3636+ "type": "string",
3737+ "format": "nsid",
3838+ "description": "The NSID of the record collection."
3739 },
3840 "swapCommit": {
3941 "type": "string",
···4143 "description": "Compare and swap with the previous commit by CID."
4244 }
4345 }
4646+ },
4747+ "encoding": "application/json"
4848+ },
4949+ "errors": [
5050+ {
5151+ "name": "InvalidSwap",
5252+ "description": "Indicates that 'swapCommit' didn't match current repo commit."
4453 }
4545- },
5454+ ],
4655 "output": {
4747- "encoding": "application/json",
4856 "schema": {
4957 "type": "object",
5050- "required": ["uri", "cid"],
5858+ "required": [
5959+ "uri",
6060+ "cid"
6161+ ],
5162 "properties": {
5252- "uri": { "type": "string", "format": "at-uri" },
5353- "cid": { "type": "string", "format": "cid" },
6363+ "cid": {
6464+ "type": "string",
6565+ "format": "cid"
6666+ },
6767+ "uri": {
6868+ "type": "string",
6969+ "format": "at-uri"
7070+ },
5471 "commit": {
5555- "type": "ref",
5656- "ref": "com.atproto.repo.defs#commitMeta"
7272+ "ref": "com.atproto.repo.defs#commitMeta",
7373+ "type": "ref"
5774 },
5875 "validationStatus": {
5976 "type": "string",
6060- "knownValues": ["valid", "unknown"]
7777+ "knownValues": [
7878+ "valid",
7979+ "unknown"
8080+ ]
6181 }
6282 }
6363- }
8383+ },
8484+ "encoding": "application/json"
6485 },
6565- "errors": [
6666- {
6767- "name": "InvalidSwap",
6868- "description": "Indicates that 'swapCommit' didn't match current repo commit."
6969- }
7070- ]
8686+ "description": "Create a single new repository record. Requires auth, implemented by PDS."
7187 }
7288 }
7373-}
8989+}
···44 "defs": {
55 "main": {
66 "type": "procedure",
77- "description": "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.",
87 "input": {
99- "encoding": "application/json",
108 "schema": {
119 "type": "object",
1212- "required": ["repo", "collection", "rkey"],
1010+ "required": [
1111+ "repo",
1212+ "collection",
1313+ "rkey"
1414+ ],
1315 "properties": {
1416 "repo": {
1517 "type": "string",
1618 "format": "at-identifier",
1719 "description": "The handle or DID of the repo (aka, current account)."
1820 },
1919- "collection": {
2020- "type": "string",
2121- "format": "nsid",
2222- "description": "The NSID of the record collection."
2323- },
2421 "rkey": {
2522 "type": "string",
2623 "format": "record-key",
2724 "description": "The Record Key."
2825 },
2929- "swapRecord": {
2626+ "collection": {
3027 "type": "string",
3131- "format": "cid",
3232- "description": "Compare and swap with the previous record by CID."
2828+ "format": "nsid",
2929+ "description": "The NSID of the record collection."
3330 },
3431 "swapCommit": {
3532 "type": "string",
3633 "format": "cid",
3734 "description": "Compare and swap with the previous commit by CID."
3535+ },
3636+ "swapRecord": {
3737+ "type": "string",
3838+ "format": "cid",
3939+ "description": "Compare and swap with the previous record by CID."
3840 }
3941 }
4242+ },
4343+ "encoding": "application/json"
4444+ },
4545+ "errors": [
4646+ {
4747+ "name": "InvalidSwap"
4048 }
4141- },
4949+ ],
4250 "output": {
4343- "encoding": "application/json",
4451 "schema": {
4552 "type": "object",
4653 "properties": {
4754 "commit": {
4848- "type": "ref",
4949- "ref": "com.atproto.repo.defs#commitMeta"
5555+ "ref": "com.atproto.repo.defs#commitMeta",
5656+ "type": "ref"
5057 }
5158 }
5252- }
5959+ },
6060+ "encoding": "application/json"
5361 },
5454- "errors": [{ "name": "InvalidSwap" }]
6262+ "description": "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS."
5563 }
5664 }
5757-}
6565+}
+30-19
lexicons/com/atproto/repo/describeRepo.json
···44 "defs": {
55 "main": {
66 "type": "query",
77- "description": "Get information about an account and repository, including the list of collections. Does not require auth.",
88- "parameters": {
99- "type": "params",
1010- "required": ["repo"],
1111- "properties": {
1212- "repo": {
1313- "type": "string",
1414- "format": "at-identifier",
1515- "description": "The handle or DID of the repo."
1616- }
1717- }
1818- },
197 "output": {
2020- "encoding": "application/json",
218 "schema": {
229 "type": "object",
2310 "required": [
···2815 "handleIsCorrect"
2916 ],
3017 "properties": {
3131- "handle": { "type": "string", "format": "handle" },
3232- "did": { "type": "string", "format": "did" },
1818+ "did": {
1919+ "type": "string",
2020+ "format": "did"
2121+ },
3322 "didDoc": {
3423 "type": "unknown",
3524 "description": "The complete DID document for this account."
3625 },
2626+ "handle": {
2727+ "type": "string",
2828+ "format": "handle"
2929+ },
3730 "collections": {
3831 "type": "array",
3939- "description": "List of all the collections (NSIDs) for which this repo contains at least one record.",
4040- "items": { "type": "string", "format": "nsid" }
3232+ "items": {
3333+ "type": "string",
3434+ "format": "nsid"
3535+ },
3636+ "description": "List of all the collections (NSIDs) for which this repo contains at least one record."
4137 },
4238 "handleIsCorrect": {
4339 "type": "boolean",
4440 "description": "Indicates if handle is currently valid (resolves bi-directionally)"
4541 }
4642 }
4343+ },
4444+ "encoding": "application/json"
4545+ },
4646+ "parameters": {
4747+ "type": "params",
4848+ "required": [
4949+ "repo"
5050+ ],
5151+ "properties": {
5252+ "repo": {
5353+ "type": "string",
5454+ "format": "at-identifier",
5555+ "description": "The handle or DID of the repo."
5656+ }
4757 }
4848- }
5858+ },
5959+ "description": "Get information about an account and repository, including the list of collections. Does not require auth."
4960 }
5061 }
5151-}
6262+}
+45-26
lexicons/com/atproto/repo/getRecord.json
···44 "defs": {
55 "main": {
66 "type": "query",
77- "description": "Get a single record from a repository. Does not require auth.",
77+ "errors": [
88+ {
99+ "name": "RecordNotFound"
1010+ }
1111+ ],
1212+ "output": {
1313+ "schema": {
1414+ "type": "object",
1515+ "required": [
1616+ "uri",
1717+ "value"
1818+ ],
1919+ "properties": {
2020+ "cid": {
2121+ "type": "string",
2222+ "format": "cid"
2323+ },
2424+ "uri": {
2525+ "type": "string",
2626+ "format": "at-uri"
2727+ },
2828+ "value": {
2929+ "type": "unknown"
3030+ }
3131+ }
3232+ },
3333+ "encoding": "application/json"
3434+ },
835 "parameters": {
936 "type": "params",
1010- "required": ["repo", "collection", "rkey"],
3737+ "required": [
3838+ "repo",
3939+ "collection",
4040+ "rkey"
4141+ ],
1142 "properties": {
4343+ "cid": {
4444+ "type": "string",
4545+ "format": "cid",
4646+ "description": "The CID of the version of the record. If not specified, then return the most recent version."
4747+ },
1248 "repo": {
1349 "type": "string",
1450 "format": "at-identifier",
1551 "description": "The handle or DID of the repo."
1616- },
1717- "collection": {
1818- "type": "string",
1919- "format": "nsid",
2020- "description": "The NSID of the record collection."
2152 },
2253 "rkey": {
2354 "type": "string",
2424- "description": "The Record Key.",
2525- "format": "record-key"
5555+ "format": "record-key",
5656+ "description": "The Record Key."
2657 },
2727- "cid": {
5858+ "collection": {
2859 "type": "string",
2929- "format": "cid",
3030- "description": "The CID of the version of the record. If not specified, then return the most recent version."
6060+ "format": "nsid",
6161+ "description": "The NSID of the record collection."
3162 }
3263 }
3364 },
3434- "output": {
3535- "encoding": "application/json",
3636- "schema": {
3737- "type": "object",
3838- "required": ["uri", "value"],
3939- "properties": {
4040- "uri": { "type": "string", "format": "at-uri" },
4141- "cid": { "type": "string", "format": "cid" },
4242- "value": { "type": "unknown" }
4343- }
4444- }
4545- },
4646- "errors": [{ "name": "RecordNotFound" }]
6565+ "description": "Get a single record from a repository. Does not require auth."
4766 }
4867 }
4949-}
6868+}
+3-3
lexicons/com/atproto/repo/importRepo.json
···44 "defs": {
55 "main": {
66 "type": "procedure",
77- "description": "Import a repo in the form of a CAR file. Requires Content-Length HTTP header to be set.",
87 "input": {
98 "encoding": "application/vnd.ipld.car"
1010- }
99+ },
1010+ "description": "Import a repo in the form of a CAR file. Requires Content-Length HTTP header to be set."
1111 }
1212 }
1313-}
1313+}
···44 "defs": {
55 "main": {
66 "type": "procedure",
77- "description": "Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS.",
87 "input": {
98 "encoding": "*/*"
109 },
1110 "output": {
1212- "encoding": "application/json",
1311 "schema": {
1412 "type": "object",
1515- "required": ["blob"],
1313+ "required": [
1414+ "blob"
1515+ ],
1616 "properties": {
1717- "blob": { "type": "blob" }
1717+ "blob": {
1818+ "type": "blob"
1919+ }
1820 }
1919- }
2020- }
2121+ },
2222+ "encoding": "application/json"
2323+ },
2424+ "description": "Upload a new blob, to be referenced from a repository record. The blob will be deleted if it is not referenced within a time window (eg, minutes). Blob restrictions (mimetype, size, etc) are enforced when the reference is created. Requires auth, implemented by PDS."
2125 }
2226 }
2323-}
2727+}