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
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
+
"access": {
5
+
"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.",
6
+
"properties": {
7
+
"requireAuth": {
8
+
"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.",
9
+
"items": {
10
+
"maxLength": 1024,
11
+
"type": "string"
12
+
},
13
+
"maxLength": 64,
14
+
"type": "array"
15
+
}
16
+
},
17
+
"type": "object"
18
+
},
4
19
"manifest": {
5
20
"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.",
6
21
"properties": {
7
22
"name": {
8
23
"description": "Bundle name. Required when the manifest is a tile's content; optional for an inline site source.",
9
24
"maxGraphemes": 100,
10
25
"maxLength": 1000,
11
26
"type": "string"
12
27
},
13
28
"resources": {
14
29
"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.",
15
30
"type": "unknown"
16
31
}
17
32
},
18
33
"required": [
19
34
"resources"
20
35
],
21
36
"type": "object"
22
37
},
23
38
"redirect": {
24
39
"properties": {
25
40
"from": {
26
41
"description": "The request path to match, optionally including a query string. Matching is exact.",
27
42
"maxLength": 2048,
28
43
"type": "string"
29
44
},
30
45
"status": {
31
46
"description": "Redirect status. Defaults to 302.",
32
47
"knownValues": [
33
48
301,
34
49
302,
35
50
307,
36
51
308
37
52
],
38
53
"type": "integer"
39
54
},
40
55
"to": {
41
56
"description": "Destination path. Must be an absolute path on this site that exists as a manifest key.",
42
57
"maxLength": 2048,
43
58
"type": "string"
44
59
}
45
60
},
46
61
"required": [
47
62
"from",
48
63
"to"
49
64
],
50
65
"type": "object"
51
66
},
52
67
"resource": {
53
68
"description": "A single addressable resource within a manifest.",
54
69
"properties": {
55
70
"contentEncoding": {
56
71
"description": "Declares the stored blob is already encoded with this algorithm; the origin serves it as-is with a matching Content-Encoding header.",
57
72
"knownValues": [
58
73
"gzip",
59
74
"br",
60
75
"zstd",
61
76
"identity"
62
77
],
63
78
"type": "string"
64
79
},
65
80
"contentType": {
66
81
"description": "Serve the asset with this content type instead of the blob's mimeType.",
67
82
"maxLength": 255,
68
83
"type": "string"
69
84
},
70
85
"src": {
71
86
"description": "The blob holding this resource's bytes.",
72
87
"type": "blob"
73
88
},
74
89
"status": {
75
90
"description": "Response status. Defaults to 200 for manifest entries and 404 for the notFound resource.",
76
91
"knownValues": [
77
92
200,
78
93
404,
79
94
410
80
95
],
81
96
"type": "integer"
82
97
}
83
98
},
84
99
"required": [
85
100
"src"
86
101
],
87
102
"type": "object"
88
103
},
89
104
"wellKnown": {
90
105
"description": "Controls the responses bard synthesizes under /.well-known/. Every field defaults to true; the object exists only to turn things off.",
91
106
"properties": {
92
107
"atproto": {
93
108
"description": "Serve GET /.well-known/atproto-did with the site's owning DID. Default true.",
94
109
"type": "boolean"
95
110
},
96
111
"rasl": {
97
112
"description": "Serve GET /.well-known/rasl/{cid} for every CID this site references. Default true.",
98
113
"type": "boolean"
99
114
}
100
115
},
101
116
"type": "object"
102
117
}
103
118
},
104
119
"id": "space.highport.sites.defs",
105
120
"lexicon": 1
106
121
}