space.highport.sites.defs
Schema Diff
+14 -14
Compatibility Analysis
Backward Compatible
No changes detected.
1
1
{
2
2
"id": "space.highport.sites.defs",
3
3
"defs": {
4
4
"access": {
5
5
"type": "object",
6
6
"properties": {
7
7
"audience": {
8
8
"refs": [
9
9
"space.highport.sites.defs#spaceMembers"
10
10
],
11
11
"type": "union",
12
12
"closed": true,
13
-
"description": "Who the paths in requireAuth are for. Absent means any signed-in reader, which is what requireAuth alone has always meant. Meaningful only alongside requireAuth: an audience with nothing gated narrows a gate that is not there. The union is closed because a host that cannot evaluate an audience must refuse the record rather than serve it to everybody — an unrecognized audience that fell open would be a gate quietly removed by a schema it did not understand."
13
+
"description": "Who the requireAuth paths are for. Absent means any signed-in reader. Only meaningful alongside requireAuth. The union is closed so that a host which does not recognize an audience rejects the record instead of opening the gate to everyone."
14
14
},
15
15
"requireAuth": {
16
16
"type": "array",
17
17
"items": {
18
18
"type": "string",
19
19
"maxLength": 1024
20
20
},
21
21
"maxLength": 64,
22
-
"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."
22
+
"description": "Path prefixes that always require a signed-in reader and always bill that reader, whatever the owner budget says. Matched against the normalized request path, so a prefix covers everything under it. \"/\" gates the whole site, the same as an owner budget of zero."
23
23
}
24
24
},
25
-
"description": "Which parts of a site require a signed-in reader, and which readers count. 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 and to whom, it survives moving to another host, and a reader of the record can see it without asking the host."
25
+
"description": "Which parts of a site require a signed-in reader, and which readers qualify. Absent means nothing is gated and the owner budget decides every path, which suits most sites. This is content policy, not billing: it lives in the record, so it moves with the site and anyone can read it."
26
26
},
27
27
"manifest": {
28
28
"type": "object",
29
29
"required": [
30
30
"resources"
31
31
],
32
32
"properties": {
33
33
"name": {
34
34
"type": "string",
35
35
"maxLength": 1000,
36
-
"description": "Bundle name. Required when the manifest is a tile's content; optional for an inline site source.",
36
+
"description": "Bundle name. Required for tile content, optional for an inline site source.",
37
37
"maxGraphemes": 100
38
38
},
39
39
"resources": {
40
40
"type": "unknown",
41
-
"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."
41
+
"description": "Map of absolute request path (starting with '/') to space.highport.sites.defs#resource, since Lexicon has no map type. Tile content must have a '/' entry, and sites should."
42
42
}
43
43
},
44
-
"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."
44
+
"description": "A bundle of resources keyed by path, using bard's camelCase subset of a MASL bundle-mode document. It is a site's inline source or a tile's content."
45
45
},
46
46
"redirect": {
47
47
"type": "object",
48
48
"required": [
49
49
"from",
50
50
"to"
51
51
],
52
52
"properties": {
53
53
"to": {
54
54
"type": "string",
55
55
"maxLength": 2048,
56
-
"description": "Destination path. Must be an absolute path on this site that exists as a manifest key."
56
+
"description": "Destination path. Must be an absolute path that exists as a manifest key on this site."
57
57
},
58
58
"from": {
59
59
"type": "string",
60
60
"maxLength": 2048,
61
-
"description": "The request path to match, optionally including a query string. Matching is exact."
61
+
"description": "The request path to match, optionally with a query string. Must match exactly."
62
62
},
63
63
"status": {
64
64
"type": "integer",
65
65
"description": "Redirect status. Defaults to 302.",
66
66
"knownValues": [
67
67
301,
68
68
302,
69
69
307,
70
70
308
71
71
]
72
72
}
73
73
}
74
74
},
75
75
"resource": {
76
76
"type": "object",
77
77
"required": [
78
78
"src"
79
79
],
80
80
"properties": {
81
81
"src": {
82
82
"type": "blob",
83
83
"description": "The blob holding this resource's bytes."
84
84
},
85
85
"status": {
86
86
"type": "integer",
87
87
"description": "Response status. Defaults to 200 for manifest entries and 404 for the notFound resource.",
88
88
"knownValues": [
89
89
200,
90
90
404,
91
91
410
92
92
]
93
93
},
94
94
"contentType": {
95
95
"type": "string",
96
96
"maxLength": 255,
97
-
"description": "Serve the asset with this content type instead of the blob's mimeType."
97
+
"description": "Content type to serve instead of the blob's mimeType."
98
98
},
99
99
"contentEncoding": {
100
100
"type": "string",
101
-
"description": "Declares the stored blob is already encoded with this algorithm; the origin serves it as-is with a matching Content-Encoding header.",
101
+
"description": "The encoding the stored blob already has. The origin serves it unchanged, with a matching Content-Encoding header.",
102
102
"knownValues": [
103
103
"gzip",
104
104
"br",
105
105
"zstd",
106
106
"identity"
107
107
]
108
108
}
109
109
},
110
-
"description": "A single addressable resource within a manifest."
110
+
"description": "One addressable resource in a manifest."
111
111
},
112
112
"wellKnown": {
113
113
"type": "object",
114
114
"properties": {
115
115
"rasl": {
116
116
"type": "boolean",
117
117
"description": "Serve GET /.well-known/rasl/{cid} for every CID this site references. Default true."
118
118
},
119
119
"atproto": {
120
120
"type": "boolean",
121
121
"description": "Serve GET /.well-known/atproto-did with the site's owning DID. Default true."
122
122
},
123
123
"standardSitePublication": {
124
124
"type": "string",
125
125
"format": "at-uri",
126
-
"description": "Serve GET /.well-known/site.standard.publication with this AT-URI, so the domain proves a standard.site publication. It must name a site.standard.publication record in the site owner's own repository whose url host is this domain; bard checks both when it indexes the site record and refuses the record otherwise. A manifest entry at that path is refused while this is set."
126
+
"description": "Serve GET /.well-known/site.standard.publication with this AT-URI. It must name a site.standard.publication record in the site owner's repository whose url host is this domain, or the site record is rejected at indexing. While set, a manifest entry at that path is rejected."
127
127
}
128
128
},
129
-
"description": "Controls the responses bard synthesizes under /.well-known/. The two flags default to true and exist only to turn things off; standardSitePublication is absent unless a publisher names one."
129
+
"description": "Controls the responses bard generates under /.well-known/. Both flags default to true and exist only to turn things off. standardSitePublication is absent unless the publisher sets it."
130
130
},
131
131
"spaceMembers": {
132
132
"type": "object",
133
133
"properties": {},
134
-
"description": "The members of the space this site is held in, as its host answers for them. Valid only on a site served from a space; a site published to a repository has no space to ask about and the field is refused there rather than ignored. Carries no member list and names no identity: the space's own host is asked, and the answer is not part of the record."
134
+
"description": "The members of the space this site lives in, as the space's host reports them. Only valid on a site served from a space, and rejected (not ignored) anywhere else. The record lists no members; the space's host is asked."
135
135
}
136
136
},
137
137
"$type": "com.atproto.lexicon.schema",
138
138
"lexicon": 1
139
139
}