fyi.atstore.listing.detail

atstore.fyi

Schema Diff

+5 -1

From

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

To

CID
bafyreics2gap553...
Indexed At
2026-05-02 07:46 UTC
View this version

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.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" }

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

Compare Other Versions

Lexicon Garden

@