fyi.atstore.listing.detail
Schema Diff
+5 -1
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 0 non-breaking changes.
Breaking Changes (4)
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "fyi.atstore.listing.detail:body", src: "fyi.atstore.listing.detail:body", tgt: "fyi.atstore.listing.detail:body.heroImage", kind: "prop", name: Some("heroImage") }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.atstore.listing.detail#link.url", sort: "maxLength", value: "2048" }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.atstore.listing.detail#link.type", sort: "maxLength", value: "32" }
- ConstraintTightened ConstraintTightened { vertex_id: "fyi.atstore.listing.detail#link.type", sort: "knownValues", old_value: "[\"privacy\",\"terms\",\"support\",\"contact\",\"docs\",\"blog\",\"changelog\",\"source\",\"status\",\"other\"]", new_value: "[\"privacy\",\"terms\",\"support\",\"contact\",\"docs\",\"blog\",\"changelog\",\"source\",\"status\",\"community\",\"donate\",\"license\",\"other\"]" }
Migration Guidance
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.atstore.listing.detail#link.type", sort: "maxLength", value: "32" }
- ConstraintTightened ConstraintTightened { vertex_id: "fyi.atstore.listing.detail#link.type", sort: "knownValues", old_value: "[\"privacy\",\"terms\",\"support\",\"contact\",\"docs\",\"blog\",\"changelog\",\"source\",\"status\",\"other\"]", new_value: "[\"privacy\",\"terms\",\"support\",\"contact\",\"docs\",\"blog\",\"changelog\",\"source\",\"status\",\"community\",\"donate\",\"license\",\"other\"]" }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.atstore.listing.detail#link.url", sort: "maxLength", value: "2048" }
Additional Notes
- Breaking: RequiredEdgeRemoved { vertex_id: "fyi.atstore.listing.detail:body", src: "fyi.atstore.listing.detail:body", tgt: "fyi.atstore.listing.detail:body.heroImage", kind: "prop", name: Some("heroImage") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"link": {
5
5
"properties": {
6
6
"label": {
7
7
"description": "Optional human-readable label, especially useful when type is 'other'.",
8
8
"maxGraphemes": 50,
9
9
"maxLength": 100,
10
10
"type": "string"
11
11
},
12
12
"type": {
13
13
"description": "The kind of link.",
14
14
"knownValues": [
15
15
"privacy",
16
16
"terms",
17
17
"support",
18
18
"contact",
19
19
"docs",
20
20
"blog",
21
21
"changelog",
22
22
"source",
23
23
"status",
24
+
"community",
25
+
"donate",
26
+
"license",
24
27
"other"
25
28
],
29
+
"maxLength": 32,
26
30
"type": "string"
27
31
},
28
32
"url": {
29
33
"description": "The destination URL.",
30
34
"format": "uri",
35
+
"maxLength": 2048,
31
36
"type": "string"
32
37
}
33
38
},
34
39
"required": [
35
40
"type",
36
41
"url"
37
42
],
38
43
"type": "object"
39
44
},
40
45
"main": {
41
46
"description": "Public protocol or app listing in the AT Store directory. Images are stored as repo blobs (Kitchen-style); the web app caches HTTPS URLs in Postgres separately.",
42
47
"key": "tid",
43
48
"record": {
44
49
"properties": {
45
50
"appTags": {
46
51
"items": {
47
52
"maxLength": 96,
48
53
"type": "string"
49
54
},
50
55
"maxLength": 64,
51
56
"type": "array"
52
57
},
53
58
"categorySlug": {
54
59
"description": "Browse category keys (e.g. protocol/pds). First entry is the primary category for legacy surfaces.",
55
60
"items": {
56
61
"maxLength": 256,
57
62
"type": "string"
58
63
},
59
64
"maxLength": 32,
60
65
"minLength": 1,
61
66
"type": "array"
62
67
},
63
68
"createdAt": {
64
69
"format": "datetime",
65
70
"type": "string"
66
71
},
67
72
"description": {
68
73
"maxLength": 20000,
69
74
"type": "string"
70
75
},
71
76
"externalUrl": {
72
77
"description": "Primary product or project URL.",
73
78
"format": "uri",
74
79
"maxLength": 2048,
75
80
"type": "string"
76
81
},
77
82
"heroImage": {
78
83
"accept": [
79
84
"image/png",
80
85
"image/jpeg",
81
86
"image/webp",
82
87
"image/gif",
83
88
"image/svg+xml"
84
89
],
85
90
"description": "Hero / cover image blob.",
86
91
"maxSize": 12000000,
87
92
"type": "blob"
88
93
},
89
94
"icon": {
90
95
"accept": [
91
96
"image/png",
92
97
"image/jpeg",
93
98
"image/webp",
94
99
"image/gif",
95
100
"image/svg+xml"
96
101
],
97
102
"description": "Square / app icon (uploaded to repo via com.atproto.repo.uploadBlob).",
98
103
"maxSize": 2000000,
99
104
"type": "blob"
100
105
},
101
106
"links": {
102
107
"description": "Relevant links for the app, including trust/compliance, support, and project resources.",
103
108
"items": {
104
109
"ref": "#link",
105
110
"type": "ref"
106
111
},
107
112
"maxLength": 12,
108
113
"type": "array"
109
114
},
110
115
"migratedFromAtUri": {
111
116
"description": "When this listing.detail record supersedes a prior record in another repo (e.g. moved from the AT Store publisher to a product owner PDS), the at:// URI of that prior fyi.atstore.listing.detail record.",
112
117
"format": "at-uri",
113
118
"maxLength": 8192,
114
119
"type": "string"
115
120
},
116
121
"name": {
117
122
"maxLength": 640,
118
123
"type": "string"
119
124
},
120
125
"productAccountDid": {
121
126
"description": "Bluesky DID for the product, app, or tool (not the AT Store publisher). Handle is resolved and stored in Postgres only.",
122
127
"maxLength": 2048,
123
128
"type": "string"
124
129
},
125
130
"screenshots": {
126
131
"items": {
127
132
"accept": [
128
133
"image/png",
129
134
"image/jpeg",
130
135
"image/webp",
131
136
"image/gif",
132
137
"image/svg+xml"
133
138
],
134
139
"maxSize": 12000000,
135
140
"type": "blob"
136
141
},
137
142
"maxLength": 20,
138
143
"type": "array"
139
144
},
140
145
"slug": {
141
146
"description": "Stable URL slug; unique within the publishing account.",
142
147
"maxLength": 512,
143
148
"minLength": 1,
144
149
"type": "string"
145
150
},
146
151
"tagline": {
147
152
"maxLength": 300,
148
153
"type": "string"
149
154
},
150
155
"updatedAt": {
151
156
"format": "datetime",
152
157
"type": "string"
153
158
}
154
159
},
155
160
"required": [
156
161
"slug",
157
162
"name",
158
163
"tagline",
159
164
"externalUrl",
160
165
"icon",
161
-
"heroImage",
162
166
"categorySlug",
163
167
"createdAt",
164
168
"updatedAt"
165
169
],
166
170
"type": "object"
167
171
},
168
172
"type": "record"
169
173
}
170
174
},
171
175
"id": "fyi.atstore.listing.detail",
172
176
"lexicon": 1
173
177
}