From
bafyreigv3rbrutbo5cuksazgxdol6wfrto2qnmsygroa6zpnlfkqyoijsu
indexed 2026-11-02 15:29 UTC
View this version
To
bafyreibwnyotcexaws6jiycmrdmepek4r4oik4uyowffcc4dcfno2j6zvu
indexed 2026-11-03 20:55 UTC
View this version
Compatibility
backward compatible No changes detected.
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"builtinComposer": {55
"description": "A composer every client implements. concat: every array field is the parts' arrays joined in part order, and every other field must be equal in all parts.",66
"properties": {77
"name": {88
"knownValues": [99
"concat"1010
],1111
"maxLength": 64,1212
"type": "string"1313
}1414
},1515
"required": [1616
"name"1717
],1818
"type": "object"1919
},2020
"checkComposer": {2121
"description": "A WASM check that rebuilds a split site's value from its parts' values, in part order.",2222
"properties": {2323
"check": {2424
"ref": "com.atproto.repo.strongRef",2525
"type": "ref"2626
}2727
},2828
"required": [2929
"check"3030
],3131
"type": "object"3232
},3333
"course": {3434
"properties": {3535
"bounds": {3636
"description": "closed allows null stones; open allows only attempts.",3737
"knownValues": [3838
"closed",3939
"open"4040
],4141
"maxLength": 32,4242
"type": "string"4343
},4444
"compose": {4545
"description": "How a split site's value is rebuilt from its parts' values. Absent means the course is atomic, and its sites can't be split.",4646
"refs": [4747
"#checkComposer",4848
"#builtinComposer"4949
],5050
"type": "union"5151
},5252
"id": {5353
"maxLength": 128,5454
"type": "string"5555
},5656
"markType": {5757
"description": "Mark def reference, such as org.cairnsproto.draft.mark#pdfRegion.",5858
"maxLength": 512,5959
"type": "string"6060
},6161
"minMark": {6262
"description": "The finest mark the course accepts. Its type matches markType.",6363
"refs": [6464
"org.cairnsproto.draft.mark#pdfRegion",6565
"org.cairnsproto.draft.mark#imageRegion",6666
"org.cairnsproto.draft.mark#sheetRange",6767
"org.cairnsproto.draft.mark#tableRange",6868
"org.cairnsproto.draft.mark#textQuote",6969
"org.cairnsproto.draft.mark#cssSelector",7070
"org.cairnsproto.draft.mark#textPosition",7171
"org.cairnsproto.draft.mark#gitPath",7272
"org.cairnsproto.draft.mark#jsonPointer",7373
"org.cairnsproto.draft.mark#archiveMember",7474
"org.cairnsproto.draft.mark#mediaTime",7575
"org.cairnsproto.draft.mark#spaceRange"7676
],7777
"type": "union"7878
},7979
"parent": {8080
"description": "Id of the course below. Absent for course 0.",8181
"maxLength": 128,8282
"type": "string"8383
},8484
"procedure": {8585
"description": "The procedure for this course's sites.",8686
"ref": "com.atproto.repo.strongRef",8787
"type": "ref"8888
},8989
"schema": {9090
"description": "Hash of the payload schema's definition. Part of every site key in the course.",9191
"ref": "org.cairnsproto.draft.defs#hash",9292
"type": "ref"9393
},9494
"schemaRecord": {9595
"description": "An org.cairnsproto.draft.schema record whose definition has the schema hash, in any repo.",9696
"ref": "com.atproto.repo.strongRef",9797
"type": "ref"9898
},9999
"split": {100100
"description": "How a parent value breaks down into this course's sites: a JSON pointer to an array in the parent value, with one site per element, marked by a jsonPointer to that element (`/contests/0`, `/contests/1`, ...). Only for a course with a parent and markType jsonPointer. A site opens when the parent value clears the open-children bar. Without a split, a course opens one unmarked site on each parent conversion that clears the bar, and none on other values.",101101
"maxLength": 512,102102
"type": "string"103103
}104104
},105105
"required": [106106
"id",107107
"markType",108108
"schema",109109
"schemaRecord",110110
"bounds"111111
],112112
"type": "object"113113
},114114
"enumeratedScope": {115115
"description": "The course-0 sites are a fixed list.",116116
"properties": {117117
"sites": {118118
"description": "Optional explicit list of course-0 site keys, one hex key per line.",119119
"ref": "org.cairnsproto.draft.defs#external",120120
"type": "ref"121121
},122122
"sources": {123123
"description": "Source hashes the project covers.",124124
"items": {125125
"ref": "org.cairnsproto.draft.defs#hash",126126
"type": "ref"127127
},128128
"maxLength": 10000,129129
"type": "array"130130
}131131
},132132
"required": [133133
"sources"134134
],135135
"type": "object"136136
},137137
"main": {138138
"description": "Maintainers, a scope, a stack of courses and a policy.",139139
"key": "tid",140140
"record": {141141
"properties": {142142
"courses": {143143
"items": {144144
"ref": "#course",145145
"type": "ref"146146
},147147
"maxLength": 64,148148
"minLength": 1,149149
"type": "array"150150
},151151
"createdAt": {152152
"format": "datetime",153153
"type": "string"154154
},155155
"description": {156156
"maxGraphemes": 3000,157157
"maxLength": 30000,158158
"type": "string"159159
},160160
"forkedFrom": {161161
"ref": "com.atproto.repo.strongRef",162162
"type": "ref"163163
},164164
"maintainers": {165165
"items": {166166
"format": "did",167167
"type": "string"168168
},169169
"maxLength": 32,170170
"minLength": 1,171171
"type": "array"172172
},173173
"mounts": {174174
"items": {175175
"ref": "#mount",176176
"type": "ref"177177
},178178
"maxLength": 64,179179
"type": "array"180180
},181181
"name": {182182
"maxGraphemes": 64,183183
"maxLength": 640,184184
"type": "string"185185
},186186
"outputSchema": {187187
"description": "Hash of the export's schema definition.",188188
"ref": "org.cairnsproto.draft.defs#hash",189189
"type": "ref"190190
},191191
"policy": {192192
"ref": "com.atproto.repo.strongRef",193193
"type": "ref"194194
},195195
"publish": {196196
"ref": "#publish",197197
"type": "ref"198198
},199199
"scope": {200200
"refs": [201201
"#enumeratedScope",202202
"#openScope"203203
],204204
"type": "union"205205
},206206
"status": {207207
"knownValues": [208208
"active",209209
"complete",210210
"archived"211211
],212212
"maxLength": 32,213213
"type": "string"214214
},215215
"succeededBy": {216216
"description": "Set together with status archived when adopting another fork.",217217
"ref": "com.atproto.repo.strongRef",218218
"type": "ref"219219
},220220
"tags": {221221
"description": "Discovery tags, lowercase kebab-case.",222222
"items": {223223
"maxLength": 64,224224
"type": "string"225225
},226226
"maxLength": 10,227227
"type": "array"228228
},229229
"transforms": {230
"description": "Transform records the maintainer vouches for. The indexer runs them itself, and their output needs no reads.",230
"description": "Transform records the maintainer vouches for. Clients run them, and their output needs no reads.",231231
"items": {232232
"ref": "com.atproto.repo.strongRef",233233
"type": "ref"234234
},235235
"maxLength": 64,236236
"type": "array"237237
}238238
},239239
"required": [240240
"maintainers",241241
"status",242242
"scope",243243
"courses",244244
"policy",245245
"createdAt"246246
],247247
"type": "object"248248
},249249
"type": "record"250250
},251251
"mount": {252252
"description": "Builds on another project's snapshot.",253253
"properties": {254254
"course": {255255
"maxLength": 128,256256
"type": "string"257257
},258258
"project": {259259
"ref": "com.atproto.repo.strongRef",260260
"type": "ref"261261
},262262
"snapshot": {263263
"ref": "com.atproto.repo.strongRef",264264
"type": "ref"265265
}266266
},267267
"required": [268268
"project",269269
"snapshot",270270
"course"271271
],272272
"type": "object"273273
},274274
"openScope": {275275
"description": "Anyone may open new course-0 sites, such as hypothesis sites.",276276
"properties": {},277277
"type": "object"278278
},279279
"publish": {280280
"description": "The official repo the project's output feeds, and how values become its files.",281281
"properties": {282282
"branch": {283283
"maxLength": 256,284284
"type": "string"285285
},286286
"format": {287287
"description": "Output format, such as csv.",288288
"maxLength": 64,289289
"type": "string"290290
},291291
"import": {292292
"description": "Check that maps the repo's published files back to site keys and values.",293293
"ref": "com.atproto.repo.strongRef",294294
"type": "ref"295295
},296296
"license": {297297
"description": "SPDX expression or URL for the output.",298298
"maxLength": 512,299299
"type": "string"300300
},301301
"path": {302302
"description": "Directory in the repo the files go in.",303303
"maxLength": 4096,304304
"type": "string"305305
},306306
"render": {307307
"description": "Check that renders a snapshot's exported values into files.",308308
"ref": "com.atproto.repo.strongRef",309309
"type": "ref"310310
},311311
"repo": {312312
"description": "Git URL.",313313
"maxLength": 2048,314314
"type": "string"315315
}316316
},317317
"required": [318318
"repo",319319
"branch",320320
"path",321321
"format",322322
"render",323323
"license"324324
],325325
"type": "object"326326
}327327
},328328
"id": "org.cairnsproto.draft.project",329329
"lexicon": 1330330
}