fyi.opensocial.template

lexicons.opensocial.fyi

Schema Diff

+17 -2

From

CID
bafyreidmlop66tc...
Indexed At
2026-10-08 18:10 UTC
View this version

To

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

Compatibility Analysis

Backward Compatible

Backward compatible. 8 non-breaking changes.

Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.site#appview" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.template#entry.appviews" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.template#entry.appviews:items" }
  • AddedVertex AddedVertex { vertex_id: "fyi.opensocial.template#pick.link" }
  • AddedEdge AddedEdge { src: "fyi.opensocial.template#entry", tgt: "fyi.opensocial.template#entry.appviews", kind: "prop", name: Some("appviews") }
  • AddedEdge AddedEdge { src: "fyi.opensocial.template#entry.appviews", tgt: "fyi.opensocial.template#entry.appviews:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.template#entry.appviews:items", tgt: "fyi.opensocial.site#appview", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "fyi.opensocial.template#pick", tgt: "fyi.opensocial.template#pick.link", kind: "prop", name: Some("link") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "fyi.opensocial.site#appview" }
  • AddedVertex { vertex_id: "fyi.opensocial.template#entry.appviews" }
  • AddedVertex { vertex_id: "fyi.opensocial.template#entry.appviews:items" }
  • AddedVertex { vertex_id: "fyi.opensocial.template#pick.link" }

Additional Notes

  • Non-breaking: AddedEdge { src: "fyi.opensocial.template#entry", tgt: "fyi.opensocial.template#entry.appviews", kind: "prop", name: Some("appviews") }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.template#entry.appviews", tgt: "fyi.opensocial.template#entry.appviews:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.template#entry.appviews:items", tgt: "fyi.opensocial.site#appview", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "fyi.opensocial.template#pick", tgt: "fyi.opensocial.template#pick.link", kind: "prop", name: Some("link") }
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 +
        "appviews": {
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 +
          "items": {
28 +
            "ref": "fyi.opensocial.site#appview",
29 +
            "type": "ref"
30 +
          },
31 +
          "maxLength": 10,
32 +
          "type": "array"
33 +
        },
25 34
        "asGroup": {
26 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.",
27 36
          "items": {
28 37
            "ref": "#asGroup",
29 38
            "type": "ref"
30 39
          },
31 40
          "type": "array"
32 41
        },
33 42
        "calls": {
34 -
          "description": "The host methods it may call for the viewer.",
43 +
          "description": "The methods it may call for the viewer: the host's, and an app server's, like Bluesky's.",
35 44
          "items": {
36 45
            "format": "nsid",
37 46
            "type": "string"
38 47
          },
39 48
          "maxLength": 50,
40 49
          "type": "array"
41 50
        },
42 51
        "for": {
43 -
          "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. Such a tab's `about` is one of them.",
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.",
44 53
          "format": "nsid",
45 54
          "type": "string"
46 55
        },
47 56
        "labels": {
48 57
          "description": "Its words for what it lets people do, by record kind or method, to follow 'Lets people': 'post events'.",
49 58
          "items": {
50 59
            "ref": "#label",
51 60
            "type": "ref"
52 61
          },
53 62
          "type": "array"
54 63
        },
55 64
        "members": {
56 65
          "description": "Shown to members only.",
57 66
          "type": "boolean"
58 67
        },
59 68
        "pick": {
60 69
          "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.",
61 70
          "ref": "#pick",
62 71
          "type": "ref"
63 72
        },
64 73
        "reads": {
65 74
          "description": "The collections it may read from the group, its members and its spaces.",
66 75
          "items": {
67 76
            "format": "nsid",
68 77
            "type": "string"
69 78
          },
70 79
          "maxLength": 50,
71 80
          "type": "array"
72 81
        },
73 82
        "slug": {
74 83
          "maxLength": 64,
75 84
          "type": "string"
76 85
        },
77 86
        "summary": {
78 87
          "description": "One short line on what a tab of it shows, for choosing it.",
79 88
          "maxGraphemes": 100,
80 89
          "maxLength": 1000,
81 90
          "type": "string"
82 91
        },
83 92
        "title": {
84 93
          "maxGraphemes": 64,
85 94
          "maxLength": 640,
86 95
          "type": "string"
87 96
        },
88 97
        "writes": {
89 98
          "description": "The collections it may write for the viewer, in their account or one of the group's spaces.",
90 99
          "items": {
91 100
            "format": "nsid",
92 101
            "type": "string"
93 102
          },
94 103
          "maxLength": 50,
95 104
          "type": "array"
96 105
        }
97 106
      },
98 107
      "required": [
99 108
        "slug"
100 109
      ],
101 110
      "type": "object"
102 111
    },
103 112
    "label": {
104 113
      "properties": {
105 114
        "action": {
106 115
          "description": "For that write alone.",
107 116
          "knownValues": [
108 117
            "create",
109 118
            "update",
110 119
            "delete"
111 120
          ],
112 121
          "type": "string"
113 122
        },
114 123
        "nsid": {
115 124
          "description": "A record kind it writes, or a method it calls.",
116 125
          "format": "nsid",
117 126
          "type": "string"
118 127
        },
119 128
        "text": {
120 129
          "maxGraphemes": 80,
121 130
          "maxLength": 300,
122 131
          "type": "string"
123 132
        }
124 133
      },
125 134
      "required": [
126 135
        "nsid",
127 136
        "text"
128 137
      ],
129 138
      "type": "object"
130 139
    },
131 140
    "main": {
132 141
      "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.",
133 142
      "key": "any",
134 143
      "record": {
135 144
        "properties": {
136 145
          "createdAt": {
137 146
            "format": "datetime",
138 147
            "type": "string"
139 148
          },
140 149
          "description": {
141 150
            "description": "One line saying what it is and when to use it; what an agent matches a request against.",
142 151
            "maxGraphemes": 300,
143 152
            "maxLength": 3000,
144 153
            "type": "string"
145 154
          },
146 155
          "entry": {
147 156
            "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.",
148 157
            "ref": "#entry",
149 158
            "type": "ref"
150 159
          },
151 160
          "guide": {
152 161
            "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.",
153 162
            "maxLength": 50000,
154 163
            "type": "string"
155 164
          },
156 165
          "html": {
157 166
            "description": "The page: a whole HTML document, drawn in a sandboxed frame with the site kit in front of it.",
158 167
            "maxLength": 200000,
159 168
            "type": "string"
160 169
          },
161 170
          "name": {
162 171
            "description": "What a site and an agent call it: lowercase letters, digits and dashes. The same as the record key.",
163 172
            "maxLength": 64,
164 173
            "type": "string"
165 174
          },
166 175
          "preview": {
167 176
            "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.",
168 177
            "maxLength": 20000,
169 178
            "type": "string"
170 179
          }
171 180
        },
172 181
        "required": [
173 182
          "name",
174 183
          "description",
175 184
          "guide",
176 185
          "html",
177 186
          "createdAt"
178 187
        ],
179 188
        "type": "object"
180 189
      },
181 190
      "type": "record"
182 191
    },
183 192
    "pick": {
184 193
      "properties": {
185 194
        "label": {
186 195
          "maxGraphemes": 64,
187 196
          "maxLength": 640,
188 197
          "type": "string"
189 198
        },
199 +
        "link": {
200 +
          "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 +
          "maxGraphemes": 64,
202 +
          "maxLength": 640,
203 +
          "type": "string"
204 +
        },
190 205
        "new": {
191 206
          "description": "Making a new place of its own instead, from Add a tab: a space of this type, readable by everyone or some roles.",
192 207
          "ref": "#pickNew",
193 208
          "type": "ref"
194 209
        },
195 210
        "none": {
196 211
          "maxGraphemes": 64,
197 212
          "maxLength": 640,
198 213
          "type": "string"
199 214
        }
200 215
      },
201 216
      "required": [
202 217
        "label"
203 218
      ],
204 219
      "type": "object"
205 220
    },
206 221
    "pickNew": {
207 222
      "properties": {
208 223
        "in": {
209 224
          "description": "The type of space to make.",
210 225
          "format": "nsid",
211 226
          "type": "string"
212 227
        },
213 228
        "label": {
214 229
          "maxGraphemes": 60,
215 230
          "maxLength": 300,
216 231
          "type": "string"
217 232
        }
218 233
      },
219 234
      "required": [
220 235
        "label",
221 236
        "in"
222 237
      ],
223 238
      "type": "object"
224 239
    }
225 240
  },
226 241
  "id": "fyi.opensocial.template",
227 242
  "lexicon": 1
228 243
}

Compare Other Versions

Lexicon Garden

@