Platform

tmgmt is a read-only reseller API. One control plane serves HTTP, MCP, and CLI clients alike; every route is a read, and nothing a customer can reach performs a supplier write.

Read-only posture

The API surface is GET-only with a single exception: POST /v1/domains/{resourceId}/dns/preview, which returns a dry-run preview of a DNS change without applying it. All other routes only read — portfolio inventory, discovery, quotes, plans, and notifications. Purchase, renewal, transfer, and DNS changes are never executed; registration and lifecycle endpoints return validated plans and preflights rather than performing mutations.

Supplier writes stay disabled on every offering, and failures return a neutral error envelope: code, message, retryable, and details.

Discovery, built in

Capabilities are discoverable at runtime — clients don't need out-of-band documentation to know what's available:

The OpenAPI spec documents 29 routes in total. See the docs hub for the full route table and the raw spec.

Entitlement-gated reads

Reads are gated on entitlement evidence. Evidence is caller-supplied: the platform reports what it can verify and marks anything unverifiable as "unknown" rather than guessing. When entitlement can't be verified for an offering, the corresponding read routes return 409 — the request is understood but not serviceable without verified entitlement.

Dry-run previews

Where a change would matter, tmgmt previews it first. POST /v1/domains/{resourceId}/dns/preview renders exactly what a DNS update would do — a dry run that changes nothing. Registration quotes and safety-checked registration plans work the same way: inspectable, never executed.

White-label posture

tmgmt customers must not know the upstream supplier. Public ids, error messages, OpenAPI descriptions, and notifications use neutral, customer-facing naming — no supplier brands appear anywhere a customer can see.