fyi.atstore.listing.detail

atstore.fyi

Schema Diff

+0 -1

From

CID
bafyreico3oumjzo...
Indexed At
2026-04-23 03:48 UTC
View this version

To

CID
bafyreietn3ivreh...
Indexed At
2026-04-27 18:13 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@