space.highport.defs
Schema Diff
+169 -27
Compatibility Analysis
Breaking Changes Detected
8 breaking changes, 44 non-breaking changes.
Breaking Changes (8)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#delegationView", src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.certMode", kind: "prop", name: Some("certMode") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.uri", kind: "prop", name: Some("uri") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.cid", kind: "prop", name: Some("cid") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#webTileView", src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.did", kind: "prop", name: Some("did") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#webTileView", src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.uri", kind: "prop", name: Some("uri") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.highport.defs#webTileView", src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.cid", kind: "prop", name: Some("cid") }
- ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#edgeReachStatus", sort: "knownValues", old_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\"]", new_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\",\"other-deployment\",\"unproven\"]" }
- ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#verificationCheck.name", sort: "knownValues", old_value: "[\"ownership\",\"traffic\",\"conflict\"]", new_value: "[\"ownership\",\"traffic\",\"conflict\",\"certificate\"]" }
Non-Breaking Changes (44)
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.appliedTo" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.cid" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.name" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.setAt" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#defaultTileView.uri" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationState" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.certMode" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.challengeTarget" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.defaultTile" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.grantedAt" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.maxNames" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.probeHostname" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.state" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#delegationView.wildcardObservedAt" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#domainView.delegatedBase" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#domainView.delegation" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#siteView.webTile" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#webTileView" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#webTileView.cid" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#webTileView.description" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#webTileView.did" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#webTileView.name" }
- AddedVertex AddedVertex { vertex_id: "space.highport.defs#webTileView.uri" }
- AddedEdge AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.appliedTo", kind: "prop", name: Some("appliedTo") }
- AddedEdge AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.name", kind: "prop", name: Some("name") }
- AddedEdge AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.setAt", kind: "prop", name: Some("setAt") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.challengeTarget", kind: "prop", name: Some("challengeTarget") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.defaultTile", kind: "prop", name: Some("defaultTile") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.grantedAt", kind: "prop", name: Some("grantedAt") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.maxNames", kind: "prop", name: Some("maxNames") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.probeHostname", kind: "prop", name: Some("probeHostname") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.state", kind: "prop", name: Some("state") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.wildcardObservedAt", kind: "prop", name: Some("wildcardObservedAt") }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView.defaultTile", tgt: "space.highport.defs#defaultTileView", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "space.highport.defs#delegationView.state", tgt: "space.highport.defs#delegationState", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegatedBase", kind: "prop", name: Some("delegatedBase") }
- AddedEdge AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegation", kind: "prop", name: Some("delegation") }
- AddedEdge AddedEdge { src: "space.highport.defs#domainView.delegation", tgt: "space.highport.defs#delegationView", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "space.highport.defs#siteView", tgt: "space.highport.defs#siteView.webTile", kind: "prop", name: Some("webTile") }
- AddedEdge AddedEdge { src: "space.highport.defs#siteView.webTile", tgt: "space.highport.defs#webTileView", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.name", kind: "prop", name: Some("name") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "space.highport.defs#defaultTileView" }AddedVertex { vertex_id: "space.highport.defs#defaultTileView.appliedTo" }AddedVertex { vertex_id: "space.highport.defs#defaultTileView.cid" }AddedVertex { vertex_id: "space.highport.defs#defaultTileView.name" }AddedVertex { vertex_id: "space.highport.defs#defaultTileView.setAt" }AddedVertex { vertex_id: "space.highport.defs#defaultTileView.uri" }AddedVertex { vertex_id: "space.highport.defs#delegationState" }AddedVertex { vertex_id: "space.highport.defs#delegationView" }AddedVertex { vertex_id: "space.highport.defs#delegationView.certMode" }AddedVertex { vertex_id: "space.highport.defs#delegationView.challengeTarget" }AddedVertex { vertex_id: "space.highport.defs#delegationView.defaultTile" }AddedVertex { vertex_id: "space.highport.defs#delegationView.grantedAt" }AddedVertex { vertex_id: "space.highport.defs#delegationView.maxNames" }AddedVertex { vertex_id: "space.highport.defs#delegationView.probeHostname" }AddedVertex { vertex_id: "space.highport.defs#delegationView.state" }AddedVertex { vertex_id: "space.highport.defs#delegationView.wildcardObservedAt" }AddedVertex { vertex_id: "space.highport.defs#domainView.delegatedBase" }AddedVertex { vertex_id: "space.highport.defs#domainView.delegation" }AddedVertex { vertex_id: "space.highport.defs#siteView.webTile" }AddedVertex { vertex_id: "space.highport.defs#webTileView" }AddedVertex { vertex_id: "space.highport.defs#webTileView.cid" }AddedVertex { vertex_id: "space.highport.defs#webTileView.description" }AddedVertex { vertex_id: "space.highport.defs#webTileView.did" }AddedVertex { vertex_id: "space.highport.defs#webTileView.name" }AddedVertex { vertex_id: "space.highport.defs#webTileView.uri" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#verificationCheck.name", sort: "knownValues", old_value: "[\"ownership\",\"traffic\",\"conflict\"]", new_value: "[\"ownership\",\"traffic\",\"conflict\",\"certificate\"]" }
- ConstraintTightened ConstraintTightened { vertex_id: "space.highport.defs#edgeReachStatus", sort: "knownValues", old_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\"]", new_value: "[\"unknown\",\"routed\",\"foreign\",\"unreachable\",\"other-deployment\",\"unproven\"]" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#delegationView", src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.certMode", kind: "prop", name: Some("certMode") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.uri", kind: "prop", name: Some("uri") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#defaultTileView", src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.cid", kind: "prop", name: Some("cid") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#webTileView", src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.did", kind: "prop", name: Some("did") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#webTileView", src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.uri", kind: "prop", name: Some("uri") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.highport.defs#webTileView", src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.cid", kind: "prop", name: Some("cid") }
- Non-breaking: AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.appliedTo", kind: "prop", name: Some("appliedTo") }
- Non-breaking: AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.name", kind: "prop", name: Some("name") }
- Non-breaking: AddedEdge { src: "space.highport.defs#defaultTileView", tgt: "space.highport.defs#defaultTileView.setAt", kind: "prop", name: Some("setAt") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.challengeTarget", kind: "prop", name: Some("challengeTarget") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.defaultTile", kind: "prop", name: Some("defaultTile") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.grantedAt", kind: "prop", name: Some("grantedAt") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.maxNames", kind: "prop", name: Some("maxNames") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.probeHostname", kind: "prop", name: Some("probeHostname") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.state", kind: "prop", name: Some("state") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView", tgt: "space.highport.defs#delegationView.wildcardObservedAt", kind: "prop", name: Some("wildcardObservedAt") }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView.defaultTile", tgt: "space.highport.defs#defaultTileView", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "space.highport.defs#delegationView.state", tgt: "space.highport.defs#delegationState", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegatedBase", kind: "prop", name: Some("delegatedBase") }
- Non-breaking: AddedEdge { src: "space.highport.defs#domainView", tgt: "space.highport.defs#domainView.delegation", kind: "prop", name: Some("delegation") }
- Non-breaking: AddedEdge { src: "space.highport.defs#domainView.delegation", tgt: "space.highport.defs#delegationView", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "space.highport.defs#siteView", tgt: "space.highport.defs#siteView.webTile", kind: "prop", name: Some("webTile") }
- Non-breaking: AddedEdge { src: "space.highport.defs#siteView.webTile", tgt: "space.highport.defs#webTileView", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "space.highport.defs#webTileView", tgt: "space.highport.defs#webTileView.name", kind: "prop", name: Some("name") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"blobFailure": {
5
5
"properties": {
6
6
"cid": {
7
7
"format": "cid",
8
8
"type": "string"
9
9
},
10
10
"error": {
11
-
"description": "BlobUnavailable, CidMismatch, FetchFailed.",
11
+
"description": "One of BlobUnavailable, CidMismatch or FetchFailed.",
12
12
"type": "string"
13
13
},
14
14
"role": {
15
15
"knownValues": [
16
16
"manifest",
17
17
"tile",
18
18
"parameter",
19
19
"notFound"
20
20
],
21
21
"type": "string"
22
22
},
23
23
"sourceDid": {
24
24
"format": "did",
25
25
"type": "string"
26
26
}
27
27
},
28
28
"required": [
29
29
"cid",
30
30
"role",
31
31
"sourceDid",
32
32
"error"
33
33
],
34
34
"type": "object"
35
35
},
36
+
"defaultTileView": {
37
+
"description": "A base's default tile: what unclaimed names under it serve. The binding pins a CID, so a later version of the tile does not change what they serve.",
38
+
"properties": {
39
+
"appliedTo": {
40
+
"description": "How many names under the base are serving it now. Names whose subject has published their own site are not counted.",
41
+
"type": "integer"
42
+
},
43
+
"cid": {
44
+
"description": "The pinned version.",
45
+
"format": "cid",
46
+
"type": "string"
47
+
},
48
+
"name": {
49
+
"description": "The tile's declared name, as it was when this was read.",
50
+
"type": "string"
51
+
},
52
+
"setAt": {
53
+
"description": "When the base owner bound it.",
54
+
"format": "datetime",
55
+
"type": "string"
56
+
},
57
+
"uri": {
58
+
"description": "The tile record's AT-URI.",
59
+
"format": "at-uri",
60
+
"type": "string"
61
+
}
62
+
},
63
+
"required": [
64
+
"uri",
65
+
"cid"
66
+
],
67
+
"type": "object"
68
+
},
69
+
"delegationState": {
70
+
"description": "Where a base's delegation stands. probing: the wildcard has not been shown to route yet. enabled: it has. routing-lapsed: the wildcard stopped routing for longer than the grace period, and names under the base are suspended until it routes again.",
71
+
"knownValues": [
72
+
"probing",
73
+
"enabled",
74
+
"routing-lapsed"
75
+
],
76
+
"type": "string"
77
+
},
78
+
"delegationView": {
79
+
"description": "What a base's owner has enabled and granted. Fields other than certMode are absent when they do not apply.",
80
+
"properties": {
81
+
"certMode": {
82
+
"description": "How names under the base get certificates. Every base starts as per-name.",
83
+
"knownValues": [
84
+
"per-name",
85
+
"wildcard"
86
+
],
87
+
"type": "string"
88
+
},
89
+
"challengeTarget": {
90
+
"description": "Where the base's _acme-challenge CNAME must point, exactly as the certificate issuer writes it. Present only while a wildcard grant is live.",
91
+
"type": "string"
92
+
},
93
+
"defaultTile": {
94
+
"description": "The tile served on names under this base whose subject has not published a site. Absent when the base has set none.",
95
+
"ref": "#defaultTileView",
96
+
"type": "ref"
97
+
},
98
+
"grantedAt": {
99
+
"description": "When the live wildcard grant was made.",
100
+
"format": "datetime",
101
+
"type": "string"
102
+
},
103
+
"maxNames": {
104
+
"description": "The most names the base can reserve.",
105
+
"type": "integer"
106
+
},
107
+
"probeHostname": {
108
+
"description": "A random name under the base, used to prove the wildcard routes.",
109
+
"maxLength": 253,
110
+
"type": "string"
111
+
},
112
+
"state": {
113
+
"description": "Absent if the base has not enabled delegation.",
114
+
"ref": "#delegationState",
115
+
"type": "ref"
116
+
},
117
+
"wildcardObservedAt": {
118
+
"description": "When the base's wildcard certificate first appeared in certificate storage.",
119
+
"format": "datetime",
120
+
"type": "string"
121
+
}
122
+
},
123
+
"required": [
124
+
"certMode"
125
+
],
126
+
"type": "object"
127
+
},
36
128
"denylistEntry": {
37
129
"properties": {
38
130
"actor": {
39
131
"type": "string"
40
132
},
41
133
"createdAt": {
42
134
"format": "datetime",
43
135
"type": "string"
44
136
},
45
137
"kind": {
46
138
"knownValues": [
47
139
"domain",
48
140
"did",
49
141
"uri",
50
142
"cid",
51
143
"pattern",
52
144
"space"
53
145
],
54
146
"type": "string"
55
147
},
56
148
"reason": {
57
149
"type": "string"
58
150
},
59
151
"subject": {
60
152
"type": "string"
61
153
}
62
154
},
63
155
"required": [
64
156
"subject",
65
157
"kind",
66
158
"createdAt"
67
159
],
68
160
"type": "object"
69
161
},
70
162
"dnsInstruction": {
71
163
"properties": {
72
164
"name": {
73
165
"description": "Fully-qualified record name.",
74
166
"type": "string"
75
167
},
76
168
"purpose": {
77
169
"knownValues": [
78
170
"ownership",
79
171
"certificate",
80
172
"traffic"
81
173
],
82
174
"type": "string"
83
175
},
84
176
"required": {
85
177
"type": "boolean"
86
178
},
87
179
"ttl": {
88
180
"type": "integer"
89
181
},
90
182
"type": {
91
183
"knownValues": [
92
184
"TXT",
93
185
"CNAME",
94
186
"ALIAS",
95
187
"ANAME",
96
188
"A",
97
189
"AAAA"
98
190
],
99
191
"type": "string"
100
192
},
101
193
"value": {
102
194
"type": "string"
103
195
}
104
196
},
105
197
"required": [
106
198
"type",
107
199
"name",
108
200
"value"
109
201
],
110
202
"type": "object"
111
203
},
112
204
"domainEvent": {
113
205
"properties": {
114
206
"actor": {
115
207
"type": "string"
116
208
},
117
209
"createdAt": {
118
210
"format": "datetime",
119
211
"type": "string"
120
212
},
121
213
"detail": {
122
214
"type": "unknown"
123
215
},
124
216
"event": {
125
217
"type": "string"
126
218
}
127
219
},
128
220
"required": [
129
221
"event",
130
222
"createdAt"
131
223
],
132
224
"type": "object"
133
225
},
134
226
"domainStatus": {
135
227
"knownValues": [
136
228
"pending",
137
229
"verifying",
138
230
"verified",
139
231
"active",
140
232
"failed",
141
233
"suspended",
142
234
"released"
143
235
],
144
236
"type": "string"
145
237
},
146
238
"domainView": {
147
239
"properties": {
148
240
"activatedAt": {
149
241
"format": "datetime",
150
242
"type": "string"
151
243
},
152
244
"activeCid": {
153
245
"format": "cid",
154
246
"type": "string"
155
247
},
156
248
"activeRev": {
157
249
"type": "string"
158
250
},
159
251
"activeUri": {
160
252
"format": "at-uri",
161
253
"type": "string"
162
254
},
163
255
"createdAt": {
164
256
"format": "datetime",
165
257
"type": "string"
166
258
},
259
+
"delegatedBase": {
260
+
"description": "For a name reserved under a delegation base: that base. In this case did is the identity the name was reserved for, not the base's owner.",
261
+
"type": "string"
262
+
},
263
+
"delegation": {
264
+
"description": "For a base: what its owner has enabled and granted. Absent on any other domain.",
265
+
"ref": "#delegationView",
266
+
"type": "ref"
267
+
},
167
268
"did": {
168
269
"format": "did",
169
270
"type": "string"
170
271
},
171
272
"domain": {
172
273
"type": "string"
173
274
},
174
275
"entryCount": {
175
276
"type": "integer"
176
277
},
177
278
"pendingCid": {
178
-
"description": "A validated, prepared record awaiting its commit, if any.",
279
+
"description": "A validated record waiting to be committed, if there is one.",
179
280
"format": "cid",
180
281
"type": "string"
181
282
},
182
283
"pendingState": {
183
284
"knownValues": [
184
285
"preparing",
185
286
"pending-publication"
186
287
],
187
288
"type": "string"
188
289
},
189
290
"sourceKind": {
190
291
"knownValues": [
191
292
"inline",
192
293
"tile"
193
294
],
194
295
"type": "string"
195
296
},
196
297
"space": {
197
-
"description": "The space the domain is registered to; absent for a DID-registered domain. The serving record is the space authority's.",
298
+
"description": "The space the domain is registered to. Absent for a domain registered to a DID. The record served is the space authority's.",
198
299
"format": "at-uri",
199
300
"type": "string"
200
301
},
201
302
"status": {
202
303
"ref": "#domainStatus",
203
304
"type": "ref"
204
305
},
205
306
"tileCid": {
206
307
"format": "cid",
207
308
"type": "string"
208
309
},
209
310
"tileUri": {
210
311
"format": "at-uri",
211
312
"type": "string"
212
313
},
213
314
"tls": {
214
315
"ref": "#tlsStatus",
215
316
"type": "ref"
216
317
},
217
318
"totalBytes": {
218
319
"type": "integer"
219
320
},
220
321
"verifiedAt": {
221
322
"format": "datetime",
222
323
"type": "string"
223
324
}
224
325
},
225
326
"required": [
226
327
"domain",
227
328
"did",
228
329
"status",
229
330
"createdAt"
230
331
],
231
332
"type": "object"
232
333
},
233
334
"edgeReachStatus": {
234
-
"description": "Whether bard's edge routes a serving hostname to bard. unknown means no probe has been made and must never be read as a fault; routed means the probe reached bard-origin; foreign means something else answered for the hostname; unreachable means nothing answered at all.",
335
+
"description": "Whether bard's edge routes a serving hostname to this deployment. unknown: not probed yet, which is not a fault. routed: the probe reached this deployment's bard-origin. foreign: something else answered. unreachable: nothing answered. other-deployment: a different bard deployment answered. unproven: the answer looked like this deployment's but failed the reachability challenge, so something may be imitating it.",
235
336
"knownValues": [
236
337
"unknown",
237
338
"routed",
238
339
"foreign",
239
-
"unreachable"
340
+
"unreachable",
341
+
"other-deployment",
342
+
"unproven"
240
343
],
241
344
"type": "string"
242
345
},
243
346
"edgeReachability": {
244
-
"description": "What the deployment's own edge answered for a hostname, measured over the network rather than read from edge configuration. A site can be indexed and activated while the edge has nowhere to send its hostname, and this is the only field that says so.",
347
+
"description": "What this deployment's edge answered for a hostname, probed over the network. A site can be indexed and active while the edge has nowhere to send it, and only this field shows that.",
245
348
"properties": {
246
349
"checkedAt": {
247
350
"description": "When the probe was made. Absent when status is unknown.",
248
351
"format": "datetime",
249
352
"type": "string"
250
353
},
251
354
"detail": {
252
-
"description": "What answered, for a person: a status line, or a transport error. Diagnostic only; nothing branches on it.",
355
+
"description": "What answered, as a status line or a transport error. Meant for people; do not branch on it.",
253
356
"type": "string"
254
357
},
255
358
"domain": {
256
-
"description": "The hostname that was probed, so a reader is told which name is not arriving.",
359
+
"description": "The hostname that was probed.",
257
360
"maxLength": 253,
258
361
"type": "string"
259
362
},
260
363
"status": {
261
364
"ref": "#edgeReachStatus",
262
365
"type": "ref"
263
366
}
264
367
},
265
368
"required": [
266
369
"status",
267
370
"domain"
268
371
],
269
372
"type": "object"
270
373
},
271
374
"indexState": {
272
375
"knownValues": [
273
376
"preparing",
274
377
"pending-publication",
275
378
"expired",
276
379
"queued",
277
380
"fetching",
278
381
"materializing",
279
382
"active",
280
383
"superseded",
281
384
"rejected",
282
385
"failed"
283
386
],
284
387
"type": "string"
285
388
},
286
389
"jobView": {
287
390
"properties": {
288
391
"action": {
289
392
"type": "string"
290
393
},
291
394
"attempts": {
292
395
"type": "integer"
293
396
},
294
397
"finishedAt": {
295
398
"format": "datetime",
296
399
"type": "string"
297
400
},
298
401
"id": {
299
402
"type": "integer"
300
403
},
301
404
"lastError": {
302
405
"type": "string"
303
406
},
304
407
"scheduledAt": {
305
408
"format": "datetime",
306
409
"type": "string"
307
410
},
308
411
"startedAt": {
309
412
"format": "datetime",
310
413
"type": "string"
311
414
},
312
415
"state": {
313
416
"type": "string"
314
417
},
315
418
"uri": {
316
419
"type": "string"
317
420
}
318
421
},
319
422
"required": [
320
423
"id",
321
424
"uri",
322
425
"action",
323
426
"state",
324
427
"attempts",
325
428
"scheduledAt"
326
429
],
327
430
"type": "object"
328
431
},
329
432
"malwareFinding": {
330
-
"description": "One malware detection. Written before anything is denied or deleted, because the quarantine destroys the sample and nothing after that can re-derive why.",
433
+
"description": "One malware detection. It is recorded before anything is denied or deleted, because quarantine destroys the sample.",
331
434
"properties": {
332
435
"cid": {
333
-
"description": "The content address. `-` for a detection at upload, where nothing was stored.",
436
+
"description": "The content address, or `-` for a detection at upload, when nothing was stored.",
334
437
"type": "string"
335
438
},
336
439
"class": {
337
-
"description": "`unwanted` is a PUA match and stops short of the publishing identity under the default policy.",
440
+
"description": "`unwanted` is a PUA match. Under the default policy, the response stops short of the publishing identity.",
338
441
"knownValues": [
339
442
"malware",
340
443
"unwanted"
341
444
],
342
445
"type": "string"
343
446
},
344
447
"did": {
345
-
"description": "The repository the bytes were fetched from โ for a tile resource the tile's author, not the site owner. Absent for content bard authored.",
448
+
"description": "The repository the bytes came from. For a tile resource, that is the tile's author, not the site owner. Absent for content bard authored.",
346
449
"format": "did",
347
450
"type": "string"
348
451
},
349
452
"domain": {
350
-
"description": "The hostname it would have served at.",
453
+
"description": "The hostname the content would have been served at.",
351
454
"type": "string"
352
455
},
353
456
"foundAt": {
354
457
"format": "datetime",
355
458
"type": "string"
356
459
},
357
460
"id": {
358
-
"description": "The finding's row id, which the denylist entry's reason names.",
461
+
"description": "The finding's ID. The matching denylist entry's reason refers to it.",
359
462
"type": "integer"
360
463
},
361
464
"path": {
362
-
"description": "The manifest key the bytes were mapped at โ the field that answers which file. Absent where there is no key: the notFound resource, an upload refused before any record referenced it, and a rescan, which starts from a CID.",
465
+
"description": "The manifest path the bytes were mapped to, which identifies the file. Absent when there is no path: the notFound resource, an upload refused before any record referenced it, or a rescan.",
363
466
"type": "string"
364
467
},
365
468
"quarantinedAt": {
366
-
"description": "When the response finished. Absent means it has not: the content is denied and may still be served.",
469
+
"description": "When the response finished. Absent while it is still underway: the content is denied but may still be served.",
367
470
"format": "datetime",
368
471
"type": "string"
369
472
},
370
473
"signature": {
371
-
"description": "The signature name, verbatim from the engine.",
474
+
"description": "The signature name, exactly as the scanner reported it.",
372
475
"type": "string"
373
476
},
374
477
"source": {
375
-
"description": "Where it was found. `rescan` means the content was clean when it arrived and a signature has caught up with it; `admin` means an operator asked about this CID rather than the sweep reaching it.",
478
+
"description": "Where the detection happened. `rescan`: the content was clean on arrival and a newer signature caught it. `admin`: an operator asked for this CID to be scanned.",
376
479
"knownValues": [
377
480
"fetch",
378
481
"upload",
379
482
"rescan",
380
483
"admin"
381
484
],
382
485
"type": "string"
383
486
},
384
487
"uri": {
385
-
"description": "The record that referenced it.",
488
+
"description": "The record that referenced the content.",
386
489
"format": "at-uri",
387
490
"type": "string"
388
491
}
389
492
},
390
493
"required": [
391
494
"id",
392
495
"cid",
393
496
"signature",
394
497
"class",
395
498
"source",
396
499
"foundAt"
397
500
],
398
501
"type": "object"
399
502
},
400
503
"missingBlob": {
401
504
"properties": {
402
505
"cid": {
403
506
"format": "cid",
404
507
"type": "string"
405
508
},
406
509
"role": {
407
510
"knownValues": [
408
511
"manifest",
409
512
"tile",
410
513
"parameter",
411
514
"notFound"
412
515
],
413
516
"type": "string"
414
517
},
415
518
"sourceDid": {
416
519
"format": "did",
417
520
"type": "string"
418
521
}
419
522
},
420
523
"required": [
421
524
"cid",
422
525
"role",
423
526
"sourceDid"
424
527
],
425
528
"type": "object"
426
529
},
427
530
"preparationStatus": {
428
531
"properties": {
429
532
"cid": {
430
533
"format": "cid",
431
534
"type": "string"
432
535
},
433
536
"expiresAt": {
434
537
"format": "datetime",
435
538
"type": "string"
436
539
},
437
540
"failed": {
438
541
"items": {
439
542
"ref": "#blobFailure",
440
543
"type": "ref"
441
544
},
442
545
"type": "array"
443
546
},
444
547
"fetched": {
445
548
"type": "integer"
446
549
},
447
550
"pending": {
448
551
"type": "integer"
449
552
},
450
553
"state": {
451
554
"knownValues": [
452
555
"preparing",
453
556
"pending-publication",
454
557
"expired"
455
558
],
456
559
"type": "string"
457
560
}
458
561
},
459
562
"required": [
460
563
"state",
461
564
"cid",
462
565
"fetched",
463
566
"pending",
464
567
"failed"
465
568
],
466
569
"type": "object"
467
570
},
468
571
"siteView": {
469
572
"properties": {
470
573
"activatedAt": {
471
574
"format": "datetime",
472
575
"type": "string"
473
576
},
474
577
"cid": {
475
578
"format": "cid",
476
579
"type": "string"
477
580
},
478
581
"did": {
479
582
"format": "did",
480
583
"type": "string"
481
584
},
482
585
"domain": {
483
586
"type": "string"
484
587
},
485
588
"rev": {
486
589
"type": "string"
487
590
},
488
591
"sourceKind": {
489
592
"knownValues": [
490
593
"inline",
491
594
"tile"
492
595
],
493
596
"type": "string"
494
597
},
495
598
"space": {
496
-
"description": "Present for a site published from a space; attribution survives the plane.",
599
+
"description": "Present for a site published from a space.",
497
600
"format": "at-uri",
498
601
"type": "string"
499
602
},
500
603
"tile": {
501
604
"ref": "#tileView",
502
605
"type": "ref"
503
606
},
504
607
"uri": {
505
608
"format": "at-uri",
506
609
"type": "string"
610
+
},
611
+
"webTile": {
612
+
"description": "Present when the site binds an ing.dasl.masl Web Tile. tile is absent then, because nothing indexes a Web Tile.",
613
+
"ref": "#webTileView",
614
+
"type": "ref"
507
615
}
508
616
},
509
617
"required": [
510
618
"domain",
511
619
"did",
512
620
"uri",
513
621
"cid",
514
622
"rev",
515
623
"activatedAt",
516
624
"sourceKind"
517
625
],
518
626
"type": "object"
519
627
},
520
628
"spaceEvent": {
521
629
"properties": {
522
630
"actor": {
523
631
"format": "did",
524
632
"type": "string"
525
633
},
526
634
"at": {
527
635
"format": "datetime",
528
636
"type": "string"
529
637
},
530
638
"cid": {
531
639
"format": "cid",
532
640
"type": "string"
533
641
},
534
642
"kind": {
535
643
"knownValues": [
536
644
"record.created",
537
645
"record.updated",
538
646
"record.deleted",
539
647
"site.activated",
540
648
"site.deactivated",
541
649
"tile.ready",
542
650
"tile.incomplete",
543
651
"tile.deleted",
544
652
"access.granted",
545
653
"access.expired",
546
654
"registration.renewed",
547
655
"registration.lapsed",
548
656
"app-not-allowed",
549
657
"space.deleted"
550
658
],
551
659
"type": "string"
552
660
},
553
661
"seq": {
554
662
"type": "integer"
555
663
},
556
664
"space": {
557
665
"format": "at-uri",
558
666
"type": "string"
559
667
},
560
668
"subject": {
561
669
"type": "string"
562
670
}
563
671
},
564
672
"required": [
565
673
"seq",
566
674
"space",
567
675
"kind",
568
676
"at"
569
677
],
570
678
"type": "object"
571
679
},
572
680
"spaceSyncState": {
573
681
"knownValues": [
574
682
"connecting",
575
683
"syncing",
576
684
"synced",
577
685
"credential-expired",
578
686
"registration-lapsed",
579
687
"app-not-allowed",
580
688
"authority-unreachable",
581
689
"deleted",
582
690
"disconnected"
583
691
],
584
692
"type": "string"
585
693
},
586
694
"spaceView": {
587
695
"properties": {
588
696
"accessExpiresAt": {
589
-
"description": "When bard's current space credential expires; absent when bard holds none.",
697
+
"description": "When bard's current credential for the space expires. Absent if bard holds none.",
590
698
"format": "datetime",
591
699
"type": "string"
592
700
},
593
701
"accessGrantedBy": {
594
702
"format": "did",
595
703
"type": "string"
596
704
},
597
705
"appAccess": {
598
706
"knownValues": [
599
707
"open",
600
708
"allow-list",
601
709
"unknown"
602
710
],
603
711
"type": "string"
604
712
},
605
713
"authority": {
606
714
"format": "did",
607
715
"type": "string"
608
716
},
609
717
"connectedAt": {
610
718
"format": "datetime",
611
719
"type": "string"
612
720
},
613
721
"domainCount": {
614
722
"type": "integer"
615
723
},
616
724
"headRev": {
617
725
"type": "string"
618
726
},
619
727
"lastCheckedAt": {
620
728
"format": "datetime",
621
729
"type": "string"
622
730
},
623
731
"lastNotifiedAt": {
624
732
"format": "datetime",
625
733
"type": "string"
626
734
},
627
735
"policy": {
628
736
"knownValues": [
629
737
"public",
630
738
"member-list",
631
739
"managing-app",
632
740
"unknown"
633
741
],
634
742
"type": "string"
635
743
},
636
744
"queuedNotifications": {
637
-
"description": "Receipts waiting for a credential.",
745
+
"description": "Notification receipts waiting for a credential.",
638
746
"type": "integer"
639
747
},
640
748
"registrationExpiresAt": {
641
749
"format": "datetime",
642
750
"type": "string"
643
751
},
644
752
"skey": {
645
753
"type": "string"
646
754
},
647
755
"syncState": {
648
756
"ref": "#spaceSyncState",
649
757
"type": "ref"
650
758
},
651
759
"tileCount": {
652
760
"type": "integer"
653
761
},
654
762
"uri": {
655
763
"format": "at-uri",
656
764
"type": "string"
657
765
}
658
766
},
659
767
"required": [
660
768
"uri",
661
769
"authority",
662
770
"skey",
663
771
"syncState",
664
772
"connectedAt"
665
773
],
666
774
"type": "object"
667
775
},
668
776
"tileView": {
669
777
"properties": {
670
778
"cid": {
671
779
"format": "cid",
672
780
"type": "string"
673
781
},
674
782
"description": {
675
783
"type": "string"
676
784
},
677
785
"did": {
678
786
"format": "did",
679
787
"type": "string"
680
788
},
681
789
"entryCount": {
682
790
"type": "integer"
683
791
},
684
792
"handle": {
685
-
"description": "The author's handle, present only when it resolves back to did. Absent is normal and not an error: a handle that has just changed, or one whose DNS is unreachable, is reported as absent rather than as a claim, and clients show did instead.",
793
+
"description": "The author's handle, present only if it resolves back to did. Often absent, for example right after a handle change or when DNS is unreachable. Show did instead.",
686
794
"format": "handle",
687
795
"type": "string"
688
796
},
689
797
"iconUrl": {
690
798
"description": "https://highport.space/xrpc/space.highport.sites.getTileIcon?cid={cid}; absent if the tile has no icon.",
691
799
"format": "uri",
692
800
"type": "string"
693
801
},
694
802
"indexedAt": {
695
803
"format": "datetime",
696
804
"type": "string"
697
805
},
698
806
"latestCid": {
699
807
"description": "The newest indexed version at this URI, when it differs from cid.",
700
808
"format": "cid",
701
809
"type": "string"
702
810
},
703
811
"name": {
704
812
"type": "string"
705
813
},
706
814
"params": {
707
815
"items": {
708
816
"ref": "space.highport.sites.tile#param",
709
817
"type": "ref"
710
818
},
711
819
"type": "array"
712
820
},
713
821
"space": {
714
-
"description": "Present for a space tile; never on the public surface.",
822
+
"description": "Present for a space tile. Never shown on the public surface.",
715
823
"format": "at-uri",
716
824
"type": "string"
717
825
},
718
826
"state": {
719
827
"knownValues": [
720
828
"indexing",
721
829
"ready",
722
830
"incomplete",
723
831
"rejected",
724
832
"suspended",
725
833
"deleted"
726
834
],
727
835
"type": "string"
728
836
},
729
837
"totalBytes": {
730
838
"type": "integer"
731
839
},
732
840
"uri": {
733
841
"format": "at-uri",
734
842
"type": "string"
735
843
}
736
844
},
737
845
"required": [
738
846
"uri",
739
847
"cid",
740
848
"did",
741
849
"name",
742
850
"state",
743
851
"indexedAt"
744
852
],
745
853
"type": "object"
746
854
},
747
855
"tlsStatus": {
748
856
"knownValues": [
749
857
"none",
750
858
"pending",
751
859
"issued",
752
860
"renewing",
753
861
"failed"
754
862
],
755
863
"type": "string"
756
864
},
757
865
"tlsView": {
758
866
"properties": {
759
867
"expiresAt": {
760
868
"format": "datetime",
761
869
"type": "string"
762
870
},
763
871
"issuedAt": {
764
872
"format": "datetime",
765
873
"type": "string"
766
874
},
767
875
"lastError": {
768
876
"type": "string"
769
877
},
770
878
"status": {
771
879
"ref": "#tlsStatus",
772
880
"type": "ref"
773
881
}
774
882
},
775
883
"required": [
776
884
"status"
777
885
],
778
886
"type": "object"
779
887
},
780
888
"validationError": {
781
889
"properties": {
782
890
"message": {
783
891
"type": "string"
784
892
},
785
893
"name": {
786
-
"description": "A DESIGN.md ยง3.8 error name, e.g. DuplicatePath, RedirectTargetNotFound, ParameterTypeMismatch.",
894
+
"description": "A validation error name, such as DuplicatePath, RedirectTargetNotFound or ParameterTypeMismatch.",
787
895
"type": "string"
788
896
},
789
897
"path": {
790
-
"description": "JSON Pointer into the record, when the error concerns one field or entry.",
898
+
"description": "JSON Pointer to the field or entry the error is about, if there is one.",
791
899
"type": "string"
792
900
}
793
901
},
794
902
"required": [
795
903
"name",
796
904
"message"
797
905
],
798
906
"type": "object"
799
907
},
800
908
"verificationCheck": {
801
909
"properties": {
802
910
"checkedAt": {
803
911
"format": "datetime",
804
912
"type": "string"
805
913
},
806
914
"detail": {
807
915
"type": "string"
808
916
},
809
917
"name": {
810
918
"knownValues": [
811
919
"ownership",
812
920
"traffic",
813
-
"conflict"
921
+
"conflict",
922
+
"certificate"
814
923
],
815
924
"type": "string"
816
925
},
817
926
"passed": {
818
927
"type": "boolean"
819
928
}
820
929
},
821
930
"required": [
822
931
"name",
823
932
"passed",
824
933
"checkedAt"
825
934
],
826
935
"type": "object"
827
936
},
828
937
"verificationView": {
829
938
"properties": {
830
939
"checks": {
831
940
"items": {
832
941
"ref": "#verificationCheck",
833
942
"type": "ref"
834
943
},
835
944
"type": "array"
836
945
},
837
946
"lastCheckedAt": {
838
947
"format": "datetime",
839
948
"type": "string"
840
949
},
841
950
"status": {
842
951
"ref": "#domainStatus",
843
952
"type": "ref"
844
953
}
845
954
},
846
955
"required": [
847
956
"status",
848
957
"checks"
849
958
],
850
959
"type": "object"
960
+
},
961
+
"webTileView": {
962
+
"description": "An ing.dasl.masl Web Tile a site binds, as the site's snapshot and bard's stored copy of the record describe it.",
963
+
"properties": {
964
+
"cid": {
965
+
"description": "The record CID the site pins.",
966
+
"format": "cid",
967
+
"type": "string"
968
+
},
969
+
"description": {
970
+
"description": "tile.description from the record, when it has one.",
971
+
"type": "string"
972
+
},
973
+
"did": {
974
+
"description": "The tile's author.",
975
+
"format": "did",
976
+
"type": "string"
977
+
},
978
+
"name": {
979
+
"description": "tile.name from the record. Absent if bard cannot read its copy of the record.",
980
+
"type": "string"
981
+
},
982
+
"uri": {
983
+
"format": "at-uri",
984
+
"type": "string"
985
+
}
986
+
},
987
+
"required": [
988
+
"uri",
989
+
"cid",
990
+
"did"
991
+
],
992
+
"type": "object"
851
993
}
852
994
},
853
995
"id": "space.highport.defs",
854
996
"lexicon": 1
855
997
}