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