fyi.opensocial.site

lexicons.opensocial.fyi

Schema Diff

+9 -0

From

CID
bafyreihgpgpdj2x...
Indexed At
2026-10-09 16:55 UTC
View this version

To

CID
bafyreifffdnhvse...
Indexed At
2026-10-09 20:04 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 4 non-breaking changes.

Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.site#tab.network" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.site#tab.network:items" }
  • AddedEdge AddedEdge { src: "fyi.opensocial.site#tab", tgt: "fyi.opensocial.site#tab.network", kind: "prop", name: Some("network") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.site#tab.network", tgt: "fyi.opensocial.site#tab.network:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "fyi.opensocial.site#tab.network" }
  • AddedVertex { vertex_id: "fyi.opensocial.site#tab.network:items" }

Additional Notes

  • Non-breaking: AddedEdge { src: "fyi.opensocial.site#tab", tgt: "fyi.opensocial.site#tab.network", kind: "prop", name: Some("network") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.site#tab.network", tgt: "fyi.opensocial.site#tab.network:items", kind: "items", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "appview": {
5 5
      "description": "An app server a tab reads for the viewer: what its methods' names start with, and the service, by DID and id.",
6 6
      "properties": {
7 7
        "prefix": {
8 8
          "description": "social.grain",
9 9
          "maxLength": 253,
10 10
          "type": "string"
11 11
        },
12 12
        "service": {
13 13
          "description": "did:web:grain.social#grain_appview",
14 14
          "maxLength": 2048,
15 15
          "type": "string"
16 16
        }
17 17
      },
18 18
      "required": [
19 19
        "prefix",
20 20
        "service"
21 21
      ],
22 22
      "type": "object"
23 23
    },
24 24
    "channel": {
25 25
      "properties": {
26 26
        "front": {
27 27
          "description": "The site's front page, drawn across the whole window with nothing around it, at every path at the group's address but the channels' (/c/<channel>/<tab>). Members land in the channels at the address itself, and see it at any other of its paths. One tab at most, and one anyone may see.",
28 28
          "type": "boolean"
29 29
        },
30 30
        "members": {
31 31
          "description": "Shown to members only.",
32 32
          "type": "boolean"
33 33
        },
34 34
        "name": {
35 35
          "maxGraphemes": 64,
36 36
          "maxLength": 640,
37 37
          "type": "string"
38 38
        },
39 39
        "roles": {
40 40
          "description": "Shown only to members with one of these roles, by the group's role ids: a channel for those who run part of the group. Implies members.",
41 41
          "items": {
42 42
            "maxLength": 128,
43 43
            "type": "string"
44 44
          },
45 45
          "maxLength": 20,
46 46
          "type": "array"
47 47
        },
48 48
        "slug": {
49 49
          "description": "Lowercase letters, digits and dashes; its address within the site.",
50 50
          "maxLength": 64,
51 51
          "type": "string"
52 52
        },
53 53
        "tabs": {
54 54
          "items": {
55 55
            "ref": "#tab",
56 56
            "type": "ref"
57 57
          },
58 58
          "maxLength": 50,
59 59
          "type": "array"
60 60
        }
61 61
      },
62 62
      "required": [
63 63
        "slug",
64 64
        "tabs"
65 65
      ],
66 66
      "type": "object"
67 67
    },
68 68
    "file": {
69 69
      "properties": {
70 70
        "file": {
71 71
          "maxSize": 5000000,
72 72
          "type": "blob"
73 73
        },
74 74
        "path": {
75 75
          "maxLength": 512,
76 76
          "type": "string"
77 77
        }
78 78
      },
79 79
      "required": [
80 80
        "path",
81 81
        "file"
82 82
      ],
83 83
      "type": "object"
84 84
    },
85 85
    "main": {
86 86
      "description": "A group's site, in its members space: channels of tabs, shown one at a time, each a whole HTML document drawn in a sandboxed frame. Authored by the group DID; written through putSite by whoever holds group.configure. Anyone else is handed only its public part, by the host. A group without one is shown the starter.",
87 87
      "key": "literal:self",
88 88
      "record": {
89 89
        "properties": {
90 90
          "channels": {
91 91
            "items": {
92 92
              "ref": "#channel",
93 93
              "type": "ref"
94 94
            },
95 95
            "maxLength": 50,
96 96
            "type": "array"
97 97
          },
98 98
          "files": {
99 99
            "description": "Everything the site is made of, by path. A tab's page is `<channel>/<tab>.html`, or `<channel>/<tab>/index.html` with what it uses beside it; `site.css` is put in front of every tab.",
100 100
            "items": {
101 101
              "ref": "#file",
102 102
              "type": "ref"
103 103
            },
104 104
            "maxLength": 500,
105 105
            "type": "array"
106 106
          },
107 107
          "theme": {
108 108
            "ref": "#theme",
109 109
            "type": "ref"
110 110
          },
111 111
          "updatedAt": {
112 112
            "format": "datetime",
113 113
            "type": "string"
114 114
          }
115 115
        },
116 116
        "required": [
117 117
          "channels",
118 118
          "files",
119 119
          "updatedAt"
120 120
        ],
121 121
        "type": "object"
122 122
      },
123 123
      "type": "record"
124 124
    },
125 125
    "tab": {
126 126
      "properties": {
127 127
        "about": {
128 128
          "description": "The one thing it is for, which its page shows: an event's or a chat room's URI in one of the group's spaces, a board's space, or a member's DID. Its tab comes and goes with it.",
129 129
          "maxLength": 512,
130 130
          "type": "string"
131 131
        },
132 132
        "appviews": {
133 133
          "description": "The app servers it reads for the viewer, by the start of their methods' names. Bluesky's, for app.bsky, needs no naming.",
134 134
          "items": {
135 135
            "ref": "fyi.opensocial.site#appview",
136 136
            "type": "ref"
137 137
          },
138 138
          "maxLength": 10,
139 139
          "type": "array"
140 140
        },
141 141
        "asGroup": {
142 142
          "description": "What it writes as the group rather than as the viewer, and the kind of space each goes in.",
143 143
          "items": {
144 144
            "ref": "fyi.opensocial.template#asGroup",
145 145
            "type": "ref"
146 146
          },
147 147
          "type": "array"
148 148
        },
149 149
        "calls": {
150 150
          "description": "The methods it may call for the viewer: the host's, and an app server's, like Bluesky's.",
151 151
          "items": {
152 152
            "format": "nsid",
153 153
            "type": "string"
154 154
          },
155 155
          "maxLength": 50,
156 156
          "type": "array"
157 157
        },
158 158
        "cid": {
159 159
          "description": "With a template URI: that version only.",
160 160
          "format": "cid",
161 161
          "type": "string"
162 162
        },
163 163
        "labels": {
164 164
          "description": "Its words for what it lets people do, by record kind or method.",
165 165
          "items": {
166 166
            "ref": "fyi.opensocial.template#label",
167 167
            "type": "ref"
168 168
          },
169 169
          "type": "array"
170 170
        },
171 171
        "members": {
172 172
          "description": "Shown to members only.",
173 173
          "type": "boolean"
174 174
        },
175 +
        "network": {
176 +
          "description": "Collections it reads from everyone on the network who writes them, not only the group and its members: the host keeps each one whole from when the site is saved, and won't save one more accounts write than it can keep.",
177 +
          "items": {
178 +
            "format": "nsid",
179 +
            "type": "string"
180 +
          },
181 +
          "maxLength": 20,
182 +
          "type": "array"
183 +
        },
175 184
        "page": {
176 185
          "description": "One of the site's files to show, which tabs alike share (every event's tab, say). Read before the tab's own file and its template.",
177 186
          "maxLength": 256,
178 187
          "type": "string"
179 188
        },
180 189
        "reads": {
181 190
          "description": "The collections it may read from the group, its members and its spaces.",
182 191
          "items": {
183 192
            "format": "nsid",
184 193
            "type": "string"
185 194
          },
186 195
          "maxLength": 50,
187 196
          "type": "array"
188 197
        },
189 198
        "roles": {
190 199
          "description": "For members with one of these roles, by the group's role ids. Others don't see it, or its tab. Members only.",
191 200
          "items": {
192 201
            "maxLength": 64,
193 202
            "type": "string"
194 203
          },
195 204
          "maxLength": 20,
196 205
          "type": "array"
197 206
        },
198 207
        "slug": {
199 208
          "maxLength": 64,
200 209
          "type": "string"
201 210
        },
202 211
        "template": {
203 212
          "description": "Drawn from a template when the site has no page of its own for it: a bundled one by name, a fyi.opensocial.template by URI, or a member's fyi.opensocial.page by its URI in the group's space for members' work. A member's page is only ever drawn for members.",
204 213
          "maxLength": 512,
205 214
          "type": "string"
206 215
        },
207 216
        "title": {
208 217
          "maxGraphemes": 64,
209 218
          "maxLength": 640,
210 219
          "type": "string"
211 220
        },
212 221
        "writes": {
213 222
          "description": "The collections it may write for the viewer, in their account or one of the group's spaces.",
214 223
          "items": {
215 224
            "format": "nsid",
216 225
            "type": "string"
217 226
          },
218 227
          "maxLength": 50,
219 228
          "type": "array"
220 229
        }
221 230
      },
222 231
      "required": [
223 232
        "slug"
224 233
      ],
225 234
      "type": "object"
226 235
    },
227 236
    "theme": {
228 237
      "description": "Colours, fonts and corners as CSS values, and what sits behind the tabs.",
229 238
      "properties": {
230 239
        "accent": {
231 240
          "maxLength": 200,
232 241
          "type": "string"
233 242
        },
234 243
        "accentInk": {
235 244
          "maxLength": 200,
236 245
          "type": "string"
237 246
        },
238 247
        "bg": {
239 248
          "maxLength": 200,
240 249
          "type": "string"
241 250
        },
242 251
        "fontBody": {
243 252
          "maxLength": 200,
244 253
          "type": "string"
245 254
        },
246 255
        "fontDisplay": {
247 256
          "maxLength": 200,
248 257
          "type": "string"
249 258
        },
250 259
        "ink": {
251 260
          "maxLength": 200,
252 261
          "type": "string"
253 262
        },
254 263
        "line": {
255 264
          "maxLength": 200,
256 265
          "type": "string"
257 266
        },
258 267
        "muted": {
259 268
          "maxLength": 200,
260 269
          "type": "string"
261 270
        },
262 271
        "radius": {
263 272
          "maxLength": 200,
264 273
          "type": "string"
265 274
        },
266 275
        "surface": {
267 276
          "maxLength": 200,
268 277
          "type": "string"
269 278
        },
270 279
        "wallpaper": {
271 280
          "description": "A built-in wallpaper by name, `banner` for the group's banner, or the path of an image in the site's files.",
272 281
          "maxLength": 512,
273 282
          "type": "string"
274 283
        }
275 284
      },
276 285
      "type": "object"
277 286
    }
278 287
  },
279 288
  "id": "fyi.opensocial.site",
280 289
  "lexicon": 1
281 290
}

Compare Other Versions

Lexicon Garden

@