space.highport.manage.reserveDomain

lexicons.highport.space

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Reserve a name directly under a delegation-enabled base for another identity. The name answers /.well-known/atproto-did with the subject before the subject has published anything, and the subject may then publish a site there. The caller must be the base's registered identity. An unproven claim on the name, held by any identity, is replaced. Reserving a name again for the subject that already holds it is answered with the reservation as it stands, writes nothing, and does not count against maxNames, so a retry is safe. A reservation has no expiry: it is held for as long as the base is.",
      "errors": [
        {
          "description": "Not a syntactically valid, non-reserved domain.",
          "name": "InvalidDomain"
        },
        {
          "description": "The hostname or the subject is on the operator denylist.",
          "name": "DomainDenied"
        },
        {
          "description": "The name is not under a delegation-enabled base whose verified or active registration belongs to the caller.",
          "name": "NotBaseOwner"
        },
        {
          "description": "The name is held and cannot be reserved: a proven registration of it exists, including one the base owner made the ordinary way, a live reservation for a different subject, or a suspended one; an unproven claim on it is itself a base carrying a delegation or a certificate grant; or it is released but still carries a delegation or a grant, such as one whose wildcard is still being retired. Release it, or wait for the retirement, first.",
          "name": "DomainTaken"
        },
        {
          "description": "The base's wildcard has not been shown to route to this service: its delegation probe has not passed yet, or the base's routing has lapsed. The message names the probe hostname and the *.<base> record to publish or restore. The name being reserved is never resolved.",
          "name": "DelegationNotVerified"
        },
        {
          "description": "The subject is not a well-formed did:plc or did:web, or is a did:web rooted at the hostname being reserved, or a genesisOp was given that does not prove the subject. The message says which rule failed.",
          "name": "InvalidSubject"
        },
        {
          "description": "The name is more than one label under the base. A wildcard covers exactly one label, so a deeper name could never complete a handshake.",
          "name": "DelegatedNameTooDeep"
        },
        {
          "description": "The base already holds its maxNames reservations. Never returned for a name the subject already holds.",
          "name": "DelegationQuotaExceeded"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "genesisOp": {
              "description": "Optional proof for a did:plc subject: its signed genesis operation, as submitted to a PLC directory. Verified offline, without resolving anything. The call is refused with InvalidSubject unless the operation is a genesis operation (prev is null) that hashes to the subject, is signed by one of its own rotation keys, and lists at://<hostname> in alsoKnownAs. A subject that is not a did:plc cannot carry one.",
              "type": "unknown"
            },
            "hostname": {
              "description": "A name exactly one label under a delegation-enabled base the caller owns.",
              "maxLength": 253,
              "type": "string"
            },
            "subject": {
              "description": "The identity the name is reserved for. Without genesisOp it is checked for syntax only: it need not resolve, and its DID document need not name the hostname yet.",
              "format": "did",
              "type": "string"
            }
          },
          "required": [
            "hostname",
            "subject"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "hostname": {
              "type": "string"
            },
            "status": {
              "ref": "space.highport.defs#domainStatus",
              "type": "ref"
            },
            "subject": {
              "format": "did",
              "type": "string"
            }
          },
          "required": [
            "hostname",
            "status",
            "subject"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "space.highport.manage.reserveDomain",
  "lexicon": 1
}

Validate Record

Validate a record against space.highport.manage.reserveDomain

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:ciygg5hma4q7ah2kxaszkyob
CID
bafyreibzjqnehgxdmtrkmmn3ih2gcj5l3u2wafnzk63rc4acimqek4c3cy
Indexed At
2026-09-17 13:00 UTC
AT-URI
at://did:plc:ciygg5hma4q7ah2kxaszkyob/com.atproto.lexicon.schema/space.highport.manage.reserveDomain

Version History (4 versions)

Referenced Schemas (1)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Register a domain to the caller, or to a space the caller is the authority of, and get the DNS records needed to prove ownership and route traffic.

  • Make a registered domain a delegation base, so its owner can reserve names directly under it for other identities. Returns the wildcard record that routes those names. The caller must own the base, and it must be verifi…

  • Names reserved under one of the caller's delegation bases, with who each is reserved for and whether it routes. The base's probe is not included.

  • Release a name reserved under one of the caller's delegation bases. Bard stops answering for it and stops authorizing it for TLS, and any site the subject published there stops serving.

  • Stop a base handing out names: remove its probe and clear its delegation state. Refused while any reservation remains; release each one with releaseReservation. A certificate grant on the base is left in place.

Lexicon Garden

@