fyi.atstore.listing.detail

atstore.fyi

Schema Diff

+2 -0

From

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

To

CID
bafyreib2rqlirrk...
Indexed At
2026-05-02 04:06 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 0 non-breaking changes.

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

Compare Other Versions

Lexicon Garden

@