fyi.opensocial.template

lexicons.opensocial.fyi

Schema Diff

+9 -0

From

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

To

CID
bafyreibp7tzdepp...
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.template#entry.network" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.template#entry.network:items" }
  • AddedEdge AddedEdge { src: "fyi.opensocial.template#entry", tgt: "fyi.opensocial.template#entry.network", kind: "prop", name: Some("network") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.template#entry.network", tgt: "fyi.opensocial.template#entry.network:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "fyi.opensocial.template#entry.network" }
  • AddedVertex { vertex_id: "fyi.opensocial.template#entry.network:items" }

Additional Notes

  • Non-breaking: AddedEdge { src: "fyi.opensocial.template#entry", tgt: "fyi.opensocial.template#entry.network", kind: "prop", name: Some("network") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.template#entry.network", tgt: "fyi.opensocial.template#entry.network:items", kind: "items", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "asGroup": {
5 5
      "properties": {
6 6
        "collection": {
7 7
          "format": "nsid",
8 8
          "type": "string"
9 9
        },
10 10
        "in": {
11 11
          "description": "The type of space it goes in.",
12 12
          "format": "nsid",
13 13
          "type": "string"
14 14
        }
15 15
      },
16 16
      "required": [
17 17
        "collection",
18 18
        "in"
19 19
      ],
20 20
      "type": "object"
21 21
    },
22 22
    "entry": {
23 23
      "description": "A tab, as the template suggests it, without the template itself.",
24 24
      "properties": {
25 25
        "appviews": {
26 26
          "description": "The app servers it reads for the viewer, by the start of their methods' names. Bluesky's, for app.bsky, needs no naming.",
27 27
          "items": {
28 28
            "ref": "fyi.opensocial.site#appview",
29 29
            "type": "ref"
30 30
          },
31 31
          "maxLength": 10,
32 32
          "type": "array"
33 33
        },
34 34
        "asGroup": {
35 35
          "description": "What it writes as the group rather than as the viewer, and the kind of space each goes in. Who may is up to each space's access record.",
36 36
          "items": {
37 37
            "ref": "#asGroup",
38 38
            "type": "ref"
39 39
          },
40 40
          "type": "array"
41 41
        },
42 42
        "calls": {
43 43
          "description": "The methods it may call for the viewer: the host's, and an app server's, like Bluesky's.",
44 44
          "items": {
45 45
            "format": "nsid",
46 46
            "type": "string"
47 47
          },
48 48
          "maxLength": 50,
49 49
          "type": "array"
50 50
        },
51 51
        "for": {
52 52
          "description": "The kind of thing a tab of it is about, if it is about one: a collection of records in the group's spaces, or a type of space; or, with pick.link, records anywhere on the network. Such a tab's `about` is one of them.",
53 53
          "format": "nsid",
54 54
          "type": "string"
55 55
        },
56 56
        "labels": {
57 57
          "description": "Its words for what it lets people do, by record kind or method, to follow 'Lets people': 'post events'.",
58 58
          "items": {
59 59
            "ref": "#label",
60 60
            "type": "ref"
61 61
          },
62 62
          "type": "array"
63 63
        },
64 64
        "members": {
65 65
          "description": "Shown to members only.",
66 66
          "type": "boolean"
67 67
        },
68 +
        "network": {
69 +
          "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.",
70 +
          "items": {
71 +
            "format": "nsid",
72 +
            "type": "string"
73 +
          },
74 +
          "maxLength": 20,
75 +
          "type": "array"
76 +
        },
68 77
        "pick": {
69 78
          "description": "With for, how choosing which one is put, and what a tab about none of them shows. Without none, a tab of it must be about one.",
70 79
          "ref": "#pick",
71 80
          "type": "ref"
72 81
        },
73 82
        "reads": {
74 83
          "description": "The collections it may read from the group, its members and its spaces.",
75 84
          "items": {
76 85
            "format": "nsid",
77 86
            "type": "string"
78 87
          },
79 88
          "maxLength": 50,
80 89
          "type": "array"
81 90
        },
82 91
        "slug": {
83 92
          "maxLength": 64,
84 93
          "type": "string"
85 94
        },
86 95
        "summary": {
87 96
          "description": "One short line on what a tab of it shows, for choosing it.",
88 97
          "maxGraphemes": 100,
89 98
          "maxLength": 1000,
90 99
          "type": "string"
91 100
        },
92 101
        "title": {
93 102
          "maxGraphemes": 64,
94 103
          "maxLength": 640,
95 104
          "type": "string"
96 105
        },
97 106
        "writes": {
98 107
          "description": "The collections it may write for the viewer, in their account or one of the group's spaces.",
99 108
          "items": {
100 109
            "format": "nsid",
101 110
            "type": "string"
102 111
          },
103 112
          "maxLength": 50,
104 113
          "type": "array"
105 114
        }
106 115
      },
107 116
      "required": [
108 117
        "slug"
109 118
      ],
110 119
      "type": "object"
111 120
    },
112 121
    "label": {
113 122
      "properties": {
114 123
        "action": {
115 124
          "description": "For that write alone.",
116 125
          "knownValues": [
117 126
            "create",
118 127
            "update",
119 128
            "delete"
120 129
          ],
121 130
          "type": "string"
122 131
        },
123 132
        "nsid": {
124 133
          "description": "A record kind it writes, or a method it calls.",
125 134
          "format": "nsid",
126 135
          "type": "string"
127 136
        },
128 137
        "text": {
129 138
          "maxGraphemes": 80,
130 139
          "maxLength": 300,
131 140
          "type": "string"
132 141
        }
133 142
      },
134 143
      "required": [
135 144
        "nsid",
136 145
        "text"
137 146
      ],
138 147
      "type": "object"
139 148
    },
140 149
    "main": {
141 150
      "description": "A template for a tab for a group's site, published by whoever made it. A site names it by URI; an agent installs it as a skill. Keyed by the template's name.",
142 151
      "key": "any",
143 152
      "record": {
144 153
        "properties": {
145 154
          "createdAt": {
146 155
            "format": "datetime",
147 156
            "type": "string"
148 157
          },
149 158
          "description": {
150 159
            "description": "One line saying what it is and when to use it; what an agent matches a request against.",
151 160
            "maxGraphemes": 300,
152 161
            "maxLength": 3000,
153 162
            "type": "string"
154 163
          },
155 164
          "entry": {
156 165
            "description": "How a site uses it unless told otherwise; what it reads, writes and calls are what it needs to be allowed for it to work.",
157 166
            "ref": "#entry",
158 167
            "type": "ref"
159 168
          },
160 169
          "guide": {
161 170
            "description": "How to use it, in markdown: what it shows, what it reads and who can see that, how to make it a group's own.",
162 171
            "maxLength": 50000,
163 172
            "type": "string"
164 173
          },
165 174
          "html": {
166 175
            "description": "The page: a whole HTML document, drawn in a sandboxed frame with the site kit in front of it.",
167 176
            "maxLength": 200000,
168 177
            "type": "string"
169 178
          },
170 179
          "name": {
171 180
            "description": "What a site and an agent call it: lowercase letters, digits and dashes. The same as the record key.",
172 181
            "maxLength": 64,
173 182
            "type": "string"
174 183
          },
175 184
          "preview": {
176 185
            "description": "A small drawing of a tab of it, as SVG, for choosing it: drawn in the site's colours by the tokens var(--bg), var(--ink), var(--muted), var(--line), var(--accent), var(--surface) and var(--soft). Shown as an image, so nothing in it runs.",
177 186
            "maxLength": 20000,
178 187
            "type": "string"
179 188
          }
180 189
        },
181 190
        "required": [
182 191
          "name",
183 192
          "description",
184 193
          "guide",
185 194
          "html",
186 195
          "createdAt"
187 196
        ],
188 197
        "type": "object"
189 198
      },
190 199
      "type": "record"
191 200
    },
192 201
    "pick": {
193 202
      "properties": {
194 203
        "label": {
195 204
          "maxGraphemes": 64,
196 205
          "maxLength": 640,
197 206
          "type": "string"
198 207
        },
199 208
        "link": {
200 209
          "description": "Picked by pasting a link to one, anywhere on the network, rather than from the group's own: a Bluesky feed's. The field's hint.",
201 210
          "maxGraphemes": 64,
202 211
          "maxLength": 640,
203 212
          "type": "string"
204 213
        },
205 214
        "new": {
206 215
          "description": "Making a new place of its own instead, from Add a tab: a space of this type, readable by everyone or some roles.",
207 216
          "ref": "#pickNew",
208 217
          "type": "ref"
209 218
        },
210 219
        "none": {
211 220
          "maxGraphemes": 64,
212 221
          "maxLength": 640,
213 222
          "type": "string"
214 223
        }
215 224
      },
216 225
      "required": [
217 226
        "label"
218 227
      ],
219 228
      "type": "object"
220 229
    },
221 230
    "pickNew": {
222 231
      "properties": {
223 232
        "in": {
224 233
          "description": "The type of space to make.",
225 234
          "format": "nsid",
226 235
          "type": "string"
227 236
        },
228 237
        "label": {
229 238
          "maxGraphemes": 60,
230 239
          "maxLength": 300,
231 240
          "type": "string"
232 241
        }
233 242
      },
234 243
      "required": [
235 244
        "label",
236 245
        "in"
237 246
      ],
238 247
      "type": "object"
239 248
    }
240 249
  },
241 250
  "id": "fyi.opensocial.template",
242 251
  "lexicon": 1
243 252
}

Compare Other Versions

Lexicon Garden

@