fyi.atstore.listing.detail

atstore.fyi

Schema Diff

+3 -0

From

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

To

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

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 0 non-breaking changes.

Breaking Changes (1)
  • 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

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

Compare Other Versions

Lexicon Garden

@