{
"id": "place.wisp.v2.domains",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"domain",
"registration",
"createdAt",
"updatedAt"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 3,
"description": "Lowercase FQDN for this registration (for example, alice.wisp.place or example.com)."
},
"siteRkey": {
"type": "string",
"format": "record-key",
"description": "Optional place.wisp.fs record key currently mapped to this domain."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"updatedAt": {
"type": "string",
"format": "datetime"
},
"registration": {
"refs": [
"#wispRegistration",
"#customRegistration"
],
"type": "union"
}
}
},
"description": "Domain registration metadata for wisp.place subdomains and custom domains."
},
"verification": {
"type": "object",
"required": [
"status",
"method"
],
"properties": {
"method": {
"enum": [
"txt-did-v1"
],
"type": "string"
},
"status": {
"enum": [
"pending",
"verified",
"failed"
],
"type": "string"
},
"lastError": {
"type": "string",
"maxLength": 1000
},
"verifiedAt": {
"type": "string",
"format": "datetime"
},
"lastCheckedAt": {
"type": "string",
"format": "datetime"
}
},
"description": "Latest verification state for a custom domain."
},
"wispRegistration": {
"type": "object",
"required": [
"kind",
"handle"
],
"properties": {
"kind": {
"type": "string",
"const": "wisp"
},
"handle": {
"type": "string",
"maxLength": 63,
"minLength": 3,
"description": "Subdomain label only (for example, alice)."
}
},
"description": "Registration for a first-party subdomain under the wisp.place base host."
},
"customRegistration": {
"type": "object",
"required": [
"kind",
"challengeId",
"verification"
],
"properties": {
"kind": {
"type": "string",
"const": "custom"
},
"challengeId": {
"type": "string",
"maxLength": 64,
"minLength": 8,
"description": "Challenge identifier used to derive DNS setup instructions."
},
"verification": {
"ref": "#verification",
"type": "ref"
}
},
"description": "Registration metadata for a custom domain."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}