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