space.highport.sites.defs
Schema Diff
+15 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 5 non-breaking changes.
Non-Breaking Changes (5)
- AddedVertex AddedVertex { vertex_id: "space.highport.sites.defs#access" }
- AddedVertex AddedVertex { vertex_id: "space.highport.sites.defs#access.requireAuth" }
- AddedVertex AddedVertex { vertex_id: "space.highport.sites.defs#access.requireAuth:items" }
- AddedEdge AddedEdge { src: "space.highport.sites.defs#access", tgt: "space.highport.sites.defs#access.requireAuth", kind: "prop", name: Some("requireAuth") }
- AddedEdge AddedEdge { src: "space.highport.sites.defs#access.requireAuth", tgt: "space.highport.sites.defs#access.requireAuth:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "space.highport.sites.defs#access" }AddedVertex { vertex_id: "space.highport.sites.defs#access.requireAuth" }AddedVertex { vertex_id: "space.highport.sites.defs#access.requireAuth:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "space.highport.sites.defs#access", tgt: "space.highport.sites.defs#access.requireAuth", kind: "prop", name: Some("requireAuth") }
- Non-breaking: AddedEdge { src: "space.highport.sites.defs#access.requireAuth", tgt: "space.highport.sites.defs#access.requireAuth:items", kind: "items", name: None }
1
1
{
2
2
"id": "space.highport.sites.defs",
3
3
"defs": {
4
+
"access": {
5
+
"type": "object",
6
+
"properties": {
7
+
"requireAuth": {
8
+
"type": "array",
9
+
"items": {
10
+
"type": "string",
11
+
"maxLength": 1024
12
+
},
13
+
"maxLength": 64,
14
+
"description": "Path prefixes that always require a signed-in reader and always bill that reader, whatever the owner budget says and whether or not it is spent. Matched against the normalized request path, so a prefix covers everything beneath it. A prefix of \"/\" is the whole site and says the same thing as an owner budget of zero."
15
+
}
16
+
},
17
+
"description": "Which parts of a site require a signed-in reader. Absent means none of it: the domain's owner budget decides every path, which is the arrangement almost every site wants. This is content policy rather than a billing arrangement — it says which parts of a publication are premium, it survives moving to another host, and a reader of the record can see it without asking the host."
18
+
},
4
19
"manifest": {
5
20
"type": "object",
6
21
"required": [
7
22
"resources"
8
23
],
9
24
"properties": {
10
25
"name": {
11
26
"type": "string",
12
27
"maxLength": 1000,
13
28
"description": "Bundle name. Required when the manifest is a tile's content; optional for an inline site source.",
14
29
"maxGraphemes": 100
15
30
},
16
31
"resources": {
17
32
"type": "unknown",
18
33
"description": "Map of absolute request path (beginning with '/') to space.highport.sites.defs#resource. Lexicon has no map type. A '/' entry is required for tile content and recommended for sites."
19
34
}
20
35
},
21
36
"description": "A path-keyed bundle of resources — bard's camelCase subset of a MASL bundle-mode document. The inline source of a site, or the content of a tile."
22
37
},
23
38
"redirect": {
24
39
"type": "object",
25
40
"required": [
26
41
"from",
27
42
"to"
28
43
],
29
44
"properties": {
30
45
"to": {
31
46
"type": "string",
32
47
"maxLength": 2048,
33
48
"description": "Destination path. Must be an absolute path on this site that exists as a manifest key."
34
49
},
35
50
"from": {
36
51
"type": "string",
37
52
"maxLength": 2048,
38
53
"description": "The request path to match, optionally including a query string. Matching is exact."
39
54
},
40
55
"status": {
41
56
"type": "integer",
42
57
"description": "Redirect status. Defaults to 302.",
43
58
"knownValues": [
44
59
301,
45
60
302,
46
61
307,
47
62
308
48
63
]
49
64
}
50
65
}
51
66
},
52
67
"resource": {
53
68
"type": "object",
54
69
"required": [
55
70
"src"
56
71
],
57
72
"properties": {
58
73
"src": {
59
74
"type": "blob",
60
75
"description": "The blob holding this resource's bytes."
61
76
},
62
77
"status": {
63
78
"type": "integer",
64
79
"description": "Response status. Defaults to 200 for manifest entries and 404 for the notFound resource.",
65
80
"knownValues": [
66
81
200,
67
82
404,
68
83
410
69
84
]
70
85
},
71
86
"contentType": {
72
87
"type": "string",
73
88
"maxLength": 255,
74
89
"description": "Serve the asset with this content type instead of the blob's mimeType."
75
90
},
76
91
"contentEncoding": {
77
92
"type": "string",
78
93
"description": "Declares the stored blob is already encoded with this algorithm; the origin serves it as-is with a matching Content-Encoding header.",
79
94
"knownValues": [
80
95
"gzip",
81
96
"br",
82
97
"zstd",
83
98
"identity"
84
99
]
85
100
}
86
101
},
87
102
"description": "A single addressable resource within a manifest."
88
103
},
89
104
"wellKnown": {
90
105
"type": "object",
91
106
"properties": {
92
107
"rasl": {
93
108
"type": "boolean",
94
109
"description": "Serve GET /.well-known/rasl/{cid} for every CID this site references. Default true."
95
110
},
96
111
"atproto": {
97
112
"type": "boolean",
98
113
"description": "Serve GET /.well-known/atproto-did with the site's owning DID. Default true."
99
114
}
100
115
},
101
116
"description": "Controls the responses bard synthesizes under /.well-known/. Every field defaults to true; the object exists only to turn things off."
102
117
}
103
118
},
104
119
"$type": "com.atproto.lexicon.schema",
105
120
"lexicon": 1
106
121
}