From
bafyreidd3wu3twpdnzuogxlsmbhr4sesvgjjov22imy2pi4cdrrugyhcu4
indexed 2026-11-06 01:44 UTC
View this version
To
bafyreidx5mbwrsgkwytgnqjb62syxouuvi262hcdyfxzwcgse6gjnyhf6q
indexed 2026-11-10 17:47 UTC
View this version
Compatibility
breaking 12 breaking changes, 44 non-breaking changes.
Breaking changes (12)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel", src: "org.cairnsproto.draft.listProjects#consumerLabel", tgt: "org.cairnsproto.draft.listProjects#consumerLabel.labeler", kind: "prop", name: Some("labeler") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel", src: "org.cairnsproto.draft.listProjects#consumerLabel", tgt: "org.cairnsproto.draft.listProjects#consumerLabel.val", kind: "prop", name: Some("val") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#labelerState", src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.did", kind: "prop", name: Some("did") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#labelerState", src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.loaded", kind: "prop", name: Some("loaded") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.ambiguous", kind: "prop", name: Some("ambiguous") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.belowExport", kind: "prop", name: Some("belowExport") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.contested", kind: "prop", name: Some("contested") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.held", kind: "prop", name: Some("held") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.pastExport", kind: "prop", name: Some("pastExport") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.open", kind: "prop", name: Some("open") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.diverges", kind: "prop", name: Some("diverges") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.course", kind: "prop", name: Some("course") }
Non-breaking changes (44)
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel.labeler" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel.val" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.ambiguous" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.belowExport" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.contested" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.course" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.diverges" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.held" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.open" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.pastExport" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.did" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.error" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.loaded" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.refreshedAt" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.anyModel" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.consumerLabels" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.consumerLabels:items" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.license" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.modelFamilies" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.modelFamilies:items" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.progress" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.progress:items" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.publishRepo" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects:output.labelers" }
- AddedVertex AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects:output.labelers:items" }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.error", kind: "prop", name: Some("error") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.refreshedAt", kind: "prop", name: Some("refreshedAt") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.anyModel", kind: "prop", name: Some("anyModel") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.consumerLabels", kind: "prop", name: Some("consumerLabels") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.license", kind: "prop", name: Some("license") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.modelFamilies", kind: "prop", name: Some("modelFamilies") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.progress", kind: "prop", name: Some("progress") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.publishRepo", kind: "prop", name: Some("publishRepo") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.consumerLabels", tgt: "org.cairnsproto.draft.listProjects#projectView.consumerLabels:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.consumerLabels:items", tgt: "org.cairnsproto.draft.listProjects#consumerLabel", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.modelFamilies", tgt: "org.cairnsproto.draft.listProjects#projectView.modelFamilies:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.progress", tgt: "org.cairnsproto.draft.listProjects#projectView.progress:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.progress:items", tgt: "org.cairnsproto.draft.listProjects#courseProgress", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects:output", tgt: "org.cairnsproto.draft.listProjects:output.labelers", kind: "prop", name: Some("labelers") }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects:output.labelers", tgt: "org.cairnsproto.draft.listProjects:output.labelers:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.cairnsproto.draft.listProjects:output.labelers:items", tgt: "org.cairnsproto.draft.listProjects#labelerState", kind: "ref", name: None }
Migration guidance
Added
AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel.labeler" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel.val" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.ambiguous" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.belowExport" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.contested" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.course" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.diverges" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.held" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.open" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress.pastExport" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.did" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.error" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.loaded" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#labelerState.refreshedAt" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.anyModel" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.consumerLabels" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.consumerLabels:items" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.license" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.modelFamilies" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.modelFamilies:items" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.progress" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.progress:items" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects#projectView.publishRepo" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects:output.labelers" }AddedVertex { vertex_id: "org.cairnsproto.draft.listProjects:output.labelers:items" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#labelerState", src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.did", kind: "prop", name: Some("did") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#labelerState", src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.loaded", kind: "prop", name: Some("loaded") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel", src: "org.cairnsproto.draft.listProjects#consumerLabel", tgt: "org.cairnsproto.draft.listProjects#consumerLabel.labeler", kind: "prop", name: Some("labeler") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#consumerLabel", src: "org.cairnsproto.draft.listProjects#consumerLabel", tgt: "org.cairnsproto.draft.listProjects#consumerLabel.val", kind: "prop", name: Some("val") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.ambiguous", kind: "prop", name: Some("ambiguous") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.belowExport", kind: "prop", name: Some("belowExport") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.contested", kind: "prop", name: Some("contested") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.held", kind: "prop", name: Some("held") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.pastExport", kind: "prop", name: Some("pastExport") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.open", kind: "prop", name: Some("open") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.diverges", kind: "prop", name: Some("diverges") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.cairnsproto.draft.listProjects#courseProgress", src: "org.cairnsproto.draft.listProjects#courseProgress", tgt: "org.cairnsproto.draft.listProjects#courseProgress.course", kind: "prop", name: Some("course") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.error", kind: "prop", name: Some("error") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#labelerState", tgt: "org.cairnsproto.draft.listProjects#labelerState.refreshedAt", kind: "prop", name: Some("refreshedAt") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.anyModel", kind: "prop", name: Some("anyModel") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.consumerLabels", kind: "prop", name: Some("consumerLabels") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.license", kind: "prop", name: Some("license") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.modelFamilies", kind: "prop", name: Some("modelFamilies") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.progress", kind: "prop", name: Some("progress") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView", tgt: "org.cairnsproto.draft.listProjects#projectView.publishRepo", kind: "prop", name: Some("publishRepo") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.consumerLabels", tgt: "org.cairnsproto.draft.listProjects#projectView.consumerLabels:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.consumerLabels:items", tgt: "org.cairnsproto.draft.listProjects#consumerLabel", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.modelFamilies", tgt: "org.cairnsproto.draft.listProjects#projectView.modelFamilies:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.progress", tgt: "org.cairnsproto.draft.listProjects#projectView.progress:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects#projectView.progress:items", tgt: "org.cairnsproto.draft.listProjects#courseProgress", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects:output", tgt: "org.cairnsproto.draft.listProjects:output.labelers", kind: "prop", name: Some("labelers") }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects:output.labelers", tgt: "org.cairnsproto.draft.listProjects:output.labelers:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.cairnsproto.draft.listProjects:output.labelers:items", tgt: "org.cairnsproto.draft.listProjects#labelerState", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {4
"consumerLabel": {5
"properties": {6
"labeler": {7
"format": "did",8
"type": "string"9
},10
"val": {11
"maxLength": 128,12
"type": "string"13
}14
},15
"required": [16
"labeler",17
"val"18
],19
"type": "object"20
},421
"costTotals": {522
"properties": {623
"cachedTokens": {724
"minimum": 0,825
"type": "integer"926
},1027
"inputTokens": {1128
"minimum": 0,1229
"type": "integer"1330
},1431
"outputTokens": {1532
"minimum": 0,1633
"type": "integer"1734
},1835
"seconds": {1936
"minimum": 0,2037
"type": "integer"2138
}2239
},2340
"required": [2441
"inputTokens",2542
"outputTokens",2643
"cachedTokens",2744
"seconds"2845
],2946
"type": "object"3047
},3148
"courseCost": {3249
"description": "What stones in one course from one declared model report in method.cost. Self-reported and advisory.",3350
"properties": {3451
"course": {3552
"maxLength": 128,3653
"type": "string"3754
},3855
"median": {3956
"description": "Each field's lower median over those stones.",4057
"ref": "#costTotals",4158
"type": "ref"4259
},4360
"model": {4461
"maxLength": 256,4562
"type": "string"4663
},4764
"open": {4865
"description": "Sites in the course that still take work, including sites no stone has reached.",4966
"minimum": 0,5067
"type": "integer"5168
},5269
"stones": {5370
"description": "Stones in the reading that report a cost.",5471
"minimum": 1,5572
"type": "integer"5673
},5774
"toFinish": {5875
"description": "open times each median.",5976
"ref": "#costTotals",6077
"type": "ref"6178
}6279
},6380
"required": [6481
"course",6582
"model",6683
"stones",6784
"median",6885
"open",6986
"toFinish"7087
],7188
"type": "object"7289
},90
"courseProgress": {91
"description": "Each site of one course in exactly one of open, contested, ambiguous, belowExport, pastExport and held. diverges counts the sites whose leading value differs from the official repo's, whatever their bucket.",92
"properties": {93
"ambiguous": {94
"minimum": 0,95
"type": "integer"96
},97
"belowExport": {98
"minimum": 0,99
"type": "integer"100
},101
"contested": {102
"minimum": 0,103
"type": "integer"104
},105
"course": {106
"maxLength": 128,107
"type": "string"108
},109
"diverges": {110
"minimum": 0,111
"type": "integer"112
},113
"held": {114
"minimum": 0,115
"type": "integer"116
},117
"open": {118
"minimum": 0,119
"type": "integer"120
},121
"pastExport": {122
"minimum": 0,123
"type": "integer"124
}125
},126
"required": [127
"course",128
"open",129
"contested",130
"ambiguous",131
"belowExport",132
"pastExport",133
"held",134
"diverges"135
],136
"type": "object"137
},73138
"dormancy": {74139
"properties": {75140
"oldest": {76141
"ref": "#pendingWork",77142
"type": "ref"78143
},79144
"pending": {80145
"description": "How many items of maintainer-only work are pending.",81146
"minimum": 1,82147
"type": "integer"83148
},84149
"sinceRound": {85150
"description": "Quicknet round the project went dormant: the oldest pending item's due round plus the dormancy period.",86151
"minimum": 0,87152
"type": "integer"88153
}89154
},90155
"required": [91156
"sinceRound",92157
"oldest",93158
"pending"94159
],95160
"type": "object"96161
},97162
"labelTag": {98163
"properties": {99164
"labeler": {100165
"format": "did",101166
"type": "string"102167
},103168
"name": {104169
"description": "The tag, without its tag: prefix.",105170
"maxLength": 128,106171
"type": "string"107172
}108173
},109174
"required": [110175
"labeler",111176
"name"112177
],113178
"type": "object"114179
},180
"labelerState": {181
"properties": {182
"did": {183
"format": "did",184
"type": "string"185
},186
"error": {187
"description": "Why the last fetch failed, if it did.",188
"maxLength": 1000,189
"type": "string"190
},191
"loaded": {192
"description": "Whether a fetch from this labeler has ever succeeded.",193
"type": "boolean"194
},195
"refreshedAt": {196
"description": "When the last successful fetch finished.",197
"format": "datetime",198
"type": "string"199
}200
},201
"required": [202
"did",203
"loaded"204
],205
"type": "object"206
},115207
"main": {116
"description": "Projects the indexer has seen, each at the version it routes under, ranked by need, highest first. Projects a labeler the policy honors marks unsafe are left out.",208
"description": "Projects the indexer has seen, each at the version it routes under, ranked by need, highest first. Projects a labeler the policy honors, or a labeler the caller names, marks unsafe are left out.",117209
"output": {118210
"encoding": "application/json",119211
"schema": {120212
"properties": {121213
"cursor": {122214
"maxLength": 512,123215
"type": "string"124216
},217
"labelers": {218
"description": "With labeler: whether the indexer holds labels from each named labeler, so a client can fail closed when it doesn't.",219
"items": {220
"ref": "#labelerState",221
"type": "ref"222
},223
"type": "array"224
},125225
"projects": {126226
"items": {127227
"ref": "#projectView",128228
"type": "ref"129229
},130230
"type": "array"131231
}132232
},133233
"required": [134234
"projects"135235
],136236
"type": "object"137237
}138238
},139239
"parameters": {140240
"properties": {141241
"cursor": {142242
"maxLength": 512,143243
"type": "string"144244
},145245
"follower": {146246
"description": "Keep projects where a sponsor this DID follows, or one of that sponsor's agents, has a stone, and name those sponsors in each view's followed.",147247
"format": "did",148248
"type": "string"149249
},250
"label": {251
"description": "Keep projects that a labeler named in labeler marks with this value, such as featured.",252
"maxLength": 128,253
"type": "string"254
},255
"labeler": {256
"description": "Labelers the caller honors on top of each policy's, as a consumer overlay. Their unsafe hides a project and their other labels are listed under consumerLabels. The indexer serves only labelers its operator tracks and rejects others.",257
"items": {258
"format": "did",259
"type": "string"260
},261
"maxLength": 4,262
"type": "array"263
},150264
"limit": {151265
"default": 50,152266
"maximum": 100,153267
"minimum": 1,154268
"type": "integer"155269
},156270
"model": {157271
"description": "The declared model family. Projects whose policy gives it no weight are left out.",158272
"maxLength": 256,159273
"type": "string"160274
},161275
"modelVersion": {162276
"maxLength": 128,163277
"type": "string"164278
},165279
"status": {166280
"description": "Keep projects with this status, such as active.",167281
"maxLength": 32,168282
"type": "string"169283
},170284
"tag": {171285
"description": "Keep projects carrying every one of these tags, from the maintainer or from a labeler the policy honors.",172286
"items": {173287
"maxLength": 128,174288
"type": "string"175289
},176290
"maxLength": 10,177291
"type": "array"178292
},179293
"thinking": {180294
"maxLength": 64,181295
"type": "string"182296
}183297
},184298
"type": "params"185299
},186300
"type": "query"187301
},188302
"pendingWork": {189303
"properties": {190304
"kind": {191305
"knownValues": [192306
"issue",193307
"snapshot",194308
"gold",195309
"unsafe"196310
],197311
"maxLength": 32,198312
"type": "string"199313
},200314
"sinceRound": {201315
"description": "Quicknet round the item became due.",202316
"minimum": 0,203317
"type": "integer"204318
},205319
"subject": {206320
"description": "The issue, the latest snapshot or the project, the unrevealed gold commitment, or the unsafe-labeled project or policy version.",207321
"ref": "com.atproto.repo.strongRef",208322
"type": "ref"209323
}210324
},211325
"required": [212326
"kind",213327
"subject",214328
"sinceRound"215329
],216330
"type": "object"217331
},218332
"projectView": {219333
"properties": {220334
"activeFork": {221335
"description": "With dormant: the soft fork to show alongside, at the version it routes under: the one forked from this project, or this project was forked from, with the same courses and schemas, not dormant, and with the most maintainer snapshots in the dormancy period.",222336
"ref": "com.atproto.repo.strongRef",223337
"type": "ref"224338
},339
"anyModel": {340
"description": "Whether the policy gives weight to models it doesn't list.",341
"type": "boolean"342
},343
"consumerLabels": {344
"description": "With labeler: labels in force on the project or its policy from the labelers the caller named.",345
"items": {346
"ref": "#consumerLabel",347
"type": "ref"348
},349
"type": "array"350
},225351
"costs": {226352
"description": "Median self-reported cost per site for each course and declared model, with an estimate to finish. Absent when the project can't be read.",227353
"items": {228354
"ref": "#courseCost",229355
"type": "ref"230356
},231357
"type": "array"232358
},233359
"description": {234360
"maxGraphemes": 3000,235361
"maxLength": 30000,236362
"type": "string"237363
},238364
"dormant": {239365
"description": "Present when maintainer-only work has waited unanswered for the policy's dormancy period.",240366
"ref": "#dormancy",241367
"type": "ref"242368
},243369
"followed": {244370
"description": "With follower: the followed sponsors who work the project, through their own stones or their agents'.",245371
"items": {246372
"format": "did",247373
"type": "string"248374
},249375
"type": "array"250376
},251377
"labelTags": {252378
"description": "Tags from labelers the policy honors, kept apart from the maintainer's.",253379
"items": {254380
"ref": "#labelTag",255381
"type": "ref"256382
},257383
"type": "array"258384
},385
"license": {386
"description": "The license of the official repo's published data.",387
"maxLength": 512,388
"type": "string"389
},259390
"maintainers": {260391
"items": {261392
"format": "did",262393
"type": "string"263394
},264395
"type": "array"265396
},397
"modelFamilies": {398
"description": "Model families the policy gives weight, sorted.",399
"items": {400
"maxLength": 256,401
"type": "string"402
},403
"type": "array"404
},266405
"name": {267406
"maxLength": 640,268407
"type": "string"269408
},270409
"need": {271410
"description": "The sum of the need of each open or contested site. Absent when the project can't be read.",272411
"minimum": 0,273412
"type": "integer"274413
},275414
"policy": {276415
"ref": "com.atproto.repo.strongRef",277416
"type": "ref"278417
},418
"progress": {419
"description": "Site counts per course, in the project's course order, from the reading need comes from. Left out when that reading fails.",420
"items": {421
"ref": "#courseProgress",422
"type": "ref"423
},424
"type": "array"425
},279426
"project": {280427
"ref": "com.atproto.repo.strongRef",281428
"type": "ref"282429
},430
"publishRepo": {431
"description": "The Git URL of the official repo exports are published to.",432
"maxLength": 2048,433
"type": "string"434
},283435
"seenRound": {284436
"description": "Quicknet round when the indexer first saw this version of the project.",285437
"minimum": 1,286438
"type": "integer"287439
},288440
"status": {289441
"maxLength": 32,290442
"type": "string"291443
},292444
"tags": {293445
"description": "The maintainer's tags.",294446
"items": {295447
"maxLength": 64,296448
"type": "string"297449
},298450
"type": "array"299451
},300452
"timekeepers": {301453
"description": "How current each timekeeper the policy names is, so a contributor can tell when snapshots will lag.",302454
"items": {303455
"ref": "#timekeeper",304456
"type": "ref"305457
},306458
"type": "array"307459
}308460
},309461
"required": [310462
"project",311463
"status",312464
"maintainers",313465
"policy",314466
"seenRound"315467
],316468
"type": "object"317469
},318470
"timekeeper": {319471
"properties": {320472
"did": {321473
"format": "did",322474
"type": "string"323475
},324476
"lagRounds": {325477
"description": "How many rounds before now that is.",326478
"minimum": 0,327479
"type": "integer"328480
},329481
"throughRound": {330482
"description": "The round the timekeeper's latest seen record runs through. Absent before its first.",331483
"minimum": 0,332484
"type": "integer"333485
}334486
},335487
"required": [336488
"did"337489
],338490
"type": "object"339491
}340492
},341493
"id": "org.cairnsproto.draft.listProjects",342494
"lexicon": 1343495
}