{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/dnsmint-com/json-schema/dnsmint-com-register-ip-request-schema.json",
  "title": "RegisterIpRequest",
  "description": "Exactly one of `ip` or `target`. Setting `ip` on a hostname that follows a target takes it off that target.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/dnsmint-com-api-openapi.json#/components/schemas/RegisterIpRequest",
  "type": "object",
  "required": [],
  "properties": {
    "ip": {
      "type": "string",
      "description": "An IPv4 or IPv6 address, public or private. Private and reserved ranges are accepted on every plan. A hostname keeps the address class it was minted with. Repointing within a class is free, including between A and AAAA; crossing from public to private or private to public returns 409. This blocks DNS rebinding, where one origin is public first, to deliver a payload under a trusted certificate, and private second, to read a response from inside the visitor's network. Release the hostname and mint a new one for the other class."
    },
    "target": {
      "type": "string",
      "description": "A platform endpoint to follow instead of an address. Send this or `ip`, never both. We resolve it and publish ordinary A and AAAA records, refreshed within the target's own TTL, so the name never carries a CNAME and every record you set on the hostname keeps working. The hostname keeps the address class it was minted with, and that is re-checked every time we refresh rather than only when you set it: a target that starts answering with a private address is refused and the hostname stays on its last public one. Setting `ip` takes the hostname back off its target."
    }
  }
}