{"openapi":"3.1.0","info":{"title":"RedirHub","version":"1.0.0"},"servers":[{"url":"https://api.redirhub.com/v1","description":"Production"}],"tags":[{"name":"Redirects","description":"Create and manage URL redirects."},{"name":"Short Links","description":"Create and manage short links."},{"name":"Bulk Operations","description":"Import, export, update, and delete redirects and short links in bulk."},{"name":"Hostnames","description":"Connect hostnames, manage their configuration, and select a routing cluster."},{"name":"Workspace","description":"Workspace details and subscriptions."},{"name":"Account & Reference","description":"Account settings plus shared reference and recommendation endpoints."}],"security":[{"http":[]}],"paths":{"/redirect":{"post":{"operationId":"redirect.store","tags":["Redirects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectRequest"}}}},"responses":{"200":{"description":"The redirects created by this request. A single call can create several redirects at once, so the payload is always a collection.","content":{"application/json":{"schema":{"type":"object","examples":[{"data":[{"id":"link_9wPqK3","tld":"example.com","host":"go.example.com","url":"go.example.com/summer-sale","https":true,"file":"go.example.com/summer-sale","destination":"https://shop.example.com/summer-sale","destinations":["https://shop.example.com/summer-sale","https://shop.example.com/backup"],"destination_routing":"random","plugins":["nobot"],"type":null,"title":null,"description":null,"status":"active","forward_path":true,"forward_query":false,"utm":{"source":"newsletter"},"monitor":null,"is_notify":null,"is_switch_unbroken_destination":null,"tags":[],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}]}],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tld":{"type":["string","null"]},"host":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":["array","null"],"items":{"type":"string"}},"type":{"type":["string","null"]},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":["boolean","null"]},"forward_query":{"type":["boolean","null"]},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":["integer","null"]},"is_switch_unbroken_destination":{"type":["integer","null"]},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","tld","host","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}}},"required":["data"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"482":{"$ref":"#/components/responses/OverLimitException"},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]},"get":{"operationId":"redirect.index","tags":["Redirects"],"parameters":[{"name":"sort","in":"query","description":"Sort results by field. Prefix with - for descending order. Available sorts: id, created_at, updated_at","schema":{"type":"string","enum":["id","-id","created_at","-created_at","updated_at","-updated_at"]}},{"name":"filter","in":"query","description":"Filter results by one or more fields.\n\nAvailable filters: id, host, tld, handler, destination, search, tags, traffic, dns_correct, created_after, created_before","style":"deepObject","schema":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"tld":{"type":"string"},"handler":{"type":"string"},"destination":{"type":"string"},"search":{"type":"string"},"tags":{"type":"string"},"traffic":{"type":"string"},"dns_correct":{"type":"string"},"created_after":{"type":"string"},"created_before":{"type":"string"}}},"explode":true,"examples":{"host":{"value":{"host":"go.example.com"},"summary":"Records of a single hostname"},"tags":{"value":{"tags":"launch,paid"},"summary":"Records carrying any of the comma separated tags"}}}],"responses":{"200":{"description":"A cursor-paginated page of redirects. Follow `meta.cursor.next` for the next page.","content":{"application/json":{"schema":{"type":"object","examples":[{"data":[{"id":"link_9wPqK3","tld":"example.com","host":"go.example.com","url":"go.example.com/summer-sale","https":true,"file":null,"destination":"https://shop.example.com/summer-sale","destinations":["https://shop.example.com/summer-sale"],"destination_routing":"first","plugins":["nobot"],"type":"301","title":"Summer sale","description":null,"status":"active","forward_path":true,"forward_query":true,"utm":null,"monitor":null,"is_notify":0,"is_switch_unbroken_destination":0,"tags":["campaign"],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}],"meta":{"cursor":{"current":null,"prev":null,"next":null,"count":0}}}],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tld":{"type":["string","null"]},"host":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":["array","null"],"items":{"type":"string"}},"type":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":"boolean"},"forward_query":{"type":"boolean"},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":"integer"},"is_switch_unbroken_destination":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","tld","host","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}},"meta":{"type":"object","properties":{"cursor":{"type":"object","properties":{"current":{"type":"null"},"prev":{"type":["string","null"]},"next":{"type":["string","null"]},"count":{"type":"integer"}},"required":["current","prev","next","count"]}},"required":["cursor"]}},"required":["data","meta"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/redirect/count":{"get":{"operationId":"redirect.count","tags":["Redirects"],"parameters":[{"name":"sort","in":"query","description":"Sort results by field. Prefix with - for descending order. Available sorts: id, created_at, updated_at","schema":{"type":"string","enum":["id","-id","created_at","-created_at","updated_at","-updated_at"]}},{"name":"filter","in":"query","description":"Filter results by one or more fields.\n\nAvailable filters: id, host, tld, handler, destination, search, tags, traffic, dns_correct, created_after, created_before","style":"deepObject","schema":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"tld":{"type":"string"},"handler":{"type":"string"},"destination":{"type":"string"},"search":{"type":"string"},"tags":{"type":"string"},"traffic":{"type":"string"},"dns_correct":{"type":"string"},"created_after":{"type":"string"},"created_before":{"type":"string"}}},"explode":true,"examples":{"host":{"value":{"host":"go.example.com"},"summary":"Records of a single hostname"},"tags":{"value":{"tags":"launch,paid"},"summary":"Records carrying any of the comma separated tags"}}}],"responses":{"200":{"description":"Redirect totals for the current filter.","content":{"application/json":{"schema":{"type":"object","examples":[{"total":128,"paused":4}],"properties":{"total":{"type":"integer","minimum":0},"paused":{"type":"integer","minimum":0}},"required":["total","paused"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/redirect/tags":{"get":{"operationId":"redirect.tags","tags":["Redirects"],"responses":{"200":{"description":"Tags used by the workspace, with the number of records carrying each one.","content":{"application/json":{"schema":{"type":"object","examples":[{"data":[{"slug":"tag-redacted-1","name":"Tag redacted 1","count":41},{"slug":"tag-redacted-2","name":"Tag redacted 2","count":41},{"slug":"tag-redacted-3","name":"Tag redacted 3","count":40},{"slug":"tag-redacted-4","name":"Tag redacted 4","count":40},{"slug":"tag-redacted-5","name":"Tag redacted 5","count":40},{"slug":"tag-redacted-6","name":"Tag redacted 6","count":40},{"slug":"tag-redacted-7","name":"Tag redacted 7","count":29},{"slug":"tag-redacted-8","name":"Tag redacted 8","count":2},{"slug":"tag-redacted-9","name":"Tag redacted 9","count":1},{"slug":"tag-redacted-10","name":"Tag redacted 10","count":1}]}],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["slug","name","count"]}}},"required":["data"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/redirect/{id}":{"get":{"operationId":"redirect.show","tags":["Redirects"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The requested redirect.","content":{"application/json":{"schema":{"type":"object","examples":[{"id":"link_9wPqK3","tld":"example.com","host":"go.example.com","url":"go.example.com/summer-sale","https":true,"file":null,"destination":"https://shop.example.com/summer-sale","destinations":["https://shop.example.com/summer-sale"],"destination_routing":"first","plugins":["nobot"],"type":"301","title":"Summer sale","description":null,"status":"active","forward_path":true,"forward_query":true,"utm":null,"monitor":null,"is_notify":0,"is_switch_unbroken_destination":0,"tags":["campaign"],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}],"properties":{"id":{"type":"string"},"tld":{"type":["string","null"]},"host":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":["array","null"],"items":{"type":"string"}},"type":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":"boolean"},"forward_query":{"type":"boolean"},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":"integer"},"is_switch_unbroken_destination":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","tld","host","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]},"delete":{"operationId":"redirect.destroy","tags":["Redirects"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content","headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]},"put":{"operationId":"redirect.update","tags":["Redirects"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectRequest"}}}},"responses":{"200":{"description":"The updated redirect.","content":{"application/json":{"schema":{"type":"object","examples":[{"id":"link_9wPqK3","tld":"example.com","host":"go.example.com","url":"go.example.com/summer-sale","https":true,"file":null,"destination":"https://shop.example.com/summer-sale","destinations":["https://shop.example.com/summer-sale"],"destination_routing":"first","plugins":["nobot"],"type":"301","title":"Summer sale","description":null,"status":"active","forward_path":true,"forward_query":true,"utm":null,"monitor":null,"is_notify":0,"is_switch_unbroken_destination":0,"tags":["campaign"],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}],"properties":{"id":{"type":"string"},"tld":{"type":["string","null"]},"host":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":["array","null"],"items":{"type":"string"}},"type":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":"boolean"},"forward_query":{"type":"boolean"},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":"integer"},"is_switch_unbroken_destination":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","tld","host","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"482":{"$ref":"#/components/responses/OverLimitException"},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]}},"/link":{"post":{"operationId":"link.store","tags":["Short Links"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLinkRequest"}}}},"responses":{"200":{"description":"The short links created by this request. The payload is always a collection, even for a single link.","content":{"application/json":{"schema":{"type":"object","examples":[{"data":[{"id":"link_7bXmR4","host":"go.example.com","alias":"docs","url":"go.example.com/docs","https":true,"file":"go.example.com/docs","destination":"https://docs.example.com/getting-started","destinations":["https://docs.example.com/getting-started"],"destination_routing":"random","plugins":["nobot"],"type":null,"title":null,"description":null,"status":"active","forward_path":null,"forward_query":null,"utm":null,"monitor":null,"is_notify":null,"is_switch_unbroken_destination":null,"tags":[],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}]}],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"alias":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":"array","items":{"type":"string"}},"type":{"type":["string","null"]},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":["boolean","null"]},"forward_query":{"type":["boolean","null"]},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":["integer","null"]},"is_switch_unbroken_destination":{"type":["integer","null"]},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","host","alias","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}}},"required":["data"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"482":{"$ref":"#/components/responses/OverLimitException"},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]},"get":{"operationId":"link.index","tags":["Short Links"],"parameters":[{"name":"sort","in":"query","description":"Sort results by field. Prefix with - for descending order. Available sorts: id, created_at, updated_at","schema":{"type":"string","enum":["id","-id","created_at","-created_at","updated_at","-updated_at"]}},{"name":"filter","in":"query","description":"Filter results by one or more fields.\n\nAvailable filters: id, host, tld, handler, destination, search, tags, traffic, dns_correct, created_after, created_before","style":"deepObject","schema":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"tld":{"type":"string"},"handler":{"type":"string"},"destination":{"type":"string"},"search":{"type":"string"},"tags":{"type":"string"},"traffic":{"type":"string"},"dns_correct":{"type":"string"},"created_after":{"type":"string"},"created_before":{"type":"string"}}},"explode":true,"examples":{"host":{"value":{"host":"go.example.com"},"summary":"Records of a single hostname"},"tags":{"value":{"tags":"launch,paid"},"summary":"Records carrying any of the comma separated tags"}}}],"responses":{"200":{"description":"A cursor-paginated page of short links. Follow `meta.cursor.next` for the next page.","content":{"application/json":{"schema":{"type":"object","examples":[{"data":[{"id":"link_7bXmR4","host":"go.example.com","alias":"docs","url":"go.example.com/docs","https":true,"file":null,"destination":"https://docs.example.com/getting-started","destinations":["https://docs.example.com/getting-started"],"destination_routing":"first","plugins":[],"type":"301","title":"Docs","description":null,"status":"active","forward_path":false,"forward_query":true,"utm":null,"monitor":null,"is_notify":0,"is_switch_unbroken_destination":0,"tags":["docs"],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}],"meta":{"cursor":{"current":null,"prev":null,"next":null,"count":0}}}],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"alias":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":"array","items":{"type":"string"}},"type":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":"boolean"},"forward_query":{"type":"boolean"},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":"integer"},"is_switch_unbroken_destination":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","host","alias","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}},"meta":{"type":"object","properties":{"cursor":{"type":"object","properties":{"current":{"type":"null"},"prev":{"type":["string","null"]},"next":{"type":["string","null"]},"count":{"type":"integer"}},"required":["current","prev","next","count"]}},"required":["cursor"]}},"required":["data","meta"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/link/count":{"get":{"operationId":"link.count","tags":["Short Links"],"parameters":[{"name":"sort","in":"query","description":"Sort results by field. Prefix with - for descending order. Available sorts: id, created_at, updated_at","schema":{"type":"string","enum":["id","-id","created_at","-created_at","updated_at","-updated_at"]}},{"name":"filter","in":"query","description":"Filter results by one or more fields.\n\nAvailable filters: id, host, tld, handler, destination, search, tags, traffic, dns_correct, created_after, created_before","style":"deepObject","schema":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"tld":{"type":"string"},"handler":{"type":"string"},"destination":{"type":"string"},"search":{"type":"string"},"tags":{"type":"string"},"traffic":{"type":"string"},"dns_correct":{"type":"string"},"created_after":{"type":"string"},"created_before":{"type":"string"}}},"explode":true,"examples":{"host":{"value":{"host":"go.example.com"},"summary":"Records of a single hostname"},"tags":{"value":{"tags":"launch,paid"},"summary":"Records carrying any of the comma separated tags"}}}],"responses":{"200":{"description":"Short link totals for the current filter.","content":{"application/json":{"schema":{"type":"object","examples":[{"total":42,"paused":1}],"properties":{"total":{"type":"integer","minimum":0},"paused":{"type":"integer","minimum":0}},"required":["total","paused"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/link/tags":{"get":{"operationId":"link.tags","tags":["Short Links"],"responses":{"200":{"description":"Tags used by the workspace, with the number of records carrying each one.","content":{"application/json":{"schema":{"type":"object","examples":[{"data":[{"slug":"tag-redacted-1","name":"Tag redacted 1","count":41},{"slug":"tag-redacted-2","name":"Tag redacted 2","count":41},{"slug":"tag-redacted-3","name":"Tag redacted 3","count":40},{"slug":"tag-redacted-4","name":"Tag redacted 4","count":40},{"slug":"tag-redacted-5","name":"Tag redacted 5","count":40},{"slug":"tag-redacted-6","name":"Tag redacted 6","count":40},{"slug":"tag-redacted-7","name":"Tag redacted 7","count":29},{"slug":"tag-redacted-8","name":"Tag redacted 8","count":2},{"slug":"tag-redacted-9","name":"Tag redacted 9","count":1},{"slug":"tag-redacted-10","name":"Tag redacted 10","count":1}]}],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["slug","name","count"]}}},"required":["data"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/link/{id}":{"get":{"operationId":"link.show","tags":["Short Links"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The requested short link.","content":{"application/json":{"schema":{"type":"object","examples":[{"id":"link_7bXmR4","host":"go.example.com","alias":"docs","url":"go.example.com/docs","https":true,"file":null,"destination":"https://docs.example.com/getting-started","destinations":["https://docs.example.com/getting-started"],"destination_routing":"first","plugins":[],"type":"301","title":"Docs","description":null,"status":"active","forward_path":false,"forward_query":true,"utm":null,"monitor":null,"is_notify":0,"is_switch_unbroken_destination":0,"tags":["docs"],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}],"properties":{"id":{"type":"string"},"host":{"type":"string"},"alias":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":"array","items":{"type":"string"}},"type":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":"boolean"},"forward_query":{"type":"boolean"},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":"integer"},"is_switch_unbroken_destination":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","host","alias","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]},"delete":{"operationId":"link.destroy","tags":["Short Links"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content","headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]},"put":{"operationId":"link.update","tags":["Short Links"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLinkRequest"}}}},"responses":{"200":{"description":"The updated short link.","content":{"application/json":{"schema":{"type":"object","examples":[{"id":"link_7bXmR4","host":"go.example.com","alias":"docs","url":"go.example.com/docs","https":true,"file":null,"destination":"https://docs.example.com/getting-started","destinations":["https://docs.example.com/getting-started"],"destination_routing":"first","plugins":[],"type":"301","title":"Docs","description":null,"status":"active","forward_path":false,"forward_query":true,"utm":null,"monitor":null,"is_notify":0,"is_switch_unbroken_destination":0,"tags":["docs"],"created_by":"user_4dRt2X","created_via":"api","created_at":"2026-07-14T09:30:00.000000Z","updated_at":"2026-07-14T09:30:00.000000Z","expired_at":null}],"properties":{"id":{"type":"string"},"host":{"type":"string"},"alias":{"type":"string"},"url":{"type":"string"},"https":{"type":"boolean"},"file":{"type":["string","null"]},"destination":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"destination_routing":{"anyOf":[{"$ref":"#/components/schemas/DestinationRouting"},{"type":"null"}]},"plugins":{"type":"array","items":{"type":"string"}},"type":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"status":{"type":"string"},"forward_path":{"type":"boolean"},"forward_query":{"type":"boolean"},"utm":{"type":["object","null"],"properties":{"source":{"type":"string"},"medium":{"type":"string"},"campaign":{"type":"string"},"term":{"type":"string"},"content":{"type":"string"}}},"monitor":{"type":["string","null"]},"is_notify":{"type":"integer"},"is_switch_unbroken_destination":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"created_by":{"type":["string","null"]},"created_via":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"expired_at":{"type":["string","null"],"format":"date-time"}},"required":["id","host","alias","url","https","file","destination","destinations","destination_routing","plugins","type","title","description","status","forward_path","forward_query","utm","monitor","is_notify","is_switch_unbroken_destination","tags","created_by","created_via","created_at","updated_at","expired_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"482":{"$ref":"#/components/responses/OverLimitException"},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]}},"/bulk":{"put":{"operationId":"recordBulk.update","tags":["Bulk Operations"],"parameters":[{"name":"sort","in":"query","description":"Sort results by field. Prefix with - for descending order. Available sorts: id, created_at, updated_at","schema":{"type":"string","enum":["id","-id","created_at","-created_at","updated_at","-updated_at"]}},{"name":"filter","in":"query","required":true,"description":"Records the operation applies to. Accepted as a query object\n(`filter[host]=go.example.com`) or as a `filter` object in the JSON body.\nAt least one filter must carry a value, or every record of the workspace would match.\n\nAvailable filters: id, host, tld, handler, destination, search, tags, traffic, dns_correct, created_after, created_before","style":"deepObject","schema":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"tld":{"type":"string"},"handler":{"type":"string"},"destination":{"type":"string"},"search":{"type":"string"},"tags":{"type":"string"},"traffic":{"type":"string"},"dns_correct":{"type":"string"},"created_after":{"type":"string"},"created_before":{"type":"string"}}},"explode":true,"examples":{"host":{"value":{"host":"go.example.com"},"summary":"Records of a single hostname"},"tags":{"value":{"tags":"launch,paid"},"summary":"Records carrying any of the comma separated tags"}}}],"responses":{"200":{"description":"Number of records the filter matched and the update was applied to.","content":{"application/json":{"schema":{"type":"object","examples":[{"affected":37}],"properties":{"affected":{"type":"integer"}},"required":["affected"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]},"delete":{"operationId":"recordBulk.destroy","tags":["Bulk Operations"],"parameters":[{"name":"sort","in":"query","description":"Sort results by field. Prefix with - for descending order. Available sorts: id, created_at, updated_at","schema":{"type":"string","enum":["id","-id","created_at","-created_at","updated_at","-updated_at"]}},{"name":"filter","in":"query","required":true,"description":"Records the operation applies to. Accepted as a query object\n(`filter[host]=go.example.com`) or as a `filter` object in the JSON body.\nAt least one filter must carry a value, or every record of the workspace would match.\n\nAvailable filters: id, host, tld, handler, destination, search, tags, traffic, dns_correct, created_after, created_before","style":"deepObject","schema":{"type":"object","properties":{"id":{"type":"string"},"host":{"type":"string"},"tld":{"type":"string"},"handler":{"type":"string"},"destination":{"type":"string"},"search":{"type":"string"},"tags":{"type":"string"},"traffic":{"type":"string"},"dns_correct":{"type":"string"},"created_after":{"type":"string"},"created_before":{"type":"string"}}},"explode":true,"examples":{"host":{"value":{"host":"go.example.com"},"summary":"Records of a single hostname"},"tags":{"value":{"tags":"launch,paid"},"summary":"Records carrying any of the comma separated tags"}}}],"responses":{"200":{"description":"Number of records the filter matched. Deletion itself runs in the background, so the records may disappear slightly later.","content":{"application/json":{"schema":{"examples":[{"affected":37}],"anyOf":[{"type":"object","properties":{"affected":{"type":"integer","minimum":0}},"required":["affected"]},{"type":"object","properties":{"affected":{"type":"integer"}},"required":["affected"]}]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]}},"/host/{host}/refresh":{"post":{"operationId":"host.refresh","tags":["Hostnames"],"parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The hostname after a DNS re-check. Checks are rate limited, so the state may still be the previous one.","content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string"},"domain":{"type":["string","null"]},"correct":{"type":"boolean"},"default_require":{"type":"string","enum":["ip","cname"]},"require":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","const":"cname"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"string"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"ip"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"verfication"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"}},"required":["scope","name","type","value","additional_verification","exists"]},{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"":{"anyOf":[{"type":"null"},{"type":"object","properties":{"host":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","const":"CNAME"}},"required":["host","name","value","type"]},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]},"status":{"type":"string"}},"required":["scope",null,"status"]}]}},"current":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"},"line":{}},"required":["type","value","line"]}},"errors":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"message":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["scope","message","updated_at"]}},"counts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"product":{"type":"string","const":"redirect"},"count":{"type":"integer","minimum":0}},"required":["product","count"]},{"type":"object","properties":{"product":{"type":"string","const":"short-url"},"count":{"type":"integer","minimum":0}},"required":["product","count"]}]}},"https_requested":{"type":"boolean"},"short_links_enabled":{"type":"boolean"},"public":{"type":"boolean"},"notice":{"type":"string"},"checked_at":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["host","domain","correct","default_require","require","current","errors","counts","https_requested","short_links_enabled","public","notice","checked_at","created_at","updated_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/host/{host}":{"delete":{"operationId":"host.destroy","tags":["Hostnames"],"parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No content","headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]},"put":{"operationId":"host.update","tags":["Hostnames"],"parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHostRequest"}}}},"responses":{"200":{"description":"The updated hostname.","content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string"},"domain":{"type":["string","null"]},"correct":{"type":"boolean"},"default_require":{"type":"string","enum":["ip","cname"]},"require":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","const":"cname"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"string"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"ip"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"verfication"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"}},"required":["scope","name","type","value","additional_verification","exists"]},{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"":{"anyOf":[{"type":"null"},{"type":"object","properties":{"host":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","const":"CNAME"}},"required":["host","name","value","type"]},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]},"status":{"type":"string"}},"required":["scope",null,"status"]}]}},"current":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"},"line":{}},"required":["type","value","line"]}},"errors":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"message":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["scope","message","updated_at"]}},"counts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"product":{"type":"string","const":"redirect"},"count":{"type":"integer","minimum":0}},"required":["product","count"]},{"type":"object","properties":{"product":{"type":"string","const":"short-url"},"count":{"type":"integer","minimum":0}},"required":["product","count"]}]}},"https_requested":{"type":"boolean"},"short_links_enabled":{"type":"boolean"},"public":{"type":"boolean"},"notice":{"type":"string"},"checked_at":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["host","domain","correct","default_require","require","current","errors","counts","https_requested","short_links_enabled","public","notice","checked_at","created_at","updated_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]},"get":{"operationId":"host.show","tags":["Hostnames"],"parameters":[{"name":"host","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The requested hostname with its DNS and certificate state.","content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string"},"domain":{"type":["string","null"]},"correct":{"type":"boolean"},"default_require":{"type":"string","enum":["ip","cname"]},"require":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","const":"cname"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"string"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"ip"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"verfication"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"}},"required":["scope","name","type","value","additional_verification","exists"]},{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"":{"anyOf":[{"type":"null"},{"type":"object","properties":{"host":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","const":"CNAME"}},"required":["host","name","value","type"]},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]},"status":{"type":"string"}},"required":["scope",null,"status"]}]}},"current":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"},"line":{}},"required":["type","value","line"]}},"errors":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"message":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["scope","message","updated_at"]}},"counts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"product":{"type":"string","const":"redirect"},"count":{"type":"integer","minimum":0}},"required":["product","count"]},{"type":"object","properties":{"product":{"type":"string","const":"short-url"},"count":{"type":"integer","minimum":0}},"required":["product","count"]}]}},"https_requested":{"type":"boolean"},"short_links_enabled":{"type":"boolean"},"public":{"type":"boolean"},"notice":{"type":"string"},"checked_at":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["host","domain","correct","default_require","require","current","errors","counts","https_requested","short_links_enabled","public","notice","checked_at","created_at","updated_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/host":{"post":{"operationId":"host.store","tags":["Hostnames"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreHostRequest"}}}},"responses":{"200":{"description":"The hostname that is now connected to the workspace.","content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string"},"domain":{"type":["string","null"]},"correct":{"type":"boolean"},"default_require":{"type":"string","enum":["ip","cname"]},"require":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","const":"cname"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"string"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"ip"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"verfication"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"}},"required":["scope","name","type","value","additional_verification","exists"]},{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"":{"anyOf":[{"type":"null"},{"type":"object","properties":{"host":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","const":"CNAME"}},"required":["host","name","value","type"]},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]},"status":{"type":"string"}},"required":["scope",null,"status"]}]}},"current":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"},"line":{}},"required":["type","value","line"]}},"errors":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"message":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["scope","message","updated_at"]}},"counts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"product":{"type":"string","const":"redirect"},"count":{"type":"integer","minimum":0}},"required":["product","count"]},{"type":"object","properties":{"product":{"type":"string","const":"short-url"},"count":{"type":"integer","minimum":0}},"required":["product","count"]}]}},"https_requested":{"type":"boolean"},"short_links_enabled":{"type":"boolean"},"public":{"type":"boolean"},"notice":{"type":"string"},"checked_at":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["host","domain","correct","default_require","require","current","errors","counts","https_requested","short_links_enabled","public","notice","checked_at","created_at","updated_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]},"get":{"operationId":"host.index","tags":["Hostnames"],"responses":{"200":{"description":"A cursor-paginated page of hostnames. Follow `meta.cursor.next` for the next page.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"host":{"type":"string"},"domain":{"type":["string","null"]},"correct":{"type":"boolean"},"default_require":{"type":"string","enum":["ip","cname"]},"require":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"scope":{"type":"string","const":"cname"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"string"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"ip"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"available":{"type":"boolean"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"},"mandatory":{"type":"boolean"}},"required":["scope","name","type","value","available","additional_verification","exists","mandatory"]},{"type":"object","properties":{"scope":{"type":"string","const":"verfication"},"name":{"anyOf":[{"type":"string"},{"type":"string","enum":["@"]}]},"type":{"type":"string"},"value":{"type":"string"},"additional_verification":{"type":"boolean"},"exists":{"type":"string"}},"required":["scope","name","type","value","additional_verification","exists"]},{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"":{"anyOf":[{"type":"null"},{"type":"object","properties":{"host":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","const":"CNAME"}},"required":["host","name","value","type"]},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]},"status":{"type":"string"}},"required":["scope",null,"status"]}]}},"current":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"},"line":{}},"required":["type","value","line"]}},"errors":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string","const":"ssl"},"message":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["scope","message","updated_at"]}},"counts":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"product":{"type":"string","const":"redirect"},"count":{"type":"integer","minimum":0}},"required":["product","count"]},{"type":"object","properties":{"product":{"type":"string","const":"short-url"},"count":{"type":"integer","minimum":0}},"required":["product","count"]}]}},"https_requested":{"type":"boolean"},"short_links_enabled":{"type":"boolean"},"public":{"type":"boolean"},"notice":{"type":"string"},"checked_at":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["host","domain","correct","default_require","require","current","errors","counts","https_requested","short_links_enabled","public","notice","checked_at","created_at","updated_at"]}},"meta":{"type":"object","properties":{"cursor":{"type":"object","properties":{"current":{"type":"null"},"prev":{"type":["string","null"]},"next":{"type":["string","null"]},"count":{"type":"integer"}},"required":["current","prev","next","count"]}},"required":["cursor"]}},"required":["data","meta"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/workspace/current":{"get":{"operationId":"workspace.current","tags":["Workspace"],"responses":{"200":{"description":"The workspace the API token is scoped to, with the caller's role and plan usage summary.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"string","enum":["viewer"]}]},"headurl":{"type":"string"},"personal":{"type":"boolean"},"country":{"type":["string","null"]},"pm_type":{"type":["string","null"]},"pm_ending":{"type":["string","null"]},"level":{"type":"integer"},"email":{"type":["string","null"]},"billing_extra":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"meta":{"type":"array","items":{}},"summary":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"used":{"type":"integer"}},"required":["category","used"]}}},"required":["id","name","role","headurl","personal","country","pm_type","pm_ending","level","email","billing_extra","created_at","updated_at","meta","summary"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/workspace/subscription":{"get":{"operationId":"workspaceSubscription.productSubscriptions","tags":["Workspace"],"responses":{"200":{"description":"The active subscriptions of the workspace, one per subscribed product.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"plan":{"type":"string"},"name":{"type":"string"},"fullname":{"type":"string"},"product":{"type":"string"},"level":{"type":"string"},"interval":{"type":"string"},"price":{"type":["number","null"]},"product_name":{"type":"string"},"order_no":{"type":["string","null"]},"status":{"type":"string","enum":["active","upcoming","expired"]},"created_at":{"type":["string","null"],"format":"date-time"},"expiry_time":{"type":["string","null"],"format":"date-time"},"is_subscription":{"type":"string"},"subscription_status":{"type":"string"},"subscription_ends_at":{"type":"string"},"trial_ends_at":{"type":"string"},"payment_line":{"type":"string"},"warning_line":{"type":["string","null"]},"actions":{"type":"array","prefixItems":[{"type":"string","const":"renew"}],"minItems":1,"maxItems":1,"additionalItems":false},"limits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"used":{"description":"used in email, not FE","anyOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"usedDisplay":{"type":"string"},"included":{"description":"used in email, not FE","anyOf":[{"type":"integer"},{"type":"number"}]},"includedDisplay":{"type":"string"},"percent":{"type":["object","null"],"description":"used in email, not FE"},"primary":{"type":"boolean"}},"required":["id","label","used","usedDisplay","included","includedDisplay","percent","primary"]}},"features":{"type":"array","items":{"type":"object","properties":{"id":{},"label":{"type":"string"},"tooltip":{"type":["string","null"]}},"required":["id","label","tooltip"]}},"active_addons":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]}},"required":["plan","name","fullname","product","level","interval","price","product_name","order_no","status","created_at","expiry_time","is_subscription","subscription_status","subscription_ends_at","trial_ends_at","payment_line","warning_line","actions","limits","features","active_addons"]}}},"required":["data"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/workspace/subscription/{product}":{"get":{"operationId":"workspaceSubscription.subscription","tags":["Workspace"],"parameters":[{"name":"product","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The workspace subscription for the given product. A product without a subscription still answers `200`, with an empty JSON array (`[]`) rather than an empty body.","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"plan":{"type":"string"},"name":{"type":"string"},"fullname":{"type":"string"},"product":{"type":"string"},"level":{"type":"string"},"interval":{"type":"string"},"price":{"type":["number","null"]},"product_name":{"type":"string"},"order_no":{"type":["string","null"]},"status":{"type":"string","enum":["active","upcoming","expired"]},"created_at":{"type":["string","null"],"format":"date-time"},"expiry_time":{"type":["string","null"],"format":"date-time"},"is_subscription":{"type":"string"},"subscription_status":{"type":"string"},"subscription_ends_at":{"type":"string"},"trial_ends_at":{"type":"string"},"payment_line":{"type":"string"},"warning_line":{"type":["string","null"]},"actions":{"type":"array","prefixItems":[{"type":"string","const":"renew"}],"minItems":1,"maxItems":1,"additionalItems":false},"limits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"used":{"description":"used in email, not FE","anyOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"usedDisplay":{"type":"string"},"included":{"description":"used in email, not FE","anyOf":[{"type":"integer"},{"type":"number"}]},"includedDisplay":{"type":"string"},"percent":{"type":["object","null"],"description":"used in email, not FE"},"primary":{"type":"boolean"}},"required":["id","label","used","usedDisplay","included","includedDisplay","percent","primary"]}},"features":{"type":"array","items":{"type":"object","properties":{"id":{},"label":{"type":"string"},"tooltip":{"type":["string","null"]}},"required":["id","label","tooltip"]}},"active_addons":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]}},"required":["plan","name","fullname","product","level","interval","price","product_name","order_no","status","created_at","expiry_time","is_subscription","subscription_status","subscription_ends_at","trial_ends_at","payment_line","warning_line","actions","limits","features","active_addons"]},{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":0,"additionalItems":false}]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/workspace/update/{metaKey}":{"post":{"operationId":"workspace.update","tags":["Workspace"],"parameters":[{"name":"metaKey","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","maxLength":256}},"required":["value"]}}}},"responses":{"200":{"description":"The updated workspace.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"string","enum":["viewer"]}]},"headurl":{"type":"string"},"personal":{"type":"boolean"},"country":{"type":["string","null"]},"pm_type":{"type":["string","null"]},"pm_ending":{"type":["string","null"]},"level":{"type":"integer"},"email":{"type":["string","null"]},"billing_extra":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"meta":{"type":"array","items":{}},"summary":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"used":{"type":"integer"}},"required":["category","used"]}}},"required":["id","name","role","headurl","personal","country","pm_type","pm_ending","level","email","billing_extra","created_at","updated_at","meta","summary"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"400":{"$ref":"#/components/responses/AppException"},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}},"484":{"$ref":"#/components/responses/RoleException"}},"security":[{"http":[]}]}},"/workspace/{id}":{"get":{"operationId":"workspace.show","tags":["Workspace"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The requested workspace.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"anyOf":[{"type":"string"},{"type":"string","enum":["viewer"]}]},"headurl":{"type":"string"},"personal":{"type":"boolean"},"country":{"type":["string","null"]},"pm_type":{"type":["string","null"]},"pm_ending":{"type":["string","null"]},"level":{"type":"integer"},"email":{"type":["string","null"]},"billing_extra":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"meta":{"type":"array","items":{}},"summary":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"used":{"type":"integer"}},"required":["category","used"]}}},"required":["id","name","role","headurl","personal","country","pm_type","pm_ending","level","email","billing_extra","created_at","updated_at","meta","summary"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/test":{"get":{"operationId":"account.test","tags":["Account & Reference"],"responses":{"200":{"description":"The token is valid and identifies the authenticated account.","content":{"application/json":{"schema":{"type":"object","examples":[{"email":"jane@example.com","message":"This API Token is valid and active"}],"properties":{"email":{"type":"string"},"message":{"type":"string","const":"This API Token is valid and active"}},"required":["email","message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/account":{"get":{"operationId":"account.index","tags":["Account & Reference"],"responses":{"200":{"description":"The authenticated account.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"email_verified":{"type":"boolean"},"name":{"type":"string"},"headurl":{"type":"string"},"current_workspace":{"type":"string"},"login_workspace":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"array","items":{}}]},"phone":{"type":["string","null"]},"phone_verified":{"type":"boolean"},"im":{"type":["string","null"]},"last_login_ip":{"type":["string","null"]},"two_factor_enabled":{"type":"boolean"},"password_last_changed":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"array","items":{}}]},"language":{"type":"string"},"timezone":{"type":["string","null"]},"country":{"type":["string","null"]},"connected":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"openid":{"anyOf":[{"type":"string"},{"type":"null"},{"type":"array","items":{}}]},"manage":{"type":"null"}},"required":["provider","openid","manage"]}},"meta":{"type":"array","items":{}},"created_at":{"type":["string","null"],"format":"date-time"}},"required":["id","email","email_verified","name","headurl","current_workspace","login_workspace","phone","phone_verified","im","last_login_ip","two_factor_enabled","password_last_changed","language","timezone","country","connected","meta","created_at"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/shared/plugins":{"get":{"operationId":"record.plugins","tags":["Account & Reference"],"responses":{"200":{"description":"Plugins that can be enabled on a record. `as_paid_feature` names the plan feature a paid plugin requires, and is `null` when the plugin is free.","content":{"application/json":{"schema":{"type":"array","examples":[[{"id":"nowechat","label":"Block WeChat","description":"Block WeChat in-app browsers.","as_paid_feature":null},{"id":"nobot","label":"Block bots","description":"Block known crawlers and bots.","as_paid_feature":null},{"id":"protection","label":"Protection","description":"Protect the destination behind a check.","as_paid_feature":null}]],"items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"as_paid_feature":{"type":["string","null"]}},"required":["id","label","description","as_paid_feature"]}}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}},"/shared/types":{"get":{"operationId":"record.types","tags":["Account & Reference"],"responses":{"200":{"description":"Record types (`data`) and multi-destination routing strategies (`distributes`). `as_paid_feature` names the plan feature a paid option requires.","content":{"application/json":{"schema":{"type":"object","examples":[{"data":[{"id":"301","label":"301","short":"301","description":"Permanent redirect.","as_paid_feature":null},{"id":"txt","label":"TXT","short":"TXT","description":"Serve plain text.","as_paid_feature":"record.txt"}],"distributes":[{"id":"random","label":"Random","description":"Pick a destination at random.","as_paid_feature":null},{"id":"fastest","label":"Fastest","description":"Pick the fastest destination.","as_paid_feature":"record.fastest"}]}],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"short":{"type":"string"},"description":{"type":["string","null"]},"as_paid_feature":{"type":["string","null"]}},"required":["id","label","short","description","as_paid_feature"]}},"distributes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"as_paid_feature":{"type":["string","null"]}},"required":["id","label","description","as_paid_feature"]}}},"required":["data","distributes"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"429":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","example":"Too Many Attempts."}},"required":["message"]}}},"headers":{"X-RateLimit-Limit":{"description":"Requests allowed within the current window.","schema":{"type":"integer"},"example":500},"X-RateLimit-Remaining":{"description":"Requests still available within the current window.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":60},"X-RateLimit-Reset":{"description":"Unix timestamp at which the current window resets.","schema":{"type":"integer"}}}}},"security":[{"http":[]}]}}},"components":{"securitySchemes":{"http":{"type":"http","scheme":"bearer","bearerFormat":"sanctum"}},"schemas":{"CreateLinkRequest":{"type":"object","properties":{"title":{"type":"string","maxLength":250},"type":{"type":"string"},"description":{"type":"string","maxLength":300},"forward_path":{"type":["boolean","null"]},"forward_query":{"type":["boolean","null"]},"utm":{"type":"array","items":{"type":"string"}},"destination":{"type":["string","null"]},"destinations":{"type":["array","null"],"items":{"type":"string"}},"plugins":{"type":["array","null"],"items":{"type":"string"}},"is_notify":{"type":"boolean"},"is_switch_unbroken_destination":{"type":"boolean"},"expires":{"type":"string"},"host":{"type":"string","maxLength":100},"alias":{"type":"string","maxLength":30},"destination_routing":{"type":"string"},"status":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}}},"required":["host"],"title":"CreateLinkRequest"},"DestinationRouting":{"type":"string","enum":["random","order","first","fastest"],"title":"DestinationRouting"},"RedirectRequest":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string","maxLength":250},"type":{"type":"string"},"description":{"type":"string","maxLength":300},"forward_path":{"type":["boolean","null"]},"forward_query":{"type":["boolean","null"]},"utm":{"type":"array","items":{"type":"string"}},"destination":{"type":["string","null"]},"destinations":{"type":["array","null"],"items":{"type":"string"}},"plugins":{"type":["array","null"],"items":{"type":"string"}},"is_notify":{"type":"boolean"},"is_switch_unbroken_destination":{"type":"boolean"},"expires":{"type":"string"}},"required":["url"],"title":"RedirectRequest"},"StoreHostRequest":{"type":"object","properties":{"host":{"type":"string","description":"The hostname to connect, e.g. `go.example.com`. Wildcards are not accepted here."},"https_requested":{"type":"boolean","description":"Whether the platform should issue and renew an SSL certificate for this hostname\nand accept HTTPS traffic on it. Defaults to `true` for a hostname that is being\nconnected for the first time, and leaves an already connected one untouched."},"short_links_enabled":{"type":"boolean","description":"Whether this hostname may be used to create new short links. QR codes are generated from short links, so this also controls QR code creation on this hostname. Existing links and QR codes continue to resolve when disabled."}},"required":["host"],"title":"StoreHostRequest"},"Tag":{"type":"object","properties":{"id":{"type":"integer"},"org_id":{"type":["integer","null"]},"slug":{"type":"string"},"name":{"type":"string"},"suggest":{"type":"boolean"},"count":{"type":"integer"},"tag_group_id":{"type":["integer","null"]},"description":{"type":["string","null"]}},"required":["id","org_id","slug","name","suggest","count","tag_group_id","description"],"title":"Tag"},"UpdateHostRequest":{"type":"object","properties":{"https_requested":{"type":"boolean","description":"Whether the platform should issue and renew an SSL certificate for this hostname\nand accept HTTPS traffic on it."},"short_links_enabled":{"type":"boolean","description":"Whether this hostname may be used to create new short links. QR codes are generated from short links, so this also controls QR code creation on this hostname. Existing links and QR codes continue to resolve when disabled."}},"title":"UpdateHostRequest"},"UpdateLinkRequest":{"type":"object","properties":{"title":{"type":"string","maxLength":250},"type":{"type":"string"},"description":{"type":"string","maxLength":300},"forward_path":{"type":["boolean","null"]},"forward_query":{"type":["boolean","null"]},"utm":{"type":"array","items":{"type":"string"}},"destination":{"type":["string","null"]},"destinations":{"type":["array","null"],"items":{"type":"string"}},"plugins":{"type":["array","null"],"items":{"type":"string"}},"is_notify":{"type":"boolean"},"is_switch_unbroken_destination":{"type":"boolean"},"expires":{"type":"string"},"alias":{"type":"string"},"host":{"type":"string"},"url":{"type":"string"},"path":{"type":"string"},"file":{"type":"string"},"tld":{"type":"string"},"destination_routing":{"type":"string"},"status":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}}},"title":"UpdateLinkRequest"}},"responses":{"AuthenticationException":{"description":"Unauthenticated","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview."}},"required":["message"]}}}},"RoleException":{"description":"The workspace role of the authenticated user is too low for this action.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview."},"desiredRole":{"type":"string","description":"The role the action requires."}},"required":["message","desiredRole"]}}}},"AppException":{"description":"The request could not be completed.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview."}},"required":["message"]}}}},"ValidationException":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Errors overview."},"errors":{"type":"object","description":"A detailed description of each field that failed validation.","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["message","errors"]}}}},"OverLimitException":{"description":"The action would exceed a plan limit of the current workspace.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview."},"cat":{"type":"string","description":"The product the limit belongs to."},"unit":{"type":"string","description":"The limited unit, such as `records` or `visits`."}},"required":["message","cat","unit"]}}}}}}}