at.happyproto.server.listDomains

happyproto.at

Schema Diff

+16 -0

From

CID
bafyreie7c7tu2ef...
Indexed At
2026-10-28 22:19 UTC
View this version

To

CID
bafyreidkbr6wfxs...
Indexed At
2026-10-29 15:52 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "at.happyproto.server.listDomains:output.requestedPrimary" }
  • AddedEdge AddedEdge { src: "at.happyproto.server.listDomains:output", tgt: "at.happyproto.server.listDomains:output.requestedPrimary", kind: "prop", name: Some("requestedPrimary") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "at.happyproto.server.listDomains:output.requestedPrimary" }

Additional Notes

  • Non-breaking: AddedEdge { src: "at.happyproto.server.listDomains:output", tgt: "at.happyproto.server.listDomains:output.requestedPrimary", kind: "prop", name: Some("requestedPrimary") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "altRecord": {
5 5
      "properties": {
6 6
        "type": {
7 7
          "description": "A.",
8 8
          "type": "string"
9 9
        },
10 10
        "value": {
11 11
          "description": "The instance host's public IPv4.",
12 12
          "type": "string"
13 13
        }
14 14
      },
15 15
      "required": [
16 16
        "type",
17 17
        "value"
18 18
      ],
19 19
      "type": "object"
20 20
    },
21 21
    "checks": {
22 22
      "properties": {
23 23
        "checkedAt": {
24 24
          "description": "When the check ran.",
25 25
          "type": "string"
26 26
        },
27 27
        "ownership": {
28 28
          "description": "Whether the TXT record carries this claim's token.",
29 29
          "knownValues": [
30 30
            "ok",
31 31
            "missing",
32 32
            "error"
33 33
          ],
34 34
          "type": "string"
35 35
        },
36 36
        "pointing": {
37 37
          "description": "Whether the hostname resolves to the instance's host. Absent when the check didn't get that far, such as when the TXT record was missing.",
38 38
          "knownValues": [
39 39
            "ok",
40 40
            "elsewhere",
41 41
            "error"
42 42
          ],
43 43
          "type": "string"
44 44
        }
45 45
      },
46 46
      "required": [
47 47
        "ownership",
48 48
        "checkedAt"
49 49
      ],
50 50
      "type": "object"
51 51
    },
52 52
    "domain": {
53 53
      "description": "A custom domain on one of the caller's instances.",
54 54
      "properties": {
55 55
        "checks": {
56 56
          "description": "The latest DNS check. Absent until the first check has run.",
57 57
          "ref": "#checks",
58 58
          "type": "ref"
59 59
        },
60 60
        "createdAt": {
61 61
          "description": "When the domain was added.",
62 62
          "type": "string"
63 63
        },
64 64
        "expiresAt": {
65 65
          "description": "When a pending claim expires if it is never verified. Absent once verified.",
66 66
          "type": "string"
67 67
        },
68 68
        "hostname": {
69 69
          "description": "The hostname, lowercase, internationalized names in punycode.",
70 70
          "type": "string"
71 71
        },
72 72
        "id": {
73 73
          "description": "The domain's UUID.",
74 74
          "type": "string"
75 75
        },
76 76
        "lapsesAt": {
77 77
          "description": "When HappyProto stops serving the domain if its TXT record stays missing. Absent while the record is present.",
78 78
          "type": "string"
79 79
        },
80 80
        "primary": {
81 81
          "description": "Whether this is the instance's primary domain, the one its PUBLIC_URL follows.",
82 82
          "type": "boolean"
83 83
        },
84 84
        "records": {
85 85
          "description": "The DNS records the customer publishes: the TXT that proves ownership, then the CNAME that points the hostname at the instance.",
86 86
          "items": {
87 87
            "ref": "#record",
88 88
            "type": "ref"
89 89
          },
90 90
          "type": "array"
91 91
        },
92 92
        "serving": {
93 93
          "description": "Whether the domain actually works: off until it is verified, issuing while its certificate is ordered, live once it serves over HTTPS.",
94 94
          "knownValues": [
95 95
            "routing",
96 96
            "issuing",
97 97
            "live",
98 98
            "failed",
99 99
            "off"
100 100
          ],
101 101
          "type": "string"
102 102
        },
103 103
        "state": {
104 104
          "description": "pending: waiting for the DNS records. verified: proven and served. lapsed: the TXT record went missing, and HappyProto stopped serving it; it recovers if the record comes back before expiresAt.",
105 105
          "knownValues": [
106 106
            "pending",
107 107
            "verified",
108 108
            "lapsed"
109 109
          ],
110 110
          "type": "string"
111 111
        },
112 112
        "verifiedAt": {
113 113
          "description": "When the domain was first verified.",
114 114
          "type": "string"
115 115
        }
116 116
      },
117 117
      "required": [
118 118
        "id",
119 119
        "hostname",
120 120
        "state",
121 121
        "primary",
122 122
        "records",
123 123
        "serving",
124 124
        "createdAt"
125 125
      ],
126 126
      "type": "object"
127 127
    },
128 128
    "main": {
129 129
      "description": "The domains of one of the caller's instances: its platform subdomain and any custom domain. Customers only.",
130 130
      "errors": [
131 131
        {
132 132
          "description": "This endpoint requires an authenticated caller.",
133 133
          "name": "AuthRequired"
134 134
        },
135 135
        {
136 136
          "description": "The caller is not a HappyProto customer, or the provisioner refused them.",
137 137
          "name": "Forbidden"
138 138
        },
139 139
        {
140 140
          "description": "instanceId is not a UUID.",
141 141
          "name": "InvalidRequest"
142 142
        },
143 143
        {
144 144
          "description": "No such instance or domain, or it is not the caller's. The cases are indistinguishable.",
145 145
          "name": "NotFound"
146 146
        },
147 147
        {
148 148
          "description": "Custom domains are not switched on yet.",
149 149
          "name": "NotAvailable"
150 150
        },
151 151
        {
152 152
          "description": "Passed through from the provisioner.",
153 153
          "name": "InvalidSlug"
154 154
        },
155 155
        {
156 156
          "description": "Passed through from the provisioner.",
157 157
          "name": "SlugTaken"
158 158
        },
159 159
        {
160 160
          "description": "Passed through from the provisioner.",
161 161
          "name": "NotEntitled"
162 162
        },
163 163
        {
164 164
          "description": "Passed through from the provisioner.",
165 165
          "name": "InstanceLimit"
166 166
        },
167 167
        {
168 168
          "description": "Passed through from the provisioner.",
169 169
          "name": "NoCapacity"
170 170
        },
171 171
        {
172 172
          "description": "Passed through from the provisioner: the instance is already changing, or a request with this idempotencyKey is still running.",
173 173
          "name": "OperationInProgress"
174 174
        },
175 175
        {
176 176
          "description": "Passed through from the provisioner.",
177 177
          "name": "InvalidHostname"
178 178
        },
179 179
        {
180 180
          "description": "Passed through from the provisioner.",
181 181
          "name": "PlatformHostname"
182 182
        },
183 183
        {
184 184
          "description": "Passed through from the provisioner.",
185 185
          "name": "DomainExists"
186 186
        },
187 187
        {
188 188
          "description": "Passed through from the provisioner.",
189 189
          "name": "DomainLimit"
190 190
        },
191 191
        {
192 192
          "description": "Passed through from the provisioner.",
193 193
          "name": "TooSoon"
194 194
        },
195 195
        {
196 196
          "description": "Passed through from the provisioner.",
197 197
          "name": "DomainIsPrimary"
198 198
        },
199 199
        {
200 +
          "description": "Passed through from the provisioner.",
201 +
          "name": "NotVerified"
202 +
        },
203 +
        {
204 +
          "description": "Passed through from the provisioner.",
205 +
          "name": "CertificateNotReady"
206 +
        },
207 +
        {
208 +
          "description": "Passed through from the provisioner.",
209 +
          "name": "VersionTooOld"
210 +
        },
211 +
        {
200 212
          "description": "The provisioner is unreachable, not configured, or answered with an error it does not explain to callers, or the job could not be started.",
201 213
          "name": "Upstream"
202 214
        }
203 215
      ],
204 216
      "output": {
205 217
        "encoding": "application/json",
206 218
        "schema": {
207 219
          "properties": {
208 220
            "domains": {
209 221
              "description": "The custom domains, at most one today.",
210 222
              "items": {
211 223
                "ref": "#domain",
212 224
                "type": "ref"
213 225
              },
214 226
              "type": "array"
215 227
            },
216 228
            "platform": {
217 229
              "ref": "#platformDomain",
218 230
              "type": "ref"
231 +
            },
232 +
            "requestedPrimary": {
233 +
              "description": "The hostname the primary is switching to, while a switch is in flight. Absent otherwise. The primary flags keep describing the live primary until the instance has restarted onto it.",
234 +
              "type": "string"
219 235
            }
220 236
          },
221 237
          "required": [
222 238
            "platform",
223 239
            "domains"
224 240
          ],
225 241
          "type": "object"
226 242
        }
227 243
      },
228 244
      "parameters": {
229 245
        "properties": {
230 246
          "instanceId": {
231 247
            "description": "The instance's UUID.",
232 248
            "type": "string"
233 249
          }
234 250
        },
235 251
        "required": [
236 252
          "instanceId"
237 253
        ],
238 254
        "type": "params"
239 255
      },
240 256
      "type": "query"
241 257
    },
242 258
    "platformDomain": {
243 259
      "properties": {
244 260
        "hostname": {
245 261
          "description": "The instance's own <slug>.hpy.at hostname, which always serves it.",
246 262
          "type": "string"
247 263
        },
248 264
        "primary": {
249 265
          "description": "Whether it is the instance's primary domain.",
250 266
          "type": "boolean"
251 267
        }
252 268
      },
253 269
      "required": [
254 270
        "hostname",
255 271
        "primary"
256 272
      ],
257 273
      "type": "object"
258 274
    },
259 275
    "record": {
260 276
      "properties": {
261 277
        "alt": {
262 278
          "description": "For an apex name, which cannot hold a CNAME: the A record to publish instead. Absent when the instance's host has no public IPv4.",
263 279
          "ref": "#altRecord",
264 280
          "type": "ref"
265 281
        },
266 282
        "name": {
267 283
          "description": "The record's name.",
268 284
          "type": "string"
269 285
        },
270 286
        "type": {
271 287
          "description": "TXT or CNAME.",
272 288
          "type": "string"
273 289
        },
274 290
        "value": {
275 291
          "description": "The record's value.",
276 292
          "type": "string"
277 293
        }
278 294
      },
279 295
      "required": [
280 296
        "type",
281 297
        "name",
282 298
        "value"
283 299
      ],
284 300
      "type": "object"
285 301
    }
286 302
  },
287 303
  "id": "at.happyproto.server.listDomains",
288 304
  "lexicon": 1
289 305
}

Compare Other Versions

Lexicon Garden

@