{"openapi":"3.1.0","info":{"title":"uk.app Registry API","version":"1.0.0","description":"Register and manage names under uk.app (\u00a34.99 per name per year, auto-renew). Bearer tokens are created at https:\/\/my.uk.app\/tokens. Scopes: read, write:records, write:names. Full guide: https:\/\/uk.app\/docs"},"servers":[{"url":"https:\/\/api.uk.app\/v1"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}},"schemas":{"Name":{"type":"object","properties":{"name":{"type":"string","example":"petersblog.uk.app"},"label":{"type":"string"},"status":{"type":"string","enum":["pending","parked","active","grace","hold","suspended"]},"tier":{"type":"string"},"records":{"type":"integer"},"claimed_at":{"type":"string","format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"}}},"Record":{"type":"object","required":["type","content"],"properties":{"id":{"type":"integer","readOnly":true},"host":{"type":"string","default":"@","description":"@ for the name itself, www, *, _acme-challenge\u2026"},"type":{"type":"string","enum":["A","AAAA","CNAME","TXT","MX","SRV","CAA","ALIAS","NS"]},"content":{"type":"string"},"ttl":{"type":"integer","default":300,"minimum":60,"maximum":86400},"prio":{"type":"integer","default":0}}}}},"paths":{"\/names\/check":{"get":{"summary":"Is a name available?","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Availability and price"}}}},"\/whois\/{name}":{"get":{"summary":"WHOIS (json with ?format=json, text otherwise)","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Registration status, dates, name servers"}}}},"\/me":{"get":{"security":[{"bearer":[]}],"summary":"Account, plan and limits","responses":{"200":{"description":"OK"}}}},"\/names":{"get":{"security":[{"bearer":[]}],"summary":"List my names","responses":{"200":{"description":"OK","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/Name"}}}}}}},"post":{"security":[{"bearer":[]}],"summary":"Reserve a name (write:names) \u2014 returns checkout_url; activates after payment","requestBody":{"content":{"application\/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}}},"responses":{"201":{"description":"Claimed"},"422":{"description":"Not available \/ plan limit"}}}},"\/names\/{name}":{"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"get":{"security":[{"bearer":[]}],"summary":"Name details","responses":{"200":{"description":"OK"}}},"delete":{"security":[{"bearer":[]}],"summary":"Release a name (write:names)","responses":{"204":{"description":"Released"}}}},"\/names\/{name}\/records":{"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"get":{"security":[{"bearer":[]}],"summary":"List records","responses":{"200":{"description":"OK"}}},"post":{"security":[{"bearer":[]}],"summary":"Add a record (write:records)","requestBody":{"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Record"}}}},"responses":{"201":{"description":"Created and published"}}}},"\/names\/{name}\/records\/{record}":{"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"record","in":"path","required":true,"schema":{"type":"integer"}}],"put":{"security":[{"bearer":[]}],"summary":"Update a record","responses":{"200":{"description":"OK"}}},"delete":{"security":[{"bearer":[]}],"summary":"Delete a record","responses":{"204":{"description":"Deleted"}}}},"\/names\/{name}\/presets\/{preset}":{"post":{"security":[{"bearer":[]}],"summary":"Apply routing records while preserving mail and unrelated records","description":"Vercel requires params.target from project Domains settings; Netlify uses params.site; Pages uses params.project. These accept params.host: @ (default) or www. Add the hostname in the hosting project first. Conflicts and delegated names return 422 without changes. Cloudflare Tunnel is unavailable with managed DNS.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"preset","in":"path","required":true,"schema":{"type":"string","enum":["vercel","netlify","cf-pages","github-pages","cf-tunnel","minecraft","server","parking"]}}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"params":{"type":"object","additionalProperties":{"type":"string"}}}}}}},"responses":{"200":{"description":"Resulting records"}}}},"\/names\/{name}\/verify":{"post":{"security":[{"bearer":[]}],"summary":"Resolve + TLS check","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"dns, https, notes"}}}}}}