{"openapi":"3.1.0","info":{"title":"Domains.Kred API","description":"The Domains API provides a complete interface for domain registration, DNS management, and domain-based agent identity.\n\n## Authentication\n\nAll requests (except public endpoints) require a Bearer token:\n\n```\nAuthorization: Bearer your_api_key_here\n```\n\nVerify your key and check your current quota with `GET /auth/me`.\n\n## Key Concepts\n\n**Contacts** — Create a registrant contact (`POST /contacts`) before registering a domain.\nContacts store WHOIS identity information and are required for registration, renewal, and transfer.\n\n**Credits** — Domain registration costs API credits. Check your balance (`GET /credits/balance`)\nand the current rate (`GET /credits/rate`).\n\n**DNS Zones** — Registration does not automatically create a DNS zone. Create one with\n`POST /dns/zone`, then add records with `POST /dns/record`.\n\n**Agent Identity** — Domains can hold identity protocol records (AID, ANS, MCP-I, DNSid)\nthat allow AI agents to prove and verify their identity via DNS.\n\n**Transparency Log** — All domain operations are recorded in an append-only log accessible\nat `GET /log/sth`.\n\n## MCP Server\n\nAI agents can use this API directly via MCP (Streamable HTTP): `https://api.domains.kred/mcp`.\nAuthenticate with the same Bearer API key via the `Authorization` header.\n\n```\nclaude mcp add --transport http domains-kred https://api.domains.kred/mcp --header \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n## Recipes\n\nStep-by-step workflow guides are available in the **Recipes** section (see the sidebar).","version":"0.99.1"},"paths":{"/plan/status":{"get":{"tags":["Plan"],"summary":"Plan status for this API set","description":"Returns the user's tier, quota allowance, current quota usage, and billing\nperiod dates for this api_set. Quota usage is read live from the MySQL quota DB.","operationId":"plan_status_plan_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanStatusResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/limits":{"get":{"tags":["Plan"],"summary":"Effective limits for this API set","description":"Returns the effective rate limits, quota allowance, and per-endpoint credit\ncosts for this api_set, resolved against the authenticated user's tier.","operationId":"plan_limits_plan_limits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanLimitsResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/credits":{"get":{"tags":["Plan"],"summary":"Credit balance for this API set","description":"Current API token balance for this api_set (a balance, not a rate). Same value as GET /credits/balance, which is canonical. For the USD conversion rate use GET /credits/rate.","operationId":"plan_credits_plan_credits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanCreditsResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/topup/packages":{"get":{"tags":["Plan"],"summary":"Available credit top-up packages","operationId":"topup_packages_plan_topup_packages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupPackagesResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/topup":{"post":{"tags":["Plan"],"summary":"Create a Stripe Checkout Session for credit top-up","operationId":"topup_plan_topup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/topup/setup-auto-recharge":{"post":{"tags":["Plan"],"summary":"Configure auto-recharge amount","operationId":"setup_auto_recharge_plan_topup_setup_auto_recharge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupAutoRechargeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupAutoRechargeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/topup/billing-portal":{"post":{"tags":["Plan"],"summary":"Get Stripe Customer Portal URL","operationId":"billing_portal_plan_topup_billing_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPortalResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/topup/payment-method":{"get":{"tags":["Plan"],"summary":"Get stored payment method","operationId":"payment_method_plan_topup_payment_method_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/plan/topup/charges":{"get":{"tags":["Plan"],"summary":"Get charge history","operationId":"charges_plan_topup_charges_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChargeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/check":{"post":{"tags":["Domains"],"summary":"Check domain availability","description":"Check whether a domain is available for registration and retrieve its price. Uses POST (no body) for historical parity with the upstream registry. Returns `available: bool` and, for premium names, `premium: bool`.","operationId":"api_domain_check_domains__domain__check_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/price":{"get":{"tags":["Domains"],"summary":"Get domain price","description":"Get the registration price for a domain. `price_decimal` is the USD amount you will be charged; `credits_required` is the cost in API tokens; `usd_per_credit` lets you render a USD total without a second call.","operationId":"api_domain_price_domains__domain__price_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"period","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":1,"title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainPriceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/status":{"get":{"tags":["Domains"],"summary":"Get domain status","description":"Retrieve registration status, expiry date, nameservers, and contact information for a domain.","operationId":"api_domain_status_domains__domain__status_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/register":{"post":{"tags":["Domains"],"summary":"Register a domain","description":"Register an available domain. **Prerequisite:** a registrant contact created via `create_contact` — pass its id as `registrant`. The domain must be available (see `check_domain_availability`). Tip: call the register **preview** endpoint first to validate the payload and see the cost without spending credits. Checks availability, deducts API tokens, and submits to the upstream registry. Pass `X-Admin-Token` to waive cost.","operationId":"api_domain_register_domains__domain__register_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRegisterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRegisterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/register/preview":{"post":{"tags":["Domains"],"summary":"Preview a domain registration","description":"Validate a registration **without spending credits or registering**. Checks availability, verifies the registrant contact exists, prices the term, and reads your API token balance, then reports whether the registration would succeed and what it would cost. Side-effect free: never registers, never deducts tokens, never triggers a recharge. Call this before `register_domain` to avoid a paid-then-failed attempt.","operationId":"api_domain_register_preview_domains__domain__register_preview_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRegisterPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRegisterPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/renew":{"post":{"tags":["Domains"],"summary":"Renew a domain","description":"Extend the registration period for a domain you own. The current expiration year must be supplied.","operationId":"api_domain_renew_domains__domain__renew_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRenewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRenewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/transfer":{"post":{"tags":["Domains"],"summary":"Transfer a domain","description":"Transfer a domain from another registrar using its EPP/authorization code.","operationId":"api_domain_transfer_domains__domain__transfer_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainTransferRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainTransferResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}":{"delete":{"tags":["Domains"],"summary":"Delete a domain","description":"Remove a domain registration.","operationId":"api_domain_delete_domains__domain__delete","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/modify":{"post":{"tags":["Domains"],"summary":"Modify a domain","description":"Update nameservers or contact records for a registered domain.","operationId":"api_domain_modify_domains__domain__modify_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainModifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericApiResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/token":{"post":{"tags":["Domains"],"summary":"Mint domain token","description":"Mint an NFT token for an existing registered domain.","operationId":"api_domain_token_domains__domain__token_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MintTokenRequest","default":{}}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenSyncResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains":{"get":{"tags":["Domains"],"summary":"List domains","description":"List all domains registered under your account. Supports cursor-based pagination via `starting_after`. Cursor pagination: pass the last id as `starting_after`; omit it for the first page.","operationId":"api_domains_list_domains_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/contacts":{"get":{"tags":["Contacts"],"summary":"List contacts","description":"List WHOIS registrant contacts with optional filtering by email, name, or organization.","operationId":"api_contacts_list_contacts_get","parameters":[{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},{"name":"first_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"}},{"name":"last_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"}},{"name":"organization","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Contacts"],"summary":"Create contact","description":"Create a new WHOIS registrant contact. At least one contact must exist before registering a domain.","operationId":"api_contact_create_contacts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/contacts/{contact_id}":{"get":{"tags":["Contacts"],"summary":"Get contact","description":"Retrieve a specific registrant contact by its ID.","operationId":"api_contact_get_contacts__contact_id__get","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","title":"Contact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Contacts"],"summary":"Update contact","description":"Update an existing registrant contact.","operationId":"api_contact_update_contacts__contact_id__post","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","title":"Contact Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Contacts"],"summary":"Delete contact","description":"Remove a registrant contact. Contacts in use by registered domains cannot be deleted.","operationId":"api_contact_delete_contacts__contact_id__delete","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","title":"Contact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/nameservers":{"post":{"tags":["Contacts"],"summary":"Create nameserver","description":"Register a custom nameserver hostname with its IP address(es) (glue record).","operationId":"api_nameserver_create_nameservers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameserverCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameserverCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/nameservers/{nameserver}":{"delete":{"tags":["Contacts"],"summary":"Delete nameserver","description":"Remove a registered custom nameserver (glue record).","operationId":"api_nameserver_delete_nameservers__nameserver__delete","parameters":[{"name":"nameserver","in":"path","required":true,"schema":{"type":"string","title":"Nameserver"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ssl/request":{"post":{"tags":["Account"],"summary":"Request SSL certificate","description":"Request a DV, OV, or EV SSL/TLS certificate for a domain.","operationId":"api_ssl_request_ssl_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SslRequestBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SslRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/account/status":{"get":{"tags":["Account"],"summary":"Get account status","description":"Retrieve your account balance, credit count, and overall account status.","operationId":"api_account_status_account_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountStatusResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/zone":{"post":{"tags":["DNS"],"summary":"Create DNS zone","description":"Create a new DNS zone for a domain. Optionally seed it with an initial A record address.","operationId":"api_dns_zone_create_dns_zone_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsZoneCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsZoneCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/zone/{zone}":{"get":{"tags":["DNS"],"summary":"Get DNS zone","description":"Retrieve zone metadata including serial number, record count, and DNSSEC status.","operationId":"api_dns_zone_get_dns_zone__zone__get","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsZoneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["DNS"],"summary":"Delete DNS zone","description":"Delete a DNS zone and all its records.","operationId":"api_dns_zone_delete_dns_zone__zone__delete","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/zone/{zone}/export":{"get":{"tags":["DNS"],"summary":"Export DNS zone","description":"Export a DNS zone in AXFR (zone transfer) format.","operationId":"api_dns_zone_export_dns_zone__zone__export_get","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsZoneExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/zone/{zone}/records":{"get":{"tags":["DNS"],"summary":"List DNS records","description":"List all DNS records in a zone. Filter by record type (`type`) or name. Some records (e.g. a defaulted SOA) return `content: null`; safe to filter.","operationId":"api_dns_records_list_dns_zone__zone__records_get","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["DNS"],"summary":"Create DNS record","description":"Create a DNS record in an existing zone. The zone must already exist. Use `POST /dns/record` to auto-create the zone if absent.","operationId":"api_dns_record_create_dns_zone__zone__records_post","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/zone/{zone}/records/set":{"post":{"tags":["DNS"],"summary":"Bulk set DNS records","description":"Replace records in bulk for a zone. Sends the full record list to the upstream bulk endpoint.","operationId":"api_dns_records_update_dns_zone__zone__records_set_post","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordsBulkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/zone/{zone}/records/{name}/{record_type}":{"delete":{"tags":["DNS"],"summary":"Delete DNS record","description":"Delete a specific DNS record identified by name and record type.","operationId":"api_dns_record_delete_dns_zone__zone__records__name___record_type__delete","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"record_type","in":"path","required":true,"schema":{"type":"string","title":"Record Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/zone/{zone}/dnssec":{"get":{"tags":["DNS"],"summary":"Get DNSSEC status","description":"Retrieve DNSSEC configuration, signing algorithm, and DS/DNSKEY records for a zone.","operationId":"api_dnssec_get_dns_zone__zone__dnssec_get","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnssecStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["DNS"],"summary":"Enable DNSSEC","description":"Enable DNSSEC on a zone using the specified signing algorithm.","operationId":"api_dnssec_enable_dns_zone__zone__dnssec_post","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnssecEnableRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnssecStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["DNS"],"summary":"Disable DNSSEC","description":"Disable DNSSEC and remove signing keys from a zone.","operationId":"api_dnssec_disable_dns_zone__zone__dnssec_delete","parameters":[{"name":"zone","in":"path","required":true,"schema":{"type":"string","title":"Zone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/resolve/address/{address}":{"get":{"tags":["ENS"],"summary":"Reverse ENS lookup","description":"Resolve a blockchain address to its primary ENS name (reverse lookup).","operationId":"api_ens_resolve_address_ens_resolve_address__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsResolveAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/resolve/{name}":{"get":{"tags":["ENS"],"summary":"Resolve ENS name","description":"Resolve an ENS name to its associated blockchain address for the given coin type.","operationId":"api_ens_resolve_name_ens_resolve__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"coin_type","in":"query","required":false,"schema":{"type":"integer","description":"SLIP-0044 coin type (60=ETH)","default":60,"title":"Coin Type"},"description":"SLIP-0044 coin type (60=ETH)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsResolveNameResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names":{"get":{"tags":["ENS"],"summary":"List ENS names","description":"List all ENS names associated with your account. Supports cursor pagination via `starting_after`.","operationId":"api_ens_names_list_ens_names_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsNamesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["ENS"],"summary":"Create ENS name","description":"Register a new ENS name, optionally setting an initial content hash.","operationId":"api_ens_name_create_ens_names_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsCreateNameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsOperationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names/{name}":{"get":{"tags":["ENS"],"summary":"Get ENS name","description":"Retrieve metadata for a specific ENS name including owner, resolver, and expiry.","operationId":"api_ens_name_get_ens_names__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsNameInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["ENS"],"summary":"Delete ENS name","description":"Remove an ENS name.","operationId":"api_ens_name_delete_ens_names__name__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names/{name}/records":{"get":{"tags":["ENS"],"summary":"Get ENS records","description":"Retrieve all records for an ENS name: ETH address, multi-coin addresses, text records, and content hash.","operationId":"api_ens_records_get_ens_names__name__records_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsFullRecord"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["ENS"],"summary":"Set ENS records","description":"Set multiple ENS records in a single operation: ETH address, multi-coin addresses, text records, and content hash.","operationId":"api_ens_records_set_ens_names__name__records_post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsSetRecordsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsOperationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names/{name}/addresses":{"get":{"tags":["ENS"],"summary":"List ENS addresses","description":"List all coin-type addresses set on an ENS name.","operationId":"api_ens_addresses_get_ens_names__name__addresses_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EnsAddressItem"},"title":"Response Api Ens Addresses Get Ens Names  Name  Addresses Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names/{name}/addresses/{coin_type}":{"get":{"tags":["ENS"],"summary":"Get ENS address","description":"Retrieve the address for a specific SLIP-0044 coin type on an ENS name. ETH is coin type 60.","operationId":"api_ens_address_get_ens_names__name__addresses__coin_type__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"coin_type","in":"path","required":true,"schema":{"type":"integer","title":"Coin Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsAddressItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["ENS"],"summary":"Set ENS address","description":"Set the address for a specific SLIP-0044 coin type on an ENS name.","operationId":"api_ens_address_set_ens_names__name__addresses__coin_type__post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"coin_type","in":"path","required":true,"schema":{"type":"integer","title":"Coin Type"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsSetAddressRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsOperationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["ENS"],"summary":"Delete ENS address","description":"Remove a coin-type address from an ENS name.","operationId":"api_ens_address_delete_ens_names__name__addresses__coin_type__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"coin_type","in":"path","required":true,"schema":{"type":"integer","title":"Coin Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names/{name}/text_records":{"get":{"tags":["ENS"],"summary":"List ENS text records","description":"List all text records set on an ENS name as a key/value map.","operationId":"api_ens_text_records_get_ens_names__name__text_records_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsTextRecordsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names/{name}/text_records/{key}":{"get":{"tags":["ENS"],"summary":"Get ENS text record","description":"Get a specific text record by key for an ENS name. Common keys: `url`, `email`, `twitter`, `avatar`.","operationId":"api_ens_text_record_get_ens_names__name__text_records__key__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsTextRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["ENS"],"summary":"Set ENS text record","description":"Set or update a text record on an ENS name.","operationId":"api_ens_text_record_set_ens_names__name__text_records__key__post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsSetTextRecordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsOperationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["ENS"],"summary":"Delete ENS text record","description":"Remove a text record from an ENS name.","operationId":"api_ens_text_record_delete_ens_names__name__text_records__key__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/ens/names/{name}/contenthash":{"get":{"tags":["ENS"],"summary":"Get ENS content hash","description":"Retrieve the content hash stored on an ENS name (e.g., an IPFS CID or Arweave transaction ID).","operationId":"api_ens_contenthash_get_ens_names__name__contenthash_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsContentHashResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["ENS"],"summary":"Set ENS content hash","description":"Set or update the content hash for an ENS name. Use `ipfs://`, `ar://`, or other protocol prefixes.","operationId":"api_ens_contenthash_set_ens_names__name__contenthash_post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsSetContentHashRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnsOperationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["ENS"],"summary":"Clear ENS content hash","description":"Remove the content hash from an ENS name.","operationId":"api_ens_contenthash_delete_ens_names__name__contenthash_delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/verify/challenge":{"post":{"tags":["Domains"],"summary":"Get domain verification challenge","description":"Obtain a DNS TXT record challenge for domain ownership verification.","operationId":"api_domain_verify_challenge_domains__domain__verify_challenge_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyChallengeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/verify":{"post":{"tags":["Domains"],"summary":"Verify domain ownership","description":"Confirm domain ownership by verifying the published TXT challenge record. Call after publishing the challenge.","operationId":"api_domain_verify_domains__domain__verify_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/dns/record":{"post":{"tags":["DNS"],"summary":"Create DNS record (auto-zone)","description":"Create a DNS record, auto-creating the zone first if it does not already exist. To manage records under an explicit zone, create it first with `create_dns_zone` (which requires `zone` in the body even though the path names the collection). Use `POST /dns/zone/{zone}/records` when the zone is known to exist.","operationId":"api_dns_record_create_auto_dns_record_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/me":{"get":{"tags":["Auth"],"summary":"Get current user","description":"Return your user ID, plan tier, and current API quota (total, used, remaining).","operationId":"auth_me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthMeResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/keys":{"get":{"tags":["Auth"],"summary":"List API keys","description":"List all API keys associated with your account.","operationId":"auth_keys_auth_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ApiKey"},"type":"array","title":"Response Auth Keys Auth Keys Get"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["Auth"],"summary":"Create API key","description":"Create a new API key with optional permissions and expiry. The response includes `full_key` as `token:password` — the password is shown once only.","operationId":"auth_keys_create_auth_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/keys/{keytoken}":{"post":{"tags":["Auth"],"summary":"Update API key","description":"Update the permissions on an existing API key.","operationId":"auth_keys_update_auth_keys__keytoken__post","parameters":[{"name":"keytoken","in":"path","required":true,"schema":{"type":"string","title":"Keytoken"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateApiKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Auth"],"summary":"Revoke API key","description":"Permanently revoke an API key. This action cannot be undone.","operationId":"auth_keys_revoke_auth_keys__keytoken__delete","parameters":[{"name":"keytoken","in":"path","required":true,"schema":{"type":"string","title":"Keytoken"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/siwe/nonce":{"post":{"tags":["Auth"],"summary":"Get SIWE nonce","description":"Generate a nonce for a Sign-In with Ethereum wallet linking request (authenticated).","operationId":"api_siwe_nonce_auth_siwe_nonce_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiweNonceResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/auth/siwe/verify":{"post":{"tags":["Auth"],"summary":"Verify SIWE signature","description":"Link a wallet to your account by verifying a Sign-In with Ethereum message and signature.","operationId":"api_siwe_verify_auth_siwe_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiweVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiweVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/ens/validate/dns/{domain}":{"get":{"tags":["ENS"],"summary":"Validate ENSIP-17 DNS","description":"Validate ENSIP-17 DNS records and verify the full DNSSEC chain for a domain.","operationId":"api_ens_validate_dns_ens_validate_dns__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ensip17ValidationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/agent":{"post":{"tags":["Agent Identity"],"summary":"Enroll AID","description":"Requires a domain you have registered (see register_domain). Provision a keypair and publish AID discovery records in DNS for the domain. Optionally supply an agent card (name, description, protocol, endpoint URL, provider, capabilities). See the [Agent Identity Setup recipe](#tag/Agent-Identity-Setup).","operationId":"agent_enroll_domains__domain__agent_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateRequest","default":{}}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentEnrollResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"get":{"tags":["Agent Identity"],"summary":"Get AID","description":"Retrieve the agent's AID (Agent Identity & Discovery) record for the domain, including the agent card and keypair metadata.","operationId":"agent_get_domains__domain__agent_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["Agent Identity"],"summary":"Update AID","description":"Update the agent card fields (name, description, protocol, endpoint URL, provider, capabilities, skills) for an enrolled AID.","operationId":"agent_update_domains__domain__agent_put","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Agent Identity"],"summary":"Delete AID","description":"Remove the agent's AID record and revoke all DNS discovery records for the domain.","operationId":"agent_delete_domains__domain__agent_delete","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/agent/credentials":{"get":{"tags":["Agent Identity"],"summary":"Get AID credentials","description":"Retrieve the private key for the domain's AID keypair for self-hosting. Pass `confirm_self_host=true` to confirm intent — the private key is returned only once.","operationId":"agent_credentials_domains__domain__agent_credentials_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"confirm_self_host","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm Self Host"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCredentialsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/agent/ans":{"post":{"tags":["Agent Identity"],"summary":"Enroll ANS","description":"Requires a domain you have registered (see register_domain). Issue an Agent Name Service verifiable certificate tied to the domain. Supply the initial `version` string (e.g. `\"1.0\"`). See the [Agent Identity Setup recipe](#tag/Agent-Identity-Setup).","operationId":"ans_enroll_domains__domain__agent_ans_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnsEnrollRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnsIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"get":{"tags":["Agent Identity"],"summary":"Get ANS identity","description":"Retrieve the current ANS certificate metadata, trust card URL, and badge URL for the domain.","operationId":"ans_get_domains__domain__agent_ans_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnsIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Agent Identity"],"summary":"Delete ANS","description":"Revoke the ANS certificate and remove the trust record for the domain.","operationId":"ans_delete_domains__domain__agent_ans_delete","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/agent/ans/version":{"post":{"tags":["Agent Identity"],"summary":"Rotate ANS certificate","description":"Issue a new ANS certificate version for the domain. Bump `version` (e.g. `\"1.0.0\"` → `\"1.1.0\"`) to rotate the certificate.","operationId":"ans_version_domains__domain__agent_ans_version_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnsVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnsIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/agent/mcpi":{"post":{"tags":["Agent Identity"],"summary":"Enroll MCP-I","description":"Requires a domain you have registered (see register_domain). Generate a DID and verifiable credential for an MCP agent tied to the domain. Supply the desired OAuth-style `scopes` (e.g. `[\"read:domains\", \"write:dns\"]`). See the [Agent Identity Setup recipe](#tag/Agent-Identity-Setup).","operationId":"mcpi_enroll_domains__domain__agent_mcpi_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpiEnrollRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpiIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"get":{"tags":["Agent Identity"],"summary":"Get MCP-I identity","description":"Retrieve the MCP-I DID, scopes, and verifiable credential URLs for the domain.","operationId":"mcpi_get_domains__domain__agent_mcpi_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpiIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["Agent Identity"],"summary":"Update MCP-I scopes","description":"Update the OAuth-style scopes on the domain's MCP-I verifiable credential.","operationId":"mcpi_update_domains__domain__agent_mcpi_put","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpiUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpiIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Agent Identity"],"summary":"Delete MCP-I","description":"Revoke the MCP-I DID and verifiable credential for the domain.","operationId":"mcpi_delete_domains__domain__agent_mcpi_delete","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/agent/dnsid":{"post":{"tags":["Agent Identity"],"summary":"Enroll DNSid","description":"Requires a domain you have registered (see register_domain). Register the domain in the DNSid governance registry. Creates a governance record, entity keypair, and publishes the initial DNS entry. See the [Agent Identity Setup recipe](#tag/Agent-Identity-Setup).","operationId":"dnsid_enroll_domains__domain__agent_dnsid_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsidIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"get":{"tags":["Agent Identity"],"summary":"Get DNSid","description":"Retrieve the full DNSid governance record for the domain, including status, governance ID, and key URLs.","operationId":"dnsid_get_domains__domain__agent_dnsid_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsidIdentityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Agent Identity"],"summary":"Revoke/retire DNSid","description":"Revoke or retire the DNSid governance record. Requires `action` (`\"revoke\"` or `\"retire\"`) and an optional `reason`.","operationId":"dnsid_delete_domains__domain__agent_dnsid_delete","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsidDeleteRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/domains/{domain}/agent/dnsid/log":{"get":{"tags":["Agent Identity"],"summary":"DNSid audit log","description":"Retrieve the ordered audit log of all DNSid governance operations for the domain.","operationId":"dnsid_log_domains__domain__agent_dnsid_log_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DnsidLogEntry"},"title":"Response Dnsid Log Domains  Domain  Agent Dnsid Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/credits/rate":{"get":{"tags":["Credits"],"summary":"Get credit rate","description":"Retrieve the current credits-per-USD rate, minimum payment, accepted tokens, and recipient address.","operationId":"credits_rate_credits_rate_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditRateResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/credits/balance":{"get":{"tags":["Credits"],"summary":"Get credit balance","description":"Retrieve your current API token balance. Same value as GET /plan/credits; this endpoint is canonical. For the USD conversion rate use GET /credits/rate.","operationId":"credits_balance_credits_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditBalanceResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/log/sth":{"get":{"tags":["Transparency Log"],"summary":"Get signed tree head","description":"Retrieve the current signed tree head (latest root hash and tree size) of the transparency log.","operationId":"pub_log_sth_log_sth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedTreeHead"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/log/pubkey":{"get":{"tags":["Transparency Log"],"summary":"Get log public key","description":"Retrieve the public key used to sign tree heads in PEM format.","operationId":"pub_log_pubkey_log_pubkey_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/log/entries/{seq}":{"get":{"tags":["Transparency Log"],"summary":"Get log entry","description":"Retrieve a specific log entry by its sequence number.","operationId":"pub_log_entry_log_entries__seq__get","parameters":[{"name":"seq","in":"path","required":true,"schema":{"type":"integer","title":"Seq"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogEntry"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/log/entries/{seq}/inclusion":{"get":{"tags":["Transparency Log"],"summary":"Get inclusion proof","description":"Get a Merkle inclusion proof for a specific log entry.","operationId":"pub_log_inclusion_log_entries__seq__inclusion_get","parameters":[{"name":"seq","in":"path","required":true,"schema":{"type":"integer","title":"Seq"}},{"name":"tree_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tree Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InclusionProof"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/log/consistency":{"get":{"tags":["Transparency Log"],"summary":"Get consistency proof","description":"Get a Merkle consistency proof between two tree sizes.","operationId":"pub_log_consistency_log_consistency_get","parameters":[{"name":"first","in":"query","required":true,"schema":{"type":"integer","title":"First"}},{"name":"second","in":"query","required":true,"schema":{"type":"integer","title":"Second"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsistencyProof"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/auth/session/siwe/nonce":{"post":{"tags":["Auth"],"summary":"Get session SIWE nonce","description":"Generate a nonce for unauthenticated Sign-In with Ethereum login.","operationId":"pub_session_nonce_auth_session_siwe_nonce_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionNonceResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/auth/session/siwe/verify":{"post":{"tags":["Auth"],"summary":"Verify session SIWE","description":"Exchange a signed SIWE message for a session Bearer token (no existing key required).","operationId":"pub_session_verify_auth_session_siwe_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionSiweVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/dnsid/entity-keys.json":{"get":{"tags":["Agent Identity"],"summary":"DNSid entity keys (public JWKS)","description":"Public JWKS endpoint exposing the DNSid registry's entity signing keys. No authentication required.","operationId":"dnsid_entity_keys_dnsid_entity_keys_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jwks"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/domains/{domain}/agent/dnsid/op-keys.json":{"get":{"tags":["Agent Identity"],"summary":"DNSid operation keys (public JWKS)","description":"Public JWKS endpoint exposing the domain's DNSid operational signing keys. No authentication required.","operationId":"dnsid_op_keys_domains__domain__agent_dnsid_op_keys_json_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jwks"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/domains/{domain}/agent/dnsid/status":{"get":{"tags":["Agent Identity"],"summary":"Check DNSid governance status","description":"Public endpoint to check the current governance state (active/revoked/retired) for a domain's DNSid registration. No authentication required.","operationId":"dnsid_status_domains__domain__agent_dnsid_status_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsidStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/domains/{domain}/agent/dnsid/record":{"get":{"tags":["Agent Identity"],"summary":"Get DNSid record","description":"Public endpoint to retrieve the raw DNSid TXT record and its parsed tags for a domain. No authentication required.","operationId":"dnsid_record_domains__domain__agent_dnsid_record_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsidRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}}},"components":{"schemas":{"AcceptedToken":{"properties":{"chain_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chain Id"},"token_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Symbol"},"token_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Address"},"decimals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Decimals"}},"type":"object","title":"AcceptedToken"},"AccountStatusResponse":{"properties":{"balance_decimal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Balance Decimal"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Id"}},"type":"object","title":"AccountStatusResponse"},"AgentCredentialsResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"private_key":{"type":"string","title":"Private Key"},"public_key":{"type":"string","title":"Public Key"},"key_id":{"type":"string","title":"Key Id"},"self_host_instructions":{"additionalProperties":true,"type":"object","title":"Self Host Instructions"}},"type":"object","required":["domain","private_key","public_key","key_id","self_host_instructions"],"title":"AgentCredentialsResponse"},"AgentEnrollResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"public_key":{"type":"string","title":"Public Key"},"key_id":{"type":"string","title":"Key Id"},"aid_record":{"type":"string","title":"Aid Record"},"agent_url":{"type":"string","title":"Agent Url"},"dns_provisioned":{"type":"boolean","title":"Dns Provisioned"}},"type":"object","required":["domain","public_key","key_id","aid_record","agent_url","dns_provisioned"],"title":"AgentEnrollResponse"},"AgentIdentityResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"public_key":{"type":"string","title":"Public Key"},"key_id":{"type":"string","title":"Key Id"},"protocol":{"type":"string","title":"Protocol"},"agent_endpoint_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Endpoint Url"},"agent_card":{"additionalProperties":true,"type":"object","title":"Agent Card"},"aid_record":{"type":"string","title":"Aid Record"},"self_hosted":{"type":"boolean","title":"Self Hosted"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["domain","public_key","key_id","protocol","agent_card","aid_record","self_hosted","created_at","updated_at"],"title":"AgentIdentityResponse"},"AgentProvider":{"properties":{"organization":{"type":"string","title":"Organization"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["organization"],"title":"AgentProvider"},"AgentUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol"},"agent_endpoint_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Endpoint Url"},"provider":{"anyOf":[{"$ref":"#/components/schemas/AgentProvider"},{"type":"null"}]},"capabilities":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Capabilities"},"skills":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Skills"},"security_schemes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Security Schemes"},"self_hosted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Self Hosted"}},"type":"object","title":"AgentUpdateRequest"},"AnsEnrollRequest":{"properties":{"version":{"type":"string","title":"Version"}},"type":"object","required":["version"],"title":"AnsEnrollRequest"},"AnsIdentityResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"ans_name":{"type":"string","title":"Ans Name"},"version":{"type":"string","title":"Version"},"identity_cert_fingerprint":{"type":"string","title":"Identity Cert Fingerprint"},"tl_entry_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tl Entry Id"},"trust_card_url":{"type":"string","title":"Trust Card Url"},"badge_url":{"type":"string","title":"Badge Url"},"dns_provisioned":{"type":"boolean","title":"Dns Provisioned"},"ans_updated_at":{"type":"string","format":"date-time","title":"Ans Updated At"}},"type":"object","required":["domain","ans_name","version","identity_cert_fingerprint","trust_card_url","badge_url","dns_provisioned","ans_updated_at"],"title":"AnsIdentityResponse"},"AnsVersionRequest":{"properties":{"version":{"type":"string","title":"Version"}},"type":"object","required":["version"],"title":"AnsVersionRequest"},"ApiKey":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Permissions"},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created"},"expires_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires At"},"is_valid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Valid"},"full_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Key"}},"type":"object","title":"ApiKey"},"AuthMeResponse":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"quota_total":{"type":"integer","title":"Quota Total"},"quota_used":{"type":"integer","title":"Quota Used"},"quota_remaining":{"type":"integer","title":"Quota Remaining"},"billing_period_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Billing Period Start"}},"type":"object","required":["quota_total","quota_used","quota_remaining"],"title":"AuthMeResponse"},"BillingPortalResponse":{"properties":{"portal_url":{"type":"string","title":"Portal Url"}},"type":"object","required":["portal_url"],"title":"BillingPortalResponse"},"CertificateType":{"type":"string","enum":["DV","OV","EV"],"title":"CertificateType"},"ChargeItem":{"properties":{"id":{"type":"string","title":"Id"},"created":{"type":"integer","title":"Created"},"amount_cents":{"type":"integer","title":"Amount Cents"},"status":{"type":"string","title":"Status"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits"}},"type":"object","required":["id","created","amount_cents","status"],"title":"ChargeItem"},"ChargeListResponse":{"properties":{"charges":{"items":{"$ref":"#/components/schemas/ChargeItem"},"type":"array","title":"Charges"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["charges"],"title":"ChargeListResponse"},"ConsistencyProof":{"properties":{"first":{"type":"integer","title":"First"},"second":{"type":"integer","title":"Second"},"proof_hex":{"items":{"type":"string"},"type":"array","title":"Proof Hex"}},"type":"object","required":["first","second","proof_hex"],"title":"ConsistencyProof"},"ContactListItem":{"properties":{"contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"ContactListItem"},"ContactListResponse":{"properties":{"contacts":{"items":{"$ref":"#/components/schemas/ContactListItem"},"type":"array","title":"Contacts","default":[]},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"ContactListResponse"},"ContactRequest":{"properties":{"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"street":{"type":"string","title":"Street"},"city":{"type":"string","title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"postal_code":{"type":"string","title":"Postal Code"},"country":{"type":"string","pattern":"^[A-Za-z]{2}$","title":"Country","description":"ISO 3166-1 alpha-2 country code, e.g. `US`. Two letters — `USA` or `United States` are rejected.","examples":["US"]},"phone":{"type":"string","pattern":"^\\+[0-9]{1,3}\\.[0-9]{1,14}$","title":"Phone","description":"Phone in EPP/RFC 5733 format: `+` country code, a literal `.`, then the subscriber number, e.g. `+1.4155550100`. Plain E.164 (`+14155550100`) is rejected by the registry.","examples":["+1.4155550100"]},"fax":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fax"},"email":{"type":"string","title":"Email"}},"type":"object","required":["first_name","last_name","street","city","postal_code","country","phone","email"],"title":"ContactRequest"},"ContactResponse":{"properties":{"contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"fax":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fax"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"ContactResponse"},"CreateApiKeyRequest":{"properties":{"name":{"type":"string","title":"Name"},"permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Permissions"},"expires_in_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Seconds"}},"type":"object","required":["name"],"title":"CreateApiKeyRequest"},"CreditBalanceResponse":{"properties":{"balance_decimal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Balance Decimal"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits"}},"type":"object","title":"CreditBalanceResponse"},"CreditRateResponse":{"properties":{"credits_per_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credits Per Usd"},"min_payment_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Payment Usd"},"recipient":{"anyOf":[{"$ref":"#/components/schemas/PaymentRecipient"},{"type":"null"}]},"accepted":{"anyOf":[{"items":{"$ref":"#/components/schemas/AcceptedToken"},"type":"array"},{"type":"null"}],"title":"Accepted"},"rate_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rate Version"}},"type":"object","title":"CreditRateResponse"},"DeletedResponse":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"DeletedResponse"},"DnsRecordCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"type":{"$ref":"#/components/schemas/DnsRecordType"},"content":{"type":"string","title":"Content"},"ttl":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl"},"disabled":{"type":"boolean","title":"Disabled","default":false}},"type":"object","required":["name","type","content"],"title":"DnsRecordCreateRequest"},"DnsRecordItem":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"$ref":"#/components/schemas/DnsRecordType"},{"type":"null"}]},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"ttl":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl"},"disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disabled"}},"type":"object","title":"DnsRecordItem"},"DnsRecordRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name"},"type":{"$ref":"#/components/schemas/DnsRecordType","description":"DNS record type"},"name":{"type":"string","title":"Name","description":"Record name/subdomain"},"content":{"type":"string","title":"Content","description":"Record value"},"ttl":{"type":"integer","maximum":86400.0,"minimum":60.0,"title":"Ttl","description":"Time to live in seconds","default":3600}},"type":"object","required":["domain","type","name","content"],"title":"DnsRecordRequest"},"DnsRecordResponse":{"properties":{"request_id":{"type":"string","title":"Request Id"},"domain":{"type":"string","title":"Domain"},"record_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Record Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["request_id","domain","status"],"title":"DnsRecordResponse"},"DnsRecordType":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS","SRV","CAA","PTR"],"title":"DnsRecordType"},"DnsRecordsBulkResponse":{"properties":{"zone":{"type":"string","title":"Zone"}},"type":"object","required":["zone"],"title":"DnsRecordsBulkResponse"},"DnsRecordsListResponse":{"properties":{"records":{"items":{"$ref":"#/components/schemas/DnsRecordItem"},"type":"array","title":"Records","default":[]},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"DnsRecordsListResponse"},"DnsRecordsUpdateRequest":{"properties":{"records":{"items":{"$ref":"#/components/schemas/DnsRecordCreateRequest"},"type":"array","title":"Records"}},"type":"object","required":["records"],"title":"DnsRecordsUpdateRequest"},"DnsZoneCreateRequest":{"properties":{"zone":{"type":"string","title":"Zone"},"initial_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Address"}},"type":"object","required":["zone"],"title":"DnsZoneCreateRequest"},"DnsZoneCreateResponse":{"properties":{"zone":{"type":"string","title":"Zone"}},"type":"object","required":["zone"],"title":"DnsZoneCreateResponse"},"DnsZoneExportResponse":{"properties":{"zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zone"},"axfr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Axfr"}},"type":"object","title":"DnsZoneExportResponse"},"DnsZoneResponse":{"properties":{"zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zone"},"serial":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Serial"},"dnssec":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dnssec"},"record_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Record Count"}},"type":"object","title":"DnsZoneResponse"},"DnsidDeleteRequest":{"properties":{"action":{"type":"string","title":"Action"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["action"],"title":"DnsidDeleteRequest"},"DnsidIdentityResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"fqdn":{"type":"string","title":"Fqdn"},"governance_id":{"type":"string","title":"Governance Id"},"status":{"type":"string","title":"Status"},"dnsid_record":{"type":"string","title":"Dnsid Record"},"lr":{"type":"string","title":"Lr"},"log_entry_id":{"type":"string","title":"Log Entry Id"},"status_at":{"type":"string","format":"date-time","title":"Status At"},"revocation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revocation Reason"},"ek_url":{"type":"string","title":"Ek Url"},"ku_url":{"type":"string","title":"Ku Url"},"su_url":{"type":"string","title":"Su Url"}},"type":"object","required":["domain","fqdn","governance_id","status","dnsid_record","lr","log_entry_id","status_at","ek_url","ku_url","su_url"],"title":"DnsidIdentityResponse"},"DnsidLogEntry":{"properties":{"entry_id":{"type":"string","title":"Entry Id"},"entry_type":{"type":"string","title":"Entry Type"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["entry_id","entry_type","created_at"],"title":"DnsidLogEntry"},"DnsidRecordResponse":{"properties":{"record":{"type":"string","title":"Record"},"tags":{"additionalProperties":true,"type":"object","title":"Tags"}},"type":"object","required":["record","tags"],"title":"DnsidRecordResponse"},"DnsidStatusResponse":{"properties":{"state":{"type":"string","title":"State"},"since":{"type":"string","format":"date-time","title":"Since"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["state","since"],"title":"DnsidStatusResponse"},"DnssecAlgorithm":{"type":"string","enum":["ECDSAP256SHA256","RSASHA256","ECDSAP384SHA384"],"title":"DnssecAlgorithm"},"DnssecChainLink":{"properties":{"zone":{"type":"string","title":"Zone"},"dnskey_tag":{"type":"integer","title":"Dnskey Tag"},"algorithm":{"type":"integer","title":"Algorithm"},"ds_digest_type":{"type":"integer","title":"Ds Digest Type"},"rrsig_expiry":{"type":"string","format":"date-time","title":"Rrsig Expiry"},"verified":{"type":"boolean","title":"Verified"}},"type":"object","required":["zone","dnskey_tag","algorithm","ds_digest_type","rrsig_expiry","verified"],"title":"DnssecChainLink"},"DnssecEnableRequest":{"properties":{"algorithm":{"$ref":"#/components/schemas/DnssecAlgorithm","default":"ECDSAP256SHA256"}},"type":"object","title":"DnssecEnableRequest"},"DnssecProof":{"properties":{"chain":{"items":{"$ref":"#/components/schemas/DnssecChainLink"},"type":"array","title":"Chain"},"txt_rrsig":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Txt Rrsig"},"raw_proof_hex":{"type":"string","title":"Raw Proof Hex"}},"type":"object","required":["chain","raw_proof_hex"],"title":"DnssecProof"},"DnssecStatusResponse":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Algorithm"},"ds_records":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ds Records"},"dnskey_records":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Dnskey Records"},"nsec3param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nsec3Param"}},"type":"object","title":"DnssecStatusResponse"},"DomainListResponse":{"properties":{"domains":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Domains","default":[]},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"DomainListResponse"},"DomainLookupResponse":{"properties":{"request_id":{"type":"string","title":"Request Id"},"domain":{"type":"string","title":"Domain"},"available":{"type":"boolean","title":"Available"},"premium":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Premium"},"price_decimal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Decimal"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["request_id","domain","available"],"title":"DomainLookupResponse"},"DomainModifyRequest":{"properties":{"nameservers":{"anyOf":[{"items":{"type":"string"},"type":"array","minItems":2},{"type":"null"}],"title":"Nameservers"},"owner_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Contact"},"admin_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Contact"},"tech_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tech Contact"},"billing_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Contact"}},"type":"object","title":"DomainModifyRequest"},"DomainPriceResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"price_decimal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Decimal"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"credits_required":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Required"},"usd_per_credit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usd Per Credit"}},"type":"object","required":["domain"],"title":"DomainPriceResponse"},"DomainRegisterPreviewRequest":{"properties":{"registrant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant","description":"ID of the registrant contact. Optional here — a missing/invalid value is reported as a blocker rather than a validation error."},"years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Years","description":"Registration period in years","default":1},"auto_renew":{"type":"boolean","title":"Auto Renew","description":"Enable auto-renewal","default":false},"nameservers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Nameservers","description":"Optional list of nameservers"}},"type":"object","title":"DomainRegisterPreviewRequest"},"DomainRegisterPreviewResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"would_succeed":{"type":"boolean","title":"Would Succeed"},"available":{"type":"boolean","title":"Available"},"registrant_valid":{"type":"boolean","title":"Registrant Valid"},"credits_required":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Required"},"price_decimal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Decimal"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"usd_per_credit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Usd Per Credit"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance"},"balance_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance After"},"sufficient_balance":{"type":"boolean","title":"Sufficient Balance"},"blockers":{"items":{"$ref":"#/components/schemas/PreviewBlocker"},"type":"array","title":"Blockers","default":[]}},"type":"object","required":["domain","would_succeed","available","registrant_valid","sufficient_balance"],"title":"DomainRegisterPreviewResponse"},"DomainRegisterRequest":{"properties":{"registrant":{"type":"string","title":"Registrant","description":"ID of the registrant contact"},"years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Years","description":"Registration period in years","default":1},"auto_renew":{"type":"boolean","title":"Auto Renew","description":"Enable auto-renewal","default":false},"nameservers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Nameservers","description":"Optional list of nameservers"}},"type":"object","required":["registrant"],"title":"DomainRegisterRequest"},"DomainRegisterResponse":{"properties":{"request_id":{"type":"string","title":"Request Id"},"domain":{"type":"string","title":"Domain"},"status":{"type":"string","title":"Status"},"api_tokens_deducted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Api Tokens Deducted"},"waived":{"type":"boolean","title":"Waived","default":false}},"type":"object","required":["request_id","domain","status"],"title":"DomainRegisterResponse"},"DomainRenewRequest":{"properties":{"period":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Period","default":1},"expiration":{"type":"integer","title":"Expiration","description":"Current expiration year required by upstream (e.g. 2025)"}},"type":"object","required":["expiration"],"title":"DomainRenewRequest"},"DomainRenewResponse":{"properties":{"request_id":{"type":"string","title":"Request Id"},"domain":{"type":"string","title":"Domain"},"status":{"type":"string","title":"Status"}},"type":"object","required":["request_id","domain","status"],"title":"DomainRenewResponse"},"DomainStatusResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"status":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Status"},"registered_at":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Registered At"},"expires_at":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Expires At"},"owner_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Contact"},"admin_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Contact"},"tech_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tech Contact"},"billing_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Contact"},"nameservers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Nameservers"}},"type":"object","required":["domain"],"title":"DomainStatusResponse"},"DomainTransferRequest":{"properties":{"auth_code":{"type":"string","title":"Auth Code","description":"Authorization/EPP code for transfer"},"registrant":{"type":"string","title":"Registrant","description":"ID of the new registrant contact"},"years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Years","description":"Transfer period in years","default":1}},"type":"object","required":["auth_code","registrant"],"title":"DomainTransferRequest"},"DomainTransferResponse":{"properties":{"request_id":{"type":"string","title":"Request Id"},"domain":{"type":"string","title":"Domain"},"status":{"type":"string","title":"Status"}},"type":"object","required":["request_id","domain","status"],"title":"DomainTransferResponse"},"EndpointLimitInfo":{"properties":{"required_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Required Tier"},"credits_cost":{"type":"integer","title":"Credits Cost"},"accessible":{"type":"boolean","title":"Accessible"}},"type":"object","required":["required_tier","credits_cost","accessible"],"title":"EndpointLimitInfo"},"EnsAddressItem":{"properties":{"coin_type":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coin Type"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"}},"type":"object","title":"EnsAddressItem"},"EnsContentHashResponse":{"properties":{"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol"},"hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hash"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","title":"EnsContentHashResponse"},"EnsCreateNameRequest":{"properties":{"name":{"type":"string","title":"Name"},"contenthash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contenthash"}},"type":"object","required":["name"],"title":"EnsCreateNameRequest"},"EnsFullRecord":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"eth_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eth Address"},"text_records":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Text Records"},"addresses":{"anyOf":[{"items":{"$ref":"#/components/schemas/EnsAddressItem"},"type":"array"},{"type":"null"}],"title":"Addresses"},"content_hash":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Content Hash"}},"type":"object","title":"EnsFullRecord"},"EnsNameInfo":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"owner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner"},"resolver":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolver"},"expires_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires At"}},"type":"object","title":"EnsNameInfo"},"EnsNamesListResponse":{"properties":{"names":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Names","default":[]},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"EnsNamesListResponse"},"EnsOperationResponse":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"EnsOperationResponse"},"EnsResolveAddressResponse":{"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"EnsResolveAddressResponse"},"EnsResolveNameResponse":{"properties":{"found":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Found"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"coin_type":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coin Type"},"resolver":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolver"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","title":"EnsResolveNameResponse"},"EnsSetAddressRequest":{"properties":{"address":{"type":"string","title":"Address"}},"type":"object","required":["address"],"title":"EnsSetAddressRequest"},"EnsSetContentHashRequest":{"properties":{"contenthash":{"type":"string","title":"Contenthash"}},"type":"object","required":["contenthash"],"title":"EnsSetContentHashRequest"},"EnsSetRecordsRequest":{"properties":{"eth_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eth Address"},"text_records":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Text Records"},"addresses":{"anyOf":[{"items":{"$ref":"#/components/schemas/EnsAddressItem"},"type":"array"},{"type":"null"}],"title":"Addresses"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"}},"type":"object","title":"EnsSetRecordsRequest"},"EnsSetTextRecordRequest":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"EnsSetTextRecordRequest"},"EnsTextRecordResponse":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","title":"EnsTextRecordResponse"},"EnsTextRecordsResponse":{"properties":{"records":{"additionalProperties":{"type":"string"},"type":"object","title":"Records","default":{}}},"type":"object","title":"EnsTextRecordsResponse"},"Ensip17TxtRecord":{"properties":{"raw":{"type":"string","title":"Raw"},"resolver":{"type":"string","title":"Resolver"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"resolver_type":{"type":"string","title":"Resolver Type"}},"type":"object","required":["raw","resolver","resolver_type"],"title":"Ensip17TxtRecord"},"Ensip17ValidationResult":{"properties":{"domain":{"type":"string","title":"Domain"},"valid":{"type":"boolean","title":"Valid"},"dnssec_valid":{"type":"boolean","title":"Dnssec Valid"},"ens1_records":{"items":{"$ref":"#/components/schemas/Ensip17TxtRecord"},"type":"array","title":"Ens1 Records"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"},"proof":{"anyOf":[{"$ref":"#/components/schemas/DnssecProof"},{"type":"null"}]}},"type":"object","required":["domain","valid","dnssec_valid"],"title":"Ensip17ValidationResult"},"GenericApiResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"},"token_sync":{"anyOf":[{"$ref":"#/components/schemas/TokenSyncResult"},{"type":"null"}]}},"type":"object","required":["success"],"title":"GenericApiResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InclusionProof":{"properties":{"seq":{"type":"integer","title":"Seq"},"leaf_index":{"type":"integer","title":"Leaf Index"},"tree_size":{"type":"integer","title":"Tree Size"},"audit_path_hex":{"items":{"type":"string"},"type":"array","title":"Audit Path Hex"},"sth":{"$ref":"#/components/schemas/SignedTreeHead"}},"type":"object","required":["seq","leaf_index","tree_size","audit_path_hex","sth"],"title":"InclusionProof"},"Jwk":{"properties":{"kty":{"type":"string","title":"Kty"},"crv":{"type":"string","title":"Crv"},"x":{"type":"string","title":"X"},"kid":{"type":"string","title":"Kid"},"alg":{"type":"string","title":"Alg"},"use":{"type":"string","title":"Use"}},"type":"object","required":["kty","crv","x","kid","alg","use"],"title":"Jwk"},"Jwks":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/Jwk"},"type":"array","title":"Keys"}},"type":"object","required":["keys"],"title":"Jwks"},"LogEntry":{"properties":{"seq":{"type":"integer","title":"Seq"},"entry_id":{"type":"string","title":"Entry Id"},"entry_type":{"type":"string","title":"Entry Type"},"subject":{"type":"string","title":"Subject"},"leaf_hash_hex":{"type":"string","title":"Leaf Hash Hex"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"payload_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payload B64"}},"type":"object","required":["seq","entry_id","entry_type","subject","leaf_hash_hex","created_at"],"title":"LogEntry"},"McpiEnrollRequest":{"properties":{"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"}},"type":"object","required":["scopes"],"title":"McpiEnrollRequest"},"McpiIdentityResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"did":{"type":"string","title":"Did"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"did_doc_url":{"type":"string","title":"Did Doc Url"},"vc_url":{"type":"string","title":"Vc Url"},"vc_expires_at":{"type":"string","format":"date-time","title":"Vc Expires At"},"mcpi_enrolled_at":{"type":"string","format":"date-time","title":"Mcpi Enrolled At"}},"type":"object","required":["domain","did","scopes","did_doc_url","vc_url","vc_expires_at","mcpi_enrolled_at"],"title":"McpiIdentityResponse"},"McpiUpdateRequest":{"properties":{"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"}},"type":"object","required":["scopes"],"title":"McpiUpdateRequest"},"MintTokenRequest":{"properties":{"wallet_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wallet Id"}},"type":"object","title":"MintTokenRequest"},"NameserverCreateRequest":{"properties":{"nameserver":{"type":"string","title":"Nameserver"},"ipv4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ipv4"},"ipv6":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ipv6"}},"type":"object","required":["nameserver"],"title":"NameserverCreateRequest"},"NameserverCreateResponse":{"properties":{"nameserver":{"type":"string","title":"Nameserver"}},"type":"object","required":["nameserver"],"title":"NameserverCreateResponse"},"PaymentMethodResponse":{"properties":{"brand":{"type":"string","title":"Brand"},"last4":{"type":"string","title":"Last4"},"exp_month":{"type":"integer","title":"Exp Month"},"exp_year":{"type":"integer","title":"Exp Year"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["brand","last4","exp_month","exp_year"],"title":"PaymentMethodResponse"},"PaymentRecipient":{"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"}},"type":"object","title":"PaymentRecipient"},"PlanCreditsResponse":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"api_set":{"type":"string","title":"Api Set"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance"}},"type":"object","required":["user_id","api_set","balance"],"title":"PlanCreditsResponse"},"PlanLimitsResponse":{"properties":{"api_set":{"type":"string","title":"Api Set"},"tier":{"type":"string","title":"Tier"},"rate_limit":{"$ref":"#/components/schemas/RateLimitInfo"},"ip_rate_limit":{"$ref":"#/components/schemas/RateLimitInfo"},"quota":{"type":"integer","title":"Quota"},"endpoints":{"additionalProperties":{"$ref":"#/components/schemas/EndpointLimitInfo"},"type":"object","title":"Endpoints"}},"type":"object","required":["api_set","tier","rate_limit","ip_rate_limit","quota","endpoints"],"title":"PlanLimitsResponse"},"PlanStatusResponse":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"api_set":{"type":"string","title":"Api Set"},"tier":{"type":"string","title":"Tier"},"quota_allowance":{"type":"integer","title":"Quota Allowance"},"quota_used":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quota Used"},"billing_period_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Billing Period Start"},"billing_period_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Billing Period End"}},"type":"object","required":["user_id","api_set","tier","quota_allowance","quota_used","billing_period_start","billing_period_end"],"title":"PlanStatusResponse"},"PreviewBlocker":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable reason: missing_registrant | invalid_registrant | registrant_lookup_failed | domain_unavailable | check_unavailable | price_unavailable | insufficient_credits"},"message":{"type":"string","title":"Message","description":"Human-readable explanation"}},"type":"object","required":["code","message"],"title":"PreviewBlocker"},"RateLimitInfo":{"properties":{"limit":{"type":"integer","title":"Limit"},"window_seconds":{"type":"integer","title":"Window Seconds"}},"type":"object","required":["limit","window_seconds"],"title":"RateLimitInfo"},"SessionNonceResponse":{"properties":{"nonce":{"type":"string","title":"Nonce"},"expires_at":{"type":"string","title":"Expires At"}},"type":"object","required":["nonce","expires_at"],"title":"SessionNonceResponse"},"SessionSiweVerifyRequest":{"properties":{"siwe_message":{"type":"string","title":"Siwe Message"},"signature":{"type":"string","title":"Signature"},"nonce":{"type":"string","title":"Nonce"}},"type":"object","required":["siwe_message","signature","nonce"],"title":"SessionSiweVerifyRequest"},"SessionTokenResponse":{"properties":{"token":{"type":"string","title":"Token"},"expires_at":{"type":"string","title":"Expires At"},"user_id":{"type":"string","title":"User Id"},"username":{"type":"string","title":"Username"}},"type":"object","required":["token","expires_at","user_id","username"],"title":"SessionTokenResponse"},"SetupAutoRechargeRequest":{"properties":{"auto_recharge_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Recharge Credits"},"recharge_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recharge Threshold"}},"type":"object","title":"SetupAutoRechargeRequest"},"SetupAutoRechargeResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"auto_recharge_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Recharge Credits"},"recharge_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recharge Threshold"}},"type":"object","required":["user_id"],"title":"SetupAutoRechargeResponse"},"SignedTreeHead":{"properties":{"tree_size":{"type":"integer","title":"Tree Size"},"root_hash_hex":{"type":"string","title":"Root Hash Hex"},"signed_at":{"type":"string","format":"date-time","title":"Signed At"},"signature_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature B64"},"signed":{"type":"boolean","title":"Signed"}},"type":"object","required":["tree_size","root_hash_hex","signed_at","signed"],"title":"SignedTreeHead"},"SiweNonceResponse":{"properties":{"nonce":{"type":"string","title":"Nonce"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["nonce","expires_at"],"title":"SiweNonceResponse"},"SiweVerifyRequest":{"properties":{"siwe_message":{"type":"string","title":"Siwe Message"},"signature":{"type":"string","title":"Signature"}},"type":"object","required":["siwe_message","signature"],"title":"SiweVerifyRequest"},"SiweVerifyResponse":{"properties":{"linked_wallet":{"type":"string","title":"Linked Wallet"},"linked":{"type":"boolean","title":"Linked","default":true}},"type":"object","required":["linked_wallet"],"title":"SiweVerifyResponse"},"SslRequestBody":{"properties":{"domain":{"type":"string","title":"Domain"},"certificate_type":{"$ref":"#/components/schemas/CertificateType","default":"DV"},"csr":{"type":"string","title":"Csr"},"approver_email":{"type":"string","title":"Approver Email"},"period":{"type":"integer","title":"Period","default":1}},"type":"object","required":["domain","csr","approver_email"],"title":"SslRequestBody"},"SslRequestResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"status":{"type":"string","title":"Status"}},"type":"object","required":["domain","status"],"title":"SslRequestResponse"},"TokenSyncResult":{"properties":{"status":{"type":"string","title":"Status"},"token_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Id"},"transaction_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transaction Hash"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"}},"type":"object","required":["status"],"title":"TokenSyncResult"},"TopupPackageItem":{"properties":{"credits":{"type":"integer","title":"Credits"},"amount_usd_decimal":{"type":"string","title":"Amount Usd Decimal"}},"type":"object","required":["credits","amount_usd_decimal"],"title":"TopupPackageItem"},"TopupPackagesResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"price_per_credit_decimal":{"type":"string","title":"Price Per Credit Decimal"},"packages":{"items":{"$ref":"#/components/schemas/TopupPackageItem"},"type":"array","title":"Packages"}},"type":"object","required":["currency","price_per_credit_decimal","packages"],"title":"TopupPackagesResponse"},"TopupRequest":{"properties":{"package":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Package"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits"},"success_url":{"type":"string","title":"Success Url"},"cancel_url":{"type":"string","title":"Cancel Url"}},"type":"object","required":["success_url","cancel_url"],"title":"TopupRequest"},"TopupResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"}},"type":"object","required":["checkout_url"],"title":"TopupResponse"},"UpdateApiKeyRequest":{"properties":{"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"}},"type":"object","required":["permissions"],"title":"UpdateApiKeyRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyChallengeResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"record_name":{"type":"string","title":"Record Name"},"record_type":{"type":"string","title":"Record Type"},"record_value":{"type":"string","title":"Record Value"},"expires_at":{"type":"string","title":"Expires At"}},"type":"object","required":["domain","record_name","record_type","record_value","expires_at"],"title":"VerifyChallengeResponse"},"VerifyResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"owner":{"type":"string","title":"Owner"},"status":{"type":"string","title":"Status"}},"type":"object","required":["domain","owner","status"],"title":"VerifyResponse"},"ErrorResponse":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"examples":[{"detail":"API key required"}]}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key sent as a Bearer token: `Authorization: Bearer your_api_key_here`. Create keys via POST /auth/keys or the console (https://console.domains.kred). Verify with GET /auth/me."}}},"tags":[{"name":"Domains","description":"Domain registration and lifecycle management — check availability, register, renew, transfer, modify nameservers/contacts, and mint tokens. See the [Domain Lifecycle recipe](#tag/Domain-Lifecycle) for a full walkthrough."},{"name":"DNS","description":"DNS zone and record management. Create zones, add A/AAAA/CNAME/MX/TXT/SRV/CAA records, export zones in AXFR format, and manage DNSSEC signing."},{"name":"Contacts","description":"WHOIS registrant contact management. Contacts provide the legal identity attached to domain registrations (registrant, admin, tech, billing). At least one contact must exist before registering a domain."},{"name":"ENS","description":"Ethereum Name Service integration. Create ENS names, set ETH and multi-coin addresses, manage text records, link IPFS/Arweave content hashes, and validate ENSIP-17 DNS. See the [ENS Integration recipe](#tag/ENS-Integration)."},{"name":"Agent Identity","description":"Domain-based identity protocols for AI agents. Enroll and manage **AID** (Agent Identity & Discovery), **ANS** (Agent Name Service), **MCP-I** (Model Context Protocol Identity), and **DNSid** governance records. See the [Agent Identity Setup recipe](#tag/Agent-Identity-Setup)."},{"name":"Auth","description":"API key lifecycle management and wallet authentication via Sign-In with Ethereum (SIWE). See the [API Keys & Authentication recipe](#tag/API-Keys-and-Authentication)."},{"name":"Account","description":"Account balance/status and SSL certificate requests."},{"name":"Credits","description":"API token balance and on-chain payment rate. Query your credit balance and the accepted tokens / exchange rate for topping up."},{"name":"Plan","description":"Subscription plan management and Stripe billing portal."},{"name":"Transparency Log","description":"Public append-only audit log for domain operations. Verify log entries using Merkle inclusion and consistency proofs. No authentication required."},{"name":"Agent Identity Setup","description":"Configure domain-based identity for AI agents using AID, ANS, MCP-I, and DNSid.\n\n## Prerequisites\n\nOwn the domain and have a DNS zone configured. See the [Domain Lifecycle](#tag/Domain-Lifecycle) recipe.\n\n## AID — Agent Identity & Discovery\n\nProvisions a keypair and publishes discovery records in DNS.\n\n```http\nPOST /domains/myagent.kred/agent\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{\n  \"name\": \"My Agent\",\n  \"description\": \"An AI assistant\",\n  \"version\": \"1.0.0\",\n  \"protocol\": \"a2a\",\n  \"agent_endpoint_url\": \"https://myagent.kred/a2a\",\n  \"provider\": {\n    \"organization\": \"Example Corp\",\n    \"url\": \"https://example.com\"\n  },\n  \"capabilities\": { \"streaming\": true }\n}\n```\n\nRetrieve the private key for self-hosting:\n\n```http\nGET /domains/myagent.kred/agent/credentials?confirm_self_host=true\nAuthorization: Bearer YOUR_API_KEY\n```\n\n## ANS — Agent Name Service\n\nIssues a verifiable certificate tied to your domain.\n\n```http\nPOST /domains/myagent.kred/agent/ans\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"version\": \"1.0.0\" }\n```\n\nRotate the certificate by bumping the version:\n\n```http\nPOST /domains/myagent.kred/agent/ans/version\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"version\": \"1.1.0\" }\n```\n\n## MCP-I — MCP Identity\n\nGenerates a DID and verifiable credential for MCP agents.\n\n```http\nPOST /domains/myagent.kred/agent/mcpi\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"scopes\": [\"read:domains\", \"write:dns\"] }\n```\n\nUpdate scopes:\n\n```http\nPUT /domains/myagent.kred/agent/mcpi\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"scopes\": [\"read:domains\", \"write:dns\", \"read:ens\"] }\n```\n\n## DNSid — Governance Registry\n\n```http\nPOST /domains/myagent.kred/agent/dnsid\nAuthorization: Bearer YOUR_API_KEY\n```\n\nCheck governance status (public, no auth):\n\n```http\nGET /domains/myagent.kred/agent/dnsid/status\n```\n\nAudit log:\n\n```http\nGET /domains/myagent.kred/agent/dnsid/log\nAuthorization: Bearer YOUR_API_KEY\n```\n\n## Public Verification Endpoints\n\nAnyone can verify your agent identity without authentication:\n\n```http\nGET /dnsid/entity-keys.json\nGET /domains/myagent.kred/agent/dnsid/record\nGET /domains/myagent.kred/agent/dnsid/op-keys.json\n```\n"},{"name":"API Keys & Authentication","description":"Create and manage API keys; link wallets via Sign-In with Ethereum (SIWE).\n\n## Create an API Key\n\n```http\nPOST /auth/keys\nAuthorization: Bearer YOUR_EXISTING_KEY\nContent-Type: application/json\n\n{\n  \"name\": \"Production key\",\n  \"permissions\": [\"domains:read\", \"domains:write\", \"dns:write\"],\n  \"expires_in_seconds\": 31536000\n}\n```\n\nThe response contains `full_key` as `token:password`. Store the password portion securely — it is shown only once. The `token` field is used to manage the key later.\n\n## List Keys\n\n```http\nGET /auth/keys\nAuthorization: Bearer YOUR_API_KEY\n```\n\n## Update Permissions\n\n```http\nPOST /auth/keys/{keytoken}\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"permissions\": [\"domains:read\", \"dns:read\"] }\n```\n\n## Revoke a Key\n\n```http\nDELETE /auth/keys/{keytoken}\nAuthorization: Bearer YOUR_API_KEY\n```\n\n## Check Quota\n\n```http\nGET /auth/me\nAuthorization: Bearer YOUR_API_KEY\n```\n\nReturns `tier`, `quota_total`, `quota_used`, and `quota_remaining`.\n\n## Link a Wallet (SIWE)\n\n### Step 1 — Get a nonce\n\n```http\nPOST /auth/siwe/nonce\nAuthorization: Bearer YOUR_API_KEY\n```\n\n### Step 2 — Build and sign the SIWE message\n\nConstruct an EIP-4361 message using the returned `nonce`:\n\n```\nexample.com wants you to sign in with your Ethereum account:\n0xYOUR_WALLET_ADDRESS\n\nLink this wallet to your account.\n\nURI: https://example.com\nVersion: 1\nChain ID: 1\nNonce: NONCE_FROM_STEP_1\nIssued At: 2026-01-01T00:00:00Z\n```\n\n### Step 3 — Verify and link\n\n```http\nPOST /auth/siwe/verify\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{\n  \"siwe_message\": \"FULL_SIWE_MESSAGE\",\n  \"signature\": \"0xSIGNATURE\"\n}\n```\n\n## Session Login via SIWE (No Existing Key)\n\n```http\nPOST /auth/session/siwe/nonce\n\nPOST /auth/session/siwe/verify\nContent-Type: application/json\n\n{\n  \"siwe_message\": \"...\",\n  \"signature\": \"0x...\",\n  \"nonce\": \"NONCE\"\n}\n```\n\nThe verify response returns a `token` usable as a Bearer token.\n"},{"name":"Domain Lifecycle","description":"Register a domain, configure DNS, and verify ownership.\n\n## Step 1 — Create a Registrant Contact\n\nEvery domain needs at least one contact before registration.\n\n```http\nPOST /contacts\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{\n  \"first_name\": \"Alice\",\n  \"last_name\": \"Smith\",\n  \"organization\": \"Acme Corp\",\n  \"street\": \"123 Main St\",\n  \"city\": \"San Francisco\",\n  \"state\": \"CA\",\n  \"postal_code\": \"94105\",\n  \"country\": \"US\",\n  \"phone\": \"+1.4155550100\",\n  \"email\": \"alice@example.com\"\n}\n```\n\nSave the `contact_id` from the response.\n\n## Step 2 — Check Availability\n\n```http\nPOST /domains/example.com/check\nAuthorization: Bearer YOUR_API_KEY\n```\n\nIf `available` is `true`, note `price_decimal`. Check your credit balance with `GET /credits/balance`.\n\n## Step 3 — Register\n\n```http\nPOST /domains/example.com/register\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{\n  \"registrant\": \"CONTACT_ID\",\n  \"years\": 1,\n  \"auto_renew\": false\n}\n```\n\n## Step 4 — Create a DNS Zone\n\nRegistration does not automatically provision a DNS zone.\n\n```http\nPOST /dns/zone\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"zone\": \"example.com\" }\n```\n\n## Step 5 — Add Records\n\nAdd an A record:\n\n```http\nPOST /dns/record\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{\n  \"domain\": \"example.com\",\n  \"type\": \"A\",\n  \"name\": \"example.com\",\n  \"content\": \"203.0.113.10\",\n  \"ttl\": 3600\n}\n```\n\nAdd a `www` CNAME:\n\n```http\nPOST /dns/record\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{\n  \"domain\": \"example.com\",\n  \"type\": \"CNAME\",\n  \"name\": \"www.example.com\",\n  \"content\": \"example.com\",\n  \"ttl\": 3600\n}\n```\n\n## Step 6 — Verify Ownership (Optional)\n\nGet a DNS TXT challenge:\n\n```http\nPOST /domains/example.com/verify/challenge\nAuthorization: Bearer YOUR_API_KEY\n```\n\nPublish the `record_value` TXT record, then confirm:\n\n```http\nPOST /domains/example.com/verify\nAuthorization: Bearer YOUR_API_KEY\n```\n\n## Step 7 — Renew\n\nCheck expiry:\n\n```http\nGET /domains/example.com/status\nAuthorization: Bearer YOUR_API_KEY\n```\n\nRenew:\n\n```http\nPOST /domains/example.com/renew\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"period\": 1, \"expiration\": 2026 }\n```\n"},{"name":"ENS Integration","description":"Create ENS names, configure records, and link content hashes for IPFS/Arweave sites.\n\n## Create an ENS Name\n\n```http\nPOST /ens/names\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"name\": \"alice.example.eth\" }\n```\n\n## Set an ETH Address\n\nCoin type `60` is ETH (SLIP-0044). Common types: BTC=0, ETH=60, SOL=501.\n\n```http\nPOST /ens/names/alice.example.eth/addresses/60\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\" }\n```\n\n## Set Text Records\n\nCommon keys: `url`, `email`, `twitter`, `github`, `avatar`, `description`.\n\n```http\nPOST /ens/names/alice.example.eth/text_records/url\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"value\": \"https://alice.example.com\" }\n```\n\n## Set Multiple Records at Once\n\n```http\nPOST /ens/names/alice.example.eth/records\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{\n  \"eth_address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n  \"text_records\": {\n    \"url\": \"https://alice.example.com\",\n    \"email\": \"alice@example.com\",\n    \"twitter\": \"@alice\"\n  }\n}\n```\n\n## Link an IPFS Site\n\n```http\nPOST /ens/names/alice.example.eth/contenthash\nAuthorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n\n{ \"contenthash\": \"ipfs://QmExampleHash123abc\" }\n```\n\nRetrieve it:\n\n```http\nGET /ens/names/alice.example.eth/contenthash\nAuthorization: Bearer YOUR_API_KEY\n```\n\n## Resolve a Name (Public)\n\n```http\nGET /ens/resolve/alice.example.eth\n```\n\nReverse lookup:\n\n```http\nGET /ens/resolve/address/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\n```\n\n## Validate ENSIP-17 DNS Records\n\n```http\nGET /ens/validate/dns/alice.example.eth\nAuthorization: Bearer YOUR_API_KEY\n```\n\n## List All Names\n\n```http\nGET /ens/names?limit=100\nAuthorization: Bearer YOUR_API_KEY\n```\n\nUse `starting_after` for cursor pagination.\n\n## Delete a Name\n\n```http\nDELETE /ens/names/alice.example.eth\nAuthorization: Bearer YOUR_API_KEY\n```\n"}],"x-tagGroups":[{"name":"API Reference","tags":["Domains","DNS","Contacts","ENS","Agent Identity","Auth","Account","Credits","Plan","Transparency Log"]},{"name":"Recipes","tags":["Agent Identity Setup","API Keys & Authentication","Domain Lifecycle","ENS Integration"]}],"servers":[{"url":"https://api.domains.kred","description":"Production"}],"security":[{"bearerAuth":[]}]}